@sentropic/focus 0.3.0 → 0.5.0-rc.10

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 (97) hide show
  1. package/README.md +9 -0
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/editing/anchors.d.ts +14 -0
  4. package/dist/editing/anchors.d.ts.map +1 -0
  5. package/dist/editing/anchors.js +113 -0
  6. package/dist/editing/anchors.js.map +1 -0
  7. package/dist/editing/codec.d.ts +24 -0
  8. package/dist/editing/codec.d.ts.map +1 -0
  9. package/dist/editing/codec.js +143 -0
  10. package/dist/editing/codec.js.map +1 -0
  11. package/dist/editing/contract.d.ts +129 -0
  12. package/dist/editing/contract.d.ts.map +1 -0
  13. package/dist/editing/contract.js +76 -0
  14. package/dist/editing/contract.js.map +1 -0
  15. package/dist/editing/diff.d.ts +12 -0
  16. package/dist/editing/diff.d.ts.map +1 -0
  17. package/dist/editing/diff.js +125 -0
  18. package/dist/editing/diff.js.map +1 -0
  19. package/dist/editing/digest.d.ts +6 -0
  20. package/dist/editing/digest.d.ts.map +1 -0
  21. package/dist/editing/digest.js +56 -0
  22. package/dist/editing/digest.js.map +1 -0
  23. package/dist/editing/index.d.ts +7 -0
  24. package/dist/editing/index.d.ts.map +1 -0
  25. package/dist/editing/index.js +7 -0
  26. package/dist/editing/index.js.map +1 -0
  27. package/dist/editing/reconcile.d.ts +66 -0
  28. package/dist/editing/reconcile.d.ts.map +1 -0
  29. package/dist/editing/reconcile.js +167 -0
  30. package/dist/editing/reconcile.js.map +1 -0
  31. package/dist/editing/structure.d.ts +24 -0
  32. package/dist/editing/structure.d.ts.map +1 -0
  33. package/dist/editing/structure.js +71 -0
  34. package/dist/editing/structure.js.map +1 -0
  35. package/dist/index.d.ts +4 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/model.d.ts +144 -2
  40. package/dist/model.d.ts.map +1 -1
  41. package/dist/model.js +1 -1
  42. package/dist/model.js.map +1 -1
  43. package/dist/registry/definitions.d.ts +159 -0
  44. package/dist/registry/definitions.d.ts.map +1 -0
  45. package/dist/registry/definitions.js +509 -0
  46. package/dist/registry/definitions.js.map +1 -0
  47. package/dist/render/evidence.d.ts +10 -0
  48. package/dist/render/evidence.d.ts.map +1 -0
  49. package/dist/render/evidence.js +37 -0
  50. package/dist/render/evidence.js.map +1 -0
  51. package/dist/render/html.d.ts.map +1 -1
  52. package/dist/render/html.js +14 -1
  53. package/dist/render/html.js.map +1 -1
  54. package/dist/render/md.d.ts.map +1 -1
  55. package/dist/render/md.js +15 -1
  56. package/dist/render/md.js.map +1 -1
  57. package/dist/render/presentation.d.ts +4 -0
  58. package/dist/render/presentation.d.ts.map +1 -0
  59. package/dist/render/presentation.js +25 -0
  60. package/dist/render/presentation.js.map +1 -0
  61. package/dist/render/terminal.d.ts.map +1 -1
  62. package/dist/render/terminal.js +15 -1
  63. package/dist/render/terminal.js.map +1 -1
  64. package/dist/track/index.d.ts.map +1 -1
  65. package/dist/track/index.js +24 -10
  66. package/dist/track/index.js.map +1 -1
  67. package/dist/validation/evidence-bytes.d.ts +5 -0
  68. package/dist/validation/evidence-bytes.d.ts.map +1 -0
  69. package/dist/validation/evidence-bytes.js +57 -0
  70. package/dist/validation/evidence-bytes.js.map +1 -0
  71. package/dist/validation/evidence-shape.d.ts +12 -0
  72. package/dist/validation/evidence-shape.d.ts.map +1 -0
  73. package/dist/validation/evidence-shape.js +54 -0
  74. package/dist/validation/evidence-shape.js.map +1 -0
  75. package/dist/validation/evidence-sources.d.ts +7 -0
  76. package/dist/validation/evidence-sources.d.ts.map +1 -0
  77. package/dist/validation/evidence-sources.js +56 -0
  78. package/dist/validation/evidence-sources.js.map +1 -0
  79. package/dist/validation/evidence.d.ts +5 -0
  80. package/dist/validation/evidence.d.ts.map +1 -0
  81. package/dist/validation/evidence.js +131 -0
  82. package/dist/validation/evidence.js.map +1 -0
  83. package/dist/validation/index.d.ts +59 -0
  84. package/dist/validation/index.d.ts.map +1 -0
  85. package/dist/validation/index.js +500 -0
  86. package/dist/validation/index.js.map +1 -0
  87. package/dist/validation/readability.d.ts +28 -0
  88. package/dist/validation/readability.d.ts.map +1 -0
  89. package/dist/validation/readability.js +265 -0
  90. package/dist/validation/readability.js.map +1 -0
  91. package/package.json +36 -8
  92. package/registry/entries.v1.json +140 -0
  93. package/schemas/decision-dossier-document.v1.schema.json +193 -0
  94. package/schemas/decision-dossier-document.v2.schema.json +925 -0
  95. package/schemas/focus-edit-return.v1.schema.json +950 -0
  96. package/schemas/focus-editing-manifest.v1.schema.json +167 -0
  97. package/skills/focus/SKILL.md +181 -0
@@ -7,6 +7,8 @@
7
7
  * dep, NO mdast core); the full document HTML is run through the host `sanitizeHtml` hook before
8
8
  * emission. The renderer core owns structure only; hosts own sanitization/styling.
9
9
  */
10
+ import { preparePresentation } from "./presentation.js";
11
+ import { evidenceIndex } from './evidence.js';
10
12
  /** Minimal HTML text escaping for attribute/text content the renderer itself emits. */
11
13
  const escapeHtml = (value) => value
12
14
  .replace(/&/g, "&")
@@ -18,6 +20,10 @@ const renderQuestion = (q) => {
18
20
  const parts = [
19
21
  `<p class="focus-q"><strong>Q:</strong> ${escapeHtml(q.question)} <em>(${escapeHtml(q.state)})</em></p>`,
20
22
  ];
23
+ if (q.context !== undefined)
24
+ parts.push(`<p class="focus-context">${escapeHtml(q.context)}</p>`);
25
+ if (q.readingTimeMinutes !== undefined)
26
+ parts.push(`<p class="focus-reading-time">Reading time: ${q.readingTimeMinutes} min</p>`);
21
27
  if (q.recommendedAnswer !== undefined) {
22
28
  parts.push(`<p class="focus-preco">préco: ${escapeHtml(q.recommendedAnswer)}</p>`);
23
29
  }
@@ -37,7 +43,7 @@ const renderOptionSet = (s) => {
37
43
  const body = o.body !== undefined
38
44
  ? `<div class="focus-option-body">${escapeHtml(o.body)}</div>`
39
45
  : "";
40
- return `<li class="focus-option" data-annotation="${escapeHtml(o.annotation)}"><strong>${escapeHtml(o.label)}</strong>${comment}${body}</li>`;
46
+ return `<li class="focus-option" data-annotation="${escapeHtml(o.annotation)}"><strong>${escapeHtml(o.label)}</strong><p class="focus-consequence">${escapeHtml(o.consequence ?? "")}</p>${comment}${body}</li>`;
41
47
  });
42
48
  return `<section class="focus-optionset">${head}<ul>${items.join("")}</ul></section>`;
43
49
  };
@@ -73,6 +79,11 @@ const renderAffordances = (affordances) => {
73
79
  };
74
80
  /** Render a decision-dossier document to a sanitized HTML string. */
75
81
  export const renderHtml = (doc, hooks) => {
82
+ doc = preparePresentation(doc);
83
+ const r = doc.readability;
84
+ const readability = `<section class="focus-readability"><h2>Owner request</h2><blockquote>${escapeHtml(r.ownerRequestQuote)}</blockquote>` +
85
+ `<h2>Stakes</h2><p>${escapeHtml(r.stakes)}</p><p>Reading budget: ${r.readingBudgetMinutes} min (${escapeHtml(r.stakesLevel)} stakes)</p>` +
86
+ (r.glossary?.length ? `<h2>Glossary</h2><dl>${r.glossary.map((entry) => `<dt>${escapeHtml(entry.term)}</dt><dd>${escapeHtml(entry.definition)}</dd>`).join("")}</dl>` : "") + "</section>";
76
87
  const header = `<header class="focus-header"><h1>${escapeHtml(doc.title)}</h1>` +
77
88
  `<p class="focus-meta">subject: ${escapeHtml(doc.subject)} · ref: <code>${escapeHtml(doc.ref)}</code> · cursor: <code>${escapeHtml(doc.cursor)}</code></p></header>`;
78
89
  const sections = doc.sections.map((node) => renderNode(node, hooks)).join("");
@@ -80,9 +91,11 @@ export const renderHtml = (doc, hooks) => {
80
91
  const affordances = renderAffordances(doc.interactions);
81
92
  const html = `<article class="focus-document" data-ref="${escapeHtml(doc.ref)}">` +
82
93
  header +
94
+ readability +
83
95
  sections +
84
96
  amendment +
85
97
  affordances +
98
+ (evidenceIndex(doc) ? `<section class="focus-evidence"><pre>${escapeHtml(evidenceIndex(doc))}</pre></section>` : '') +
86
99
  "</article>";
87
100
  return hooks.sanitizeHtml(html);
88
101
  };
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"md.d.ts","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAGV,uBAAuB,EAExB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqEhD,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,QACd,uBAAuB,UACrB,aAAa,KACnB,MAgBF,CAAC"}
1
+ {"version":3,"file":"md.d.ts","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAGV,uBAAuB,EAExB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAuEhD,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,GACnB,KAAK,uBAAuB,EAC5B,QAAO,aAAkB,KACxB,MAuBF,CAAC"}
package/dist/render/md.js CHANGED
@@ -6,8 +6,14 @@
6
6
  * (```mermaid / ```plantuml — no diagram adapter). Prose markdown is emitted verbatim
7
7
  * (or passed through an optional host `renderMarkdown` hook for normalization).
8
8
  */
9
+ import { preparePresentation } from "./presentation.js";
10
+ import { evidenceIndex } from './evidence.js';
9
11
  const renderQuestion = (q) => {
10
12
  const lines = [`**Q:** ${q.question} _(${q.state})_`];
13
+ if (q.context !== undefined)
14
+ lines.push(q.context);
15
+ if (q.readingTimeMinutes !== undefined)
16
+ lines.push(`Reading time: ${q.readingTimeMinutes} min`);
11
17
  if (q.recommendedAnswer !== undefined) {
12
18
  lines.push(`- préco: ${q.recommendedAnswer}`);
13
19
  }
@@ -22,7 +28,7 @@ const renderOptionSet = (s) => {
22
28
  const mark = o.annotation === "none" ? "[ ]" : `[${o.annotation}]`;
23
29
  const comment = o.annotationComment !== undefined ? ` — ${o.annotationComment}` : "";
24
30
  const body = o.body !== undefined ? `\n ${o.body}` : "";
25
- return `- ${mark} **${o.label}**${comment}${body}`;
31
+ return `- ${mark} **${o.label}** — ${o.consequence ?? ""}${comment}${body}`;
26
32
  });
27
33
  return [head, ...opts].join("\n");
28
34
  };
@@ -59,14 +65,22 @@ const renderAffordances = (affordances) => {
59
65
  };
60
66
  /** Render a decision-dossier document to a Markdown string. */
61
67
  export const renderMd = (doc, hooks = {}) => {
68
+ doc = preparePresentation(doc);
69
+ const r = doc.readability;
62
70
  const blocks = [
63
71
  `# ${doc.title}`,
64
72
  `> subject: ${doc.subject} · ref: \`${doc.ref}\` · cursor: \`${doc.cursor}\``,
65
73
  ];
74
+ blocks.push(`### Owner request\n\n${r.ownerRequestQuote.split("\n").map((line) => `> ${line}`).join("\n")}`);
75
+ blocks.push(`### Stakes\n\n${r.stakes}\n\nReading budget: ${r.readingBudgetMinutes} min (${r.stakesLevel} stakes)`);
76
+ if (r.glossary?.length)
77
+ blocks.push("### Glossary\n\n" + r.glossary.map((entry) => `- **${entry.term}**: ${entry.definition}`).join("\n"));
66
78
  for (const node of doc.sections) {
67
79
  blocks.push(renderNode(node, hooks));
68
80
  }
69
81
  blocks.push(renderAmendmentTrace(doc.amendmentTrace));
82
+ if (evidenceIndex(doc))
83
+ blocks.push(evidenceIndex(doc));
70
84
  const affordances = renderAffordances(doc.interactions);
71
85
  if (affordances !== "")
72
86
  blocks.push(affordances);
@@ -1 +1 @@
1
- {"version":3,"file":"md.js","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"md.js","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAU9C,MAAM,cAAc,GAAG,CACrB,CAA2C,EACnC,EAAE;IACV,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,kBAAkB,MAAM,CAAC,CAAC;IAChG,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,CAA4C,EACpC,EAAE;IACV,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAChF,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;QACnE,MAAM,OAAO,GACX,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,WAAW,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,KAA+B,EAAU,EAAE;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,iCAAiC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CACrB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,CACrE,CAAC;IACF,OAAO,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,CAA0C,EAClC,EAAE,CACV,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEnE,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,KAAoB,EAAU,EAAE;IACnE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,cAAc,KAAK,SAAS;gBACvC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,gBAAgB,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/D,KAAK,gBAAgB;YACnB,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,WAAkC,EAAU,EAAE;IACvE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,SAAS,iBAAiB,CAC1E,CAAC;IACF,OAAO,CAAC,sCAAsC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,GAA4B,EAC5B,QAAuB,EAAE,EACjB,EAAE;IACV,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAY,CAAC;IAC3B,MAAM,MAAM,GAAa;QACvB,KAAK,GAAG,CAAC,KAAK,EAAE;QAChB,cAAc,GAAG,CAAC,OAAO,eAAe,GAAG,CAAC,GAAG,oBAAoB,GAAG,CAAC,MAAM,IAAI;KAClF,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,iBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9G,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,uBAAuB,CAAC,CAAC,oBAAoB,SAAS,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC;IACpH,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3I,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IACtD,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,WAAW,KAAK,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACpC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DecisionDossierDocument } from "../model.js";
2
+ /** Validate before hooks, then keep each question and its choices together. */
3
+ export declare const preparePresentation: (value: DecisionDossierDocument) => DecisionDossierDocument;
4
+ //# sourceMappingURL=presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/render/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAa,MAAM,aAAa,CAAC;AAGtE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,GAAI,OAAO,uBAAuB,KAAG,uBAmBpE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { assertDecisionDossierForPresentation } from "../validation/index.js";
2
+ /** Validate before hooks, then keep each question and its choices together. */
3
+ export const preparePresentation = (value) => {
4
+ const doc = assertDecisionDossierForPresentation(value);
5
+ const optionSets = doc.sections.filter((section) => section.kind === "optionSet");
6
+ const sections = doc.sections.flatMap((section) => {
7
+ if (section.kind === "optionSet")
8
+ return [];
9
+ if (section.kind !== "question")
10
+ return [section];
11
+ const linked = optionSets.filter((set) => set.questionId === section.id);
12
+ const recommended = linked.flatMap((set) => set.options)
13
+ .find((option) => option.id === section.recommendedOptionId);
14
+ const answer = section.recommendedAnswer.trim();
15
+ const label = recommended.label.trim();
16
+ const alreadyNamed = answer.toLowerCase().startsWith(label.toLowerCase())
17
+ && /^(?:$|[\s,:;.!?—–-])/.test(answer.slice(label.length));
18
+ return [
19
+ { ...section, recommendedAnswer: alreadyNamed ? answer : `${label} — ${answer}` },
20
+ ...linked,
21
+ ];
22
+ });
23
+ return { ...doc, sections };
24
+ };
25
+ //# sourceMappingURL=presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/render/presentation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAE9E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA8B,EAA2B,EAAE;IAC7F,MAAM,GAAG,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;aACrD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,mBAAmB,CAAE,CAAC;QAChE,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAkB,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;eACpE,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,OAAO;YACL,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,MAAM,EAAE,EAAE;YACjF,GAAG,MAAM;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/render/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAGV,uBAAuB,EAExB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA0ED,+DAA+D;AAC/D,eAAO,MAAM,cAAc,QACpB,uBAAuB,SACtB,qBAAqB,KAC1B,MAoBF,CAAC"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/render/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAGV,uBAAuB,EAExB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA4ED,+DAA+D;AAC/D,eAAO,MAAM,cAAc,GACzB,KAAK,uBAAuB,EAC5B,OAAM,qBAA0B,KAC/B,MA2BF,CAAC"}
@@ -8,9 +8,15 @@
8
8
  * Align the CLI/terminal render with ARCH-21 resource_terminal / RF11 renderer (no duplication):
9
9
  * this stays a pure string builder with no ANSI/color side effects.
10
10
  */
11
+ import { preparePresentation } from "./presentation.js";
12
+ import { evidenceIndex } from './evidence.js';
11
13
  const rule = (width) => "=".repeat(Math.max(8, width));
12
14
  const renderQuestion = (q) => {
13
15
  const lines = [`Q: ${q.question} [${q.state}]`];
16
+ if (q.context !== undefined)
17
+ lines.push(` Context: ${q.context}`);
18
+ if (q.readingTimeMinutes !== undefined)
19
+ lines.push(` Reading time: ${q.readingTimeMinutes} min`);
14
20
  if (q.recommendedAnswer !== undefined) {
15
21
  lines.push(` préco: ${q.recommendedAnswer}`);
16
22
  }
@@ -25,7 +31,7 @@ const renderOptionSet = (s) => {
25
31
  const mark = o.annotation === "none" ? "( )" : `(${o.annotation})`;
26
32
  const comment = o.annotationComment !== undefined ? ` — ${o.annotationComment}` : "";
27
33
  const body = o.body !== undefined ? `\n ${o.body}` : "";
28
- return ` ${mark} ${o.label}${comment}${body}`;
34
+ return ` ${mark} ${o.label} — ${o.consequence ?? ""}${comment}${body}`;
29
35
  });
30
36
  return [head, ...opts].join("\n");
31
37
  };
@@ -63,6 +69,8 @@ const renderAffordances = (affordances) => {
63
69
  };
64
70
  /** Render a decision-dossier document to a terminal string. */
65
71
  export const renderTerminal = (doc, opts = {}) => {
72
+ doc = preparePresentation(doc);
73
+ const r = doc.readability;
66
74
  const width = opts.width ?? 72;
67
75
  const blocks = [
68
76
  rule(width),
@@ -71,10 +79,16 @@ export const renderTerminal = (doc, opts = {}) => {
71
79
  `ref: ${doc.ref} cursor: ${doc.cursor}`,
72
80
  rule(width),
73
81
  ];
82
+ blocks.push(`Owner request: “${r.ownerRequestQuote}”`);
83
+ blocks.push(`Stakes: ${r.stakes}\nReading budget: ${r.readingBudgetMinutes} min (${r.stakesLevel} stakes)`);
84
+ if (r.glossary?.length)
85
+ blocks.push("Glossary:\n" + r.glossary.map((entry) => ` ${entry.term}: ${entry.definition}`).join("\n"));
74
86
  for (const node of doc.sections) {
75
87
  blocks.push(renderNode(node));
76
88
  }
77
89
  blocks.push(renderAmendmentTrace(doc.amendmentTrace));
90
+ if (evidenceIndex(doc))
91
+ blocks.push(evidenceIndex(doc));
78
92
  const affordances = renderAffordances(doc.interactions);
79
93
  if (affordances !== "")
80
94
  blocks.push(affordances);
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/render/terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/render/terminal.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/track/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,aAAa,IAAI,kBAAkB,EAEnC,mBAAmB,EAEnB,MAAM,EAIP,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAGV,uBAAuB,EAGxB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wFAAwF;AACxF,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM;gBADrB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM;CAQjC;AAED,qFAAqF;AACrF,qBAAa,qBAAsB,SAAQ,KAAK;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAIxC;AA4ID;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,SAC9B,mBAAmB,kBACT,SAAS,kBAAkB,EAAE,QACvC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAClF,uBA0BF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,eAClB,MAAM,SACX,eAAe,UACd,MAAM,KACb,uBA2BF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/track/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,aAAa,IAAI,kBAAkB,EAEnC,mBAAmB,EAEnB,MAAM,EAIP,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAGV,uBAAuB,EAGxB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wFAAwF;AACxF,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM;gBADrB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM;CAQjC;AAED,qFAAqF;AACrF,qBAAa,qBAAsB,SAAQ,KAAK;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAIxC;AAyJD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,mBAAmB,EACzB,gBAAgB,SAAS,kBAAkB,EAAE,EAC7C,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAClF,uBA2BF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,EAClB,OAAO,eAAe,EACtB,QAAQ,MAAM,KACb,uBA2BF,CAAC"}
@@ -66,7 +66,7 @@ const optionBody = (option) => {
66
66
  if (option.cons !== undefined && option.cons.length > 0) {
67
67
  parts.push(`cons: ${option.cons.join("; ")}`);
68
68
  }
69
- return parts.length > 0 ? parts.join("\n") : undefined;
69
+ return parts.length > 0 ? parts.join("; ") : undefined;
70
70
  };
71
71
  /**
72
72
  * Extract the comprehension evidence carried VERBATIM on the dossier's
@@ -114,21 +114,30 @@ const buildSections = (view) => {
114
114
  id: `${view.id}:context`,
115
115
  targetRef: `${view.id}:context`,
116
116
  markdown: dossier.context,
117
+ ...(dossier.questionId !== undefined ? { questionId: dossier.questionId } : {}),
117
118
  });
118
119
  for (const qa of dossier.qa) {
119
- sections.push(mapQa(view.id, qa));
120
+ sections.push(mapQa(qa));
120
121
  }
121
- if (dossier.options.length > 0) {
122
+ const groups = new Map();
123
+ for (const option of dossier.options) {
124
+ const questionId = option.questionId ?? dossier.questionId;
125
+ groups.set(questionId, [...(groups.get(questionId) ?? []), option]);
126
+ }
127
+ for (const [questionId, options] of groups) {
128
+ const id = `${view.id}:options${questionId === undefined ? "" : `:${questionId}`}`;
122
129
  sections.push({
123
130
  kind: "optionSet",
124
- id: `${view.id}:options`,
125
- targetRef: `${view.id}:options`,
131
+ id,
132
+ targetRef: id,
126
133
  title: "Options",
127
- options: dossier.options.map((opt) => ({
134
+ ...(questionId !== undefined ? { questionId } : {}),
135
+ options: options.map((opt) => ({
128
136
  kind: "option",
129
137
  id: opt.id,
130
138
  targetRef: opt.id,
131
139
  label: opt.title,
140
+ consequence: opt.summary,
132
141
  ...(optionBody(opt) !== undefined ? { body: optionBody(opt) } : {}),
133
142
  // The annotation reflects the dossier's selection/recommendation, NOT a live action:
134
143
  // the selected option is 'accept'; the others are 'none' in this read-only snapshot.
@@ -145,17 +154,21 @@ const buildSections = (view) => {
145
154
  targetRef: `${view.id}:outcome`,
146
155
  modality: "decision",
147
156
  statement: outcomeStatement(view.outcome),
157
+ ...(dossier.questionId !== undefined ? { questionId: dossier.questionId } : {}),
148
158
  });
149
159
  return sections;
150
160
  };
151
- const mapQa = (decisionId, qa) => ({
161
+ const mapQa = (qa) => ({
152
162
  kind: "question",
153
163
  id: qa.id,
154
164
  targetRef: qa.id,
155
165
  question: qa.question,
166
+ ...(qa.context !== undefined ? { context: qa.context } : {}),
167
+ ...(qa.readingTimeMinutes !== undefined ? { readingTimeMinutes: qa.readingTimeMinutes } : {}),
168
+ ...(qa.recommendedOptionId !== undefined ? { recommendedOptionId: qa.recommendedOptionId } : {}),
169
+ ...(qa.recommendedAnswer !== undefined ? { recommendedAnswer: qa.recommendedAnswer } : {}),
156
170
  ...(qa.answer !== undefined ? { answer: qa.answer } : {}),
157
- // A QA entry carries no separate préco field in the track contract; an answered entry is
158
- // 'answered', an open one is 'open'. (The validated state is only reachable via a live write.)
171
+ // Snapshot state follows the recorded answer; reading metadata is carried verbatim.
159
172
  state: qa.answer !== undefined ? "answered" : "open",
160
173
  });
161
174
  /**
@@ -168,8 +181,9 @@ export const toDecisionDossierDocument = (view, amendmentTrace, meta) => {
168
181
  const firstComprehension = comprehension[0];
169
182
  return {
170
183
  ref: view.id,
171
- subject: view.workspace,
184
+ subject: view.dossier.subject ?? view.workspace,
172
185
  title: view.title,
186
+ ...(view.dossier.readability !== undefined ? { readability: view.dossier.readability } : {}),
173
187
  // The dossier hash is the integrity tag the attester signed over; surface the first one as the
174
188
  // snapshot hash when present, else fall back to the read cursor.
175
189
  hash: firstComprehension?.dossierHash ?? meta.cursor,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/track/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/track/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function sha256(bytes: Uint8Array): string;
2
+ export declare function decodeEvidence(data: string): Uint8Array;
3
+ export declare const evidenceText: (bytes: Uint8Array) => string;
4
+ export declare const evidenceLines: (text: string) => string[];
5
+ //# sourceMappingURL=evidence-bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-bytes.d.ts","sourceRoot":"","sources":["../../src/validation/evidence-bytes.ts"],"names":[],"mappings":"AAUA,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAuBhD;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAOvD;AACD,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,MAAkF,CAAC;AACpI,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAAM,EAA8B,CAAC"}
@@ -0,0 +1,57 @@
1
+ /** Synchronous, portable SHA-256 over original bytes (FIPS 180-4). No I/O. */
2
+ const K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
3
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
4
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
5
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
6
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
7
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
8
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
9
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
10
+ const rr = (v, n) => (v >>> n) | (v << (32 - n));
11
+ export function sha256(bytes) {
12
+ const padded = new Uint8Array(Math.ceil((bytes.length + 9) / 64) * 64);
13
+ padded.set(bytes);
14
+ padded[bytes.length] = 128;
15
+ const view = new DataView(padded.buffer), bits = bytes.length * 8;
16
+ view.setUint32(padded.length - 8, Math.floor(bits / 0x100000000));
17
+ view.setUint32(padded.length - 4, bits >>> 0);
18
+ const h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];
19
+ const w = new Int32Array(64);
20
+ for (let offset = 0; offset < padded.length; offset += 64) {
21
+ for (let i = 0; i < 16; i++)
22
+ w[i] = view.getInt32(offset + i * 4);
23
+ for (let i = 16; i < 64; i++) {
24
+ const x = w[i - 15], y = w[i - 2];
25
+ w[i] = w[i - 16] + (rr(x, 7) ^ rr(x, 18) ^ (x >>> 3)) + w[i - 7] + (rr(y, 17) ^ rr(y, 19) ^ (y >>> 10));
26
+ }
27
+ let [a, b, c, d, e, f, g, j] = h;
28
+ for (let i = 0; i < 64; i++) {
29
+ const t = (j + (rr(e, 6) ^ rr(e, 11) ^ rr(e, 25)) + ((e & f) ^ (~e & g)) + K[i] + w[i]) | 0;
30
+ const u = ((rr(a, 2) ^ rr(a, 13) ^ rr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;
31
+ j = g;
32
+ g = f;
33
+ f = e;
34
+ e = (d + t) | 0;
35
+ d = c;
36
+ c = b;
37
+ b = a;
38
+ a = (t + u) | 0;
39
+ }
40
+ [a, b, c, d, e, f, g, j].forEach((v, i) => { h[i] = (h[i] + v) | 0; });
41
+ }
42
+ return h.map(v => (v >>> 0).toString(16).padStart(8, '0')).join('');
43
+ }
44
+ export function decodeEvidence(data) {
45
+ if (data.length % 4 || /[^A-Za-z0-9+/]/.test(data.replace(/={1,2}$/, '')))
46
+ throw new Error('Invalid base64');
47
+ const binary = atob(data);
48
+ if (btoa(binary) !== data)
49
+ throw new Error('Non-canonical base64');
50
+ const bytes = new Uint8Array(binary.length);
51
+ for (let i = 0; i < bytes.length; i++)
52
+ bytes[i] = binary.charCodeAt(i);
53
+ return bytes;
54
+ }
55
+ export const evidenceText = (bytes) => new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
56
+ export const evidenceLines = (text) => text.split(/\r\n|\n|\r/);
57
+ //# sourceMappingURL=evidence-bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-bytes.js","sourceRoot":"","sources":["../../src/validation/evidence-bytes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ValidationIssue } from './index.js';
2
+ export declare class EvidenceError extends Error {
3
+ readonly issue: ValidationIssue;
4
+ constructor(issue: ValidationIssue);
5
+ }
6
+ export declare const fail: (path: string, code: string, message: string) => never;
7
+ export declare function record(value: unknown, path: string, required: readonly string[], optional?: readonly string[]): Record<string, unknown>;
8
+ export declare function text(value: unknown, path: string, allowEmpty?: boolean): string;
9
+ export declare function array(value: unknown, path: string): unknown[];
10
+ export declare const strings: (value: unknown, path: string) => string[];
11
+ export declare function imageDimensions(bytes: Uint8Array, media: string): [number, number] | undefined;
12
+ //# sourceMappingURL=evidence-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-shape.d.ts","sourceRoot":"","sources":["../../src/validation/evidence-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,qBAAa,aAAc,SAAQ,KAAK;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe;gBAAtB,KAAK,EAAE,eAAe;CAC5C;AACD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,KAElE,CAAC;AACF,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM3I;AACD,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAG7E;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAG7D;AACD,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,EAAE,MAAM,MAAM,KAAG,MAAM,EAAgE,CAAC;AAC9H,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAgB9F"}
@@ -0,0 +1,54 @@
1
+ export class EvidenceError extends Error {
2
+ issue;
3
+ constructor(issue) {
4
+ super(issue.message);
5
+ this.issue = issue;
6
+ }
7
+ }
8
+ export const fail = (path, code, message) => {
9
+ throw new EvidenceError({ path, code, message });
10
+ };
11
+ export function record(value, path, required, optional = []) {
12
+ if (!value || typeof value !== 'object' || Array.isArray(value))
13
+ fail(path, 'invalid_evidence', 'Expected a closed object');
14
+ const obj = value;
15
+ for (const key of Object.keys(obj))
16
+ if (![...required, ...optional].includes(key))
17
+ fail(`${path}.${key}`, 'invalid_evidence', 'Unknown evidence field');
18
+ for (const key of required)
19
+ if (!Object.hasOwn(obj, key))
20
+ fail(`${path}.${key}`, 'invalid_evidence', 'Missing evidence field');
21
+ return obj;
22
+ }
23
+ export function text(value, path, allowEmpty = false) {
24
+ if (typeof value !== 'string' || (!allowEmpty && !value.trim()))
25
+ fail(path, 'invalid_evidence', 'Expected a non-empty string');
26
+ return value;
27
+ }
28
+ export function array(value, path) {
29
+ if (!Array.isArray(value))
30
+ fail(path, 'invalid_evidence', 'Expected an array');
31
+ return value;
32
+ }
33
+ export const strings = (value, path) => array(value, path).map((v, i) => text(v, `${path}[${i}]`));
34
+ export function imageDimensions(bytes, media) {
35
+ const u32 = (n) => new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(n);
36
+ if (media === 'image/png') {
37
+ if (bytes.length >= 33 && [137, 80, 78, 71, 13, 10, 26, 10].every((v, i) => bytes[i] === v)
38
+ && u32(8) === 13 && u32(12) === 0x49484452)
39
+ return [u32(16), u32(20)];
40
+ }
41
+ else if (bytes[0] === 255 && bytes[1] === 216) {
42
+ let i = 2;
43
+ while (i + 4 < bytes.length && bytes[i] === 255) {
44
+ const marker = bytes[i + 1], size = (bytes[i + 2] << 8) | bytes[i + 3];
45
+ if (size < 2 || i + 2 + size > bytes.length)
46
+ break;
47
+ if ([0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf].includes(marker) && size >= 8)
48
+ return [(bytes[i + 7] << 8) | bytes[i + 8], (bytes[i + 5] << 8) | bytes[i + 6]];
49
+ i += size + 2;
50
+ }
51
+ }
52
+ return undefined;
53
+ }
54
+ //# sourceMappingURL=evidence-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-shape.js","sourceRoot":"","sources":["../../src/validation/evidence-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { EvidenceSource } from '../model.js';
2
+ export declare const isTextSource: (media: string) => boolean;
3
+ export declare function checkSources(value: unknown, register: (id: string, path: string) => void): {
4
+ sources: EvidenceSource[];
5
+ lineCounts: Map<string, number>;
6
+ };
7
+ //# sourceMappingURL=evidence-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-sources.d.ts","sourceRoot":"","sources":["../../src/validation/evidence-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OAC8D,CAAC;AAC5G,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAiCzJ"}