@sentropic/focus 0.3.0 → 0.5.0-rc.3

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 (39) hide show
  1. package/README.md +9 -0
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/model.d.ts +73 -1
  7. package/dist/model.d.ts.map +1 -1
  8. package/dist/registry/definitions.d.ts +159 -0
  9. package/dist/registry/definitions.d.ts.map +1 -0
  10. package/dist/registry/definitions.js +501 -0
  11. package/dist/registry/definitions.js.map +1 -0
  12. package/dist/render/html.d.ts.map +1 -1
  13. package/dist/render/html.js +12 -1
  14. package/dist/render/html.js.map +1 -1
  15. package/dist/render/md.d.ts.map +1 -1
  16. package/dist/render/md.js +12 -1
  17. package/dist/render/md.js.map +1 -1
  18. package/dist/render/presentation.d.ts +4 -0
  19. package/dist/render/presentation.d.ts.map +1 -0
  20. package/dist/render/presentation.js +25 -0
  21. package/dist/render/presentation.js.map +1 -0
  22. package/dist/render/terminal.d.ts.map +1 -1
  23. package/dist/render/terminal.js +12 -1
  24. package/dist/render/terminal.js.map +1 -1
  25. package/dist/track/index.d.ts.map +1 -1
  26. package/dist/track/index.js +24 -10
  27. package/dist/track/index.js.map +1 -1
  28. package/dist/validation/index.d.ts +59 -0
  29. package/dist/validation/index.d.ts.map +1 -0
  30. package/dist/validation/index.js +490 -0
  31. package/dist/validation/index.js.map +1 -0
  32. package/dist/validation/readability.d.ts +28 -0
  33. package/dist/validation/readability.d.ts.map +1 -0
  34. package/dist/validation/readability.js +244 -0
  35. package/dist/validation/readability.js.map +1 -0
  36. package/package.json +25 -8
  37. package/registry/entries.v1.json +127 -0
  38. package/schemas/decision-dossier-document.v1.schema.json +193 -0
  39. package/skills/focus/SKILL.md +132 -0
package/dist/render/md.js CHANGED
@@ -6,8 +6,13 @@
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";
9
10
  const renderQuestion = (q) => {
10
11
  const lines = [`**Q:** ${q.question} _(${q.state})_`];
12
+ if (q.context !== undefined)
13
+ lines.push(q.context);
14
+ if (q.readingTimeMinutes !== undefined)
15
+ lines.push(`Reading time: ${q.readingTimeMinutes} min`);
11
16
  if (q.recommendedAnswer !== undefined) {
12
17
  lines.push(`- préco: ${q.recommendedAnswer}`);
13
18
  }
@@ -22,7 +27,7 @@ const renderOptionSet = (s) => {
22
27
  const mark = o.annotation === "none" ? "[ ]" : `[${o.annotation}]`;
23
28
  const comment = o.annotationComment !== undefined ? ` — ${o.annotationComment}` : "";
24
29
  const body = o.body !== undefined ? `\n ${o.body}` : "";
25
- return `- ${mark} **${o.label}**${comment}${body}`;
30
+ return `- ${mark} **${o.label}** — ${o.consequence ?? ""}${comment}${body}`;
26
31
  });
27
32
  return [head, ...opts].join("\n");
28
33
  };
@@ -59,10 +64,16 @@ const renderAffordances = (affordances) => {
59
64
  };
60
65
  /** Render a decision-dossier document to a Markdown string. */
61
66
  export const renderMd = (doc, hooks = {}) => {
67
+ doc = preparePresentation(doc);
68
+ const r = doc.readability;
62
69
  const blocks = [
63
70
  `# ${doc.title}`,
64
71
  `> subject: ${doc.subject} · ref: \`${doc.ref}\` · cursor: \`${doc.cursor}\``,
65
72
  ];
73
+ blocks.push(`### Owner request\n\n${r.ownerRequestQuote.split("\n").map((line) => `> ${line}`).join("\n")}`);
74
+ blocks.push(`### Stakes\n\n${r.stakes}\n\nReading budget: ${r.readingBudgetMinutes} min (${r.stakesLevel} stakes)`);
75
+ if (r.glossary?.length)
76
+ blocks.push("### Glossary\n\n" + r.glossary.map((entry) => `- **${entry.term}**: ${entry.definition}`).join("\n"));
66
77
  for (const node of doc.sections) {
67
78
  blocks.push(renderNode(node, hooks));
68
79
  }
@@ -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":"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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;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;AAIH,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,MA0BF,CAAC"}
@@ -8,9 +8,14 @@
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";
11
12
  const rule = (width) => "=".repeat(Math.max(8, width));
12
13
  const renderQuestion = (q) => {
13
14
  const lines = [`Q: ${q.question} [${q.state}]`];
15
+ if (q.context !== undefined)
16
+ lines.push(` Context: ${q.context}`);
17
+ if (q.readingTimeMinutes !== undefined)
18
+ lines.push(` Reading time: ${q.readingTimeMinutes} min`);
14
19
  if (q.recommendedAnswer !== undefined) {
15
20
  lines.push(` préco: ${q.recommendedAnswer}`);
16
21
  }
@@ -25,7 +30,7 @@ const renderOptionSet = (s) => {
25
30
  const mark = o.annotation === "none" ? "( )" : `(${o.annotation})`;
26
31
  const comment = o.annotationComment !== undefined ? ` — ${o.annotationComment}` : "";
27
32
  const body = o.body !== undefined ? `\n ${o.body}` : "";
28
- return ` ${mark} ${o.label}${comment}${body}`;
33
+ return ` ${mark} ${o.label} — ${o.consequence ?? ""}${comment}${body}`;
29
34
  });
30
35
  return [head, ...opts].join("\n");
31
36
  };
@@ -63,6 +68,8 @@ const renderAffordances = (affordances) => {
63
68
  };
64
69
  /** Render a decision-dossier document to a terminal string. */
65
70
  export const renderTerminal = (doc, opts = {}) => {
71
+ doc = preparePresentation(doc);
72
+ const r = doc.readability;
66
73
  const width = opts.width ?? 72;
67
74
  const blocks = [
68
75
  rule(width),
@@ -71,6 +78,10 @@ export const renderTerminal = (doc, opts = {}) => {
71
78
  `ref: ${doc.ref} cursor: ${doc.cursor}`,
72
79
  rule(width),
73
80
  ];
81
+ blocks.push(`Owner request: “${r.ownerRequestQuote}”`);
82
+ blocks.push(`Stakes: ${r.stakes}\nReading budget: ${r.readingBudgetMinutes} min (${r.stakesLevel} stakes)`);
83
+ if (r.glossary?.length)
84
+ blocks.push("Glossary:\n" + r.glossary.map((entry) => ` ${entry.term}: ${entry.definition}`).join("\n"));
74
85
  for (const node of doc.sections) {
75
86
  blocks.push(renderNode(node));
76
87
  }
@@ -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,59 @@
1
+ /**
2
+ * `@sentropic/focus/validate` — the typed runtime validator for the
3
+ * `DecisionDossierDocument` (contract §4.2, R4).
4
+ *
5
+ * Two layers, matching the published JSON Schema asset
6
+ * (`schemas/decision-dossier-document.v1.schema.json`,
7
+ * `urn:sentropic:focus:DecisionDossierDocument:1.0.0`):
8
+ *
9
+ * 1. structure — closed shape check (unknown fields, wrong types, bad enums,
10
+ * an enabled snapshot interaction all refuse);
11
+ * 2. semantics — unique node IDs, interaction targets resolvable to the
12
+ * dossier ref, a section id/targetRef or a nested option id/targetRef,
13
+ * an opaque provenance source binding (any string, per the published
14
+ * schema), and comprehension evidence whose dossier hash still matches
15
+ * the snapshot hash.
16
+ *
17
+ * Pure and dependency-free: no I/O, no clock, no mutation of the input.
18
+ * Every recorded issue is a refusal — the schema is closed.
19
+ */
20
+ export { READABILITY_LIMITS, READABILITY_BUDGETS, validateDecisionDossierReadability } from "./readability.js";
21
+ import type { DecisionDossierDocument } from "../model.js";
22
+ /** Stable schema ID of the published DecisionDossierDocument asset. */
23
+ export declare const DOSSIER_SCHEMA_ID = "urn:sentropic:focus:DecisionDossierDocument:1.0.0";
24
+ /** Version of the dossier schema, independent of the package version. */
25
+ export declare const DOSSIER_SCHEMA_VERSION = "1.0.0";
26
+ /** One machine-checkable validation failure. */
27
+ export interface ValidationIssue {
28
+ /** JSON-path-style location, e.g. `$.sections[2].options[0].annotation`. */
29
+ readonly path: string;
30
+ /** Stable machine code (`missing_field`, `duplicate_id`, …). */
31
+ readonly code: string;
32
+ /** Human-readable detail; never echoes secrets (dossiers carry none). */
33
+ readonly message: string;
34
+ }
35
+ export type ValidationResult<T> = {
36
+ readonly ok: true;
37
+ readonly value: T;
38
+ } | {
39
+ readonly ok: false;
40
+ readonly issues: readonly ValidationIssue[];
41
+ };
42
+ /** Thrown by {@link assertDecisionDossierDocument} on an invalid dossier. */
43
+ export declare class DecisionDossierValidationError extends Error {
44
+ readonly issues: readonly ValidationIssue[];
45
+ constructor(issues: readonly ValidationIssue[]);
46
+ }
47
+ /** Structural layer: closed shape check against the published schema. */
48
+ export declare const validateDecisionDossierStructure: (value: unknown) => ValidationResult<DecisionDossierDocument>;
49
+ /** Semantic layer on a structurally valid dossier. Empty means valid. */
50
+ export declare const validateDecisionDossierSemantics: (doc: DecisionDossierDocument) => ValidationIssue[];
51
+ /** Full validation: structure first, then semantics. */
52
+ export declare const validateDecisionDossierDocument: (value: unknown) => ValidationResult<DecisionDossierDocument>;
53
+ /** Parse or throw {@link DecisionDossierValidationError}. */
54
+ export declare const assertDecisionDossierDocument: (value: unknown) => DecisionDossierDocument;
55
+ /** Presentation requires the backward-compatible structure AND the readability gate. */
56
+ export declare const validateDecisionDossierForPresentation: (value: unknown) => ValidationResult<DecisionDossierDocument>;
57
+ /** Refuse before any presentation or host rendering hook runs. */
58
+ export declare const assertDecisionDossierForPresentation: (value: unknown) => DecisionDossierDocument;
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;AAE/G,OAAO,KAAK,EAIV,uBAAuB,EAUxB,MAAM,aAAa,CAAC;AAErB,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,sDACuB,CAAC;AAEtD,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,CAAC;AAExE,6EAA6E;AAC7E,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;gBAChC,MAAM,EAAE,SAAS,eAAe,EAAE;CAS/C;AAuXD,yEAAyE;AACzE,eAAO,MAAM,gCAAgC,GAC3C,OAAO,OAAO,KACb,gBAAgB,CAAC,uBAAuB,CAkG1C,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,gCAAgC,GAC3C,KAAK,uBAAuB,KAC3B,eAAe,EA8DjB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,+BAA+B,GAC1C,OAAO,OAAO,KACb,gBAAgB,CAAC,uBAAuB,CAM1C,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,6BAA6B,GACxC,OAAO,OAAO,KACb,uBAIF,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,sCAAsC,GAAI,OAAO,OAAO,KAAG,gBAAgB,CAAC,uBAAuB,CAK/G,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,KAAG,uBAIrE,CAAC"}