@sentropic/focus 0.3.0 → 0.5.0-rc.1
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.
- package/README.md +9 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +12 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/editing/anchors.d.ts +14 -0
- package/dist/editing/anchors.d.ts.map +1 -0
- package/dist/editing/anchors.js +113 -0
- package/dist/editing/anchors.js.map +1 -0
- package/dist/editing/codec.d.ts +24 -0
- package/dist/editing/codec.d.ts.map +1 -0
- package/dist/editing/codec.js +143 -0
- package/dist/editing/codec.js.map +1 -0
- package/dist/editing/contract.d.ts +129 -0
- package/dist/editing/contract.d.ts.map +1 -0
- package/dist/editing/contract.js +76 -0
- package/dist/editing/contract.js.map +1 -0
- package/dist/editing/diff.d.ts +12 -0
- package/dist/editing/diff.d.ts.map +1 -0
- package/dist/editing/diff.js +125 -0
- package/dist/editing/diff.js.map +1 -0
- package/dist/editing/digest.d.ts +6 -0
- package/dist/editing/digest.d.ts.map +1 -0
- package/dist/editing/digest.js +56 -0
- package/dist/editing/digest.js.map +1 -0
- package/dist/editing/index.d.ts +7 -0
- package/dist/editing/index.d.ts.map +1 -0
- package/dist/editing/index.js +7 -0
- package/dist/editing/index.js.map +1 -0
- package/dist/editing/reconcile.d.ts +66 -0
- package/dist/editing/reconcile.d.ts.map +1 -0
- package/dist/editing/reconcile.js +167 -0
- package/dist/editing/reconcile.js.map +1 -0
- package/dist/editing/structure.d.ts +24 -0
- package/dist/editing/structure.d.ts.map +1 -0
- package/dist/editing/structure.js +71 -0
- package/dist/editing/structure.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +144 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +1 -1
- package/dist/model.js.map +1 -1
- package/dist/registry/definitions.d.ts +159 -0
- package/dist/registry/definitions.d.ts.map +1 -0
- package/dist/registry/definitions.js +509 -0
- package/dist/registry/definitions.js.map +1 -0
- package/dist/render/evidence.d.ts +10 -0
- package/dist/render/evidence.d.ts.map +1 -0
- package/dist/render/evidence.js +37 -0
- package/dist/render/evidence.js.map +1 -0
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +14 -1
- package/dist/render/html.js.map +1 -1
- package/dist/render/md.d.ts.map +1 -1
- package/dist/render/md.js +15 -1
- package/dist/render/md.js.map +1 -1
- package/dist/render/presentation.d.ts +4 -0
- package/dist/render/presentation.d.ts.map +1 -0
- package/dist/render/presentation.js +25 -0
- package/dist/render/presentation.js.map +1 -0
- package/dist/render/terminal.d.ts.map +1 -1
- package/dist/render/terminal.js +15 -1
- package/dist/render/terminal.js.map +1 -1
- package/dist/track/index.d.ts.map +1 -1
- package/dist/track/index.js +24 -10
- package/dist/track/index.js.map +1 -1
- package/dist/validation/evidence-bytes.d.ts +5 -0
- package/dist/validation/evidence-bytes.d.ts.map +1 -0
- package/dist/validation/evidence-bytes.js +57 -0
- package/dist/validation/evidence-bytes.js.map +1 -0
- package/dist/validation/evidence-shape.d.ts +12 -0
- package/dist/validation/evidence-shape.d.ts.map +1 -0
- package/dist/validation/evidence-shape.js +54 -0
- package/dist/validation/evidence-shape.js.map +1 -0
- package/dist/validation/evidence-sources.d.ts +7 -0
- package/dist/validation/evidence-sources.d.ts.map +1 -0
- package/dist/validation/evidence-sources.js +56 -0
- package/dist/validation/evidence-sources.js.map +1 -0
- package/dist/validation/evidence.d.ts +5 -0
- package/dist/validation/evidence.d.ts.map +1 -0
- package/dist/validation/evidence.js +131 -0
- package/dist/validation/evidence.js.map +1 -0
- package/dist/validation/index.d.ts +59 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +500 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/readability.d.ts +28 -0
- package/dist/validation/readability.d.ts.map +1 -0
- package/dist/validation/readability.js +265 -0
- package/dist/validation/readability.js.map +1 -0
- package/package.json +36 -8
- package/registry/entries.v1.json +140 -0
- package/schemas/decision-dossier-document.v1.schema.json +193 -0
- package/schemas/decision-dossier-document.v2.schema.json +925 -0
- package/schemas/focus-edit-return.v1.schema.json +950 -0
- package/schemas/focus-editing-manifest.v1.schema.json +167 -0
- package/skills/focus/SKILL.md +181 -0
package/dist/render/html.js
CHANGED
|
@@ -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
|
};
|
package/dist/render/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
|
package/dist/render/md.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md.d.ts","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
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}
|
|
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);
|
package/dist/render/md.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md.js","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"md.js","sourceRoot":"","sources":["../../src/render/md.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/render/terminal.js
CHANGED
|
@@ -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":"AAAA;;;;;;;;;GASG;
|
|
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;
|
|
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"}
|
package/dist/track/index.js
CHANGED
|
@@ -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("
|
|
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(
|
|
120
|
+
sections.push(mapQa(qa));
|
|
120
121
|
}
|
|
121
|
-
|
|
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
|
|
125
|
-
targetRef:
|
|
131
|
+
id,
|
|
132
|
+
targetRef: id,
|
|
126
133
|
title: "Options",
|
|
127
|
-
|
|
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 = (
|
|
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
|
-
//
|
|
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,
|
package/dist/track/index.js.map
CHANGED
|
@@ -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"}
|