structural-codes-viewer 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (135) hide show
  1. package/LICENSE +501 -0
  2. package/NOTICE +16 -0
  3. package/README.md +119 -63
  4. package/package-dist/CorpusContent.d.ts +44 -9
  5. package/package-dist/CorpusContent.js +452 -26
  6. package/package-dist/CorpusContent.js.map +1 -1
  7. package/package-dist/NormativeViewer.d.ts +23 -2
  8. package/package-dist/NormativeViewer.js +1699 -234
  9. package/package-dist/NormativeViewer.js.map +1 -1
  10. package/package-dist/ReferenceTools.d.ts +49 -0
  11. package/package-dist/ReferenceTools.js +14 -0
  12. package/package-dist/ReferenceTools.js.map +1 -0
  13. package/package-dist/annotations/AnnotationUi.d.ts +57 -0
  14. package/package-dist/annotations/AnnotationUi.js +114 -0
  15. package/package-dist/annotations/AnnotationUi.js.map +1 -0
  16. package/package-dist/annotations/annotationTargets.d.ts +39 -0
  17. package/package-dist/annotations/annotationTargets.js +94 -0
  18. package/package-dist/annotations/annotationTargets.js.map +1 -0
  19. package/package-dist/annotations/exportImport.d.ts +6 -0
  20. package/package-dist/annotations/exportImport.js +30 -0
  21. package/package-dist/annotations/exportImport.js.map +1 -0
  22. package/package-dist/annotations/index.d.ts +4 -0
  23. package/package-dist/annotations/index.js +5 -0
  24. package/package-dist/annotations/index.js.map +1 -0
  25. package/package-dist/annotations/indexedDb.d.ts +21 -0
  26. package/package-dist/annotations/indexedDb.js +210 -0
  27. package/package-dist/annotations/indexedDb.js.map +1 -0
  28. package/package-dist/annotations/schema.d.ts +8 -0
  29. package/package-dist/annotations/schema.js +102 -0
  30. package/package-dist/annotations/schema.js.map +1 -0
  31. package/package-dist/annotations/types.d.ts +52 -0
  32. package/package-dist/annotations/types.js +18 -0
  33. package/package-dist/annotations/types.js.map +1 -0
  34. package/package-dist/chatntc/canonicalization.d.ts +15 -0
  35. package/package-dist/chatntc/canonicalization.js +107 -0
  36. package/package-dist/chatntc/canonicalization.js.map +1 -0
  37. package/package-dist/chatntc/directives.d.ts +2 -0
  38. package/package-dist/chatntc/directives.js +38 -0
  39. package/package-dist/chatntc/directives.js.map +1 -0
  40. package/package-dist/chatntc/evidence.d.ts +17 -0
  41. package/package-dist/chatntc/evidence.js +116 -0
  42. package/package-dist/chatntc/evidence.js.map +1 -0
  43. package/package-dist/chatntc/index.d.ts +10 -0
  44. package/package-dist/chatntc/index.js +9 -0
  45. package/package-dist/chatntc/index.js.map +1 -0
  46. package/package-dist/chatntc/issueCategories.d.ts +2 -0
  47. package/package-dist/chatntc/issueCategories.js +11 -0
  48. package/package-dist/chatntc/issueCategories.js.map +1 -0
  49. package/package-dist/chatntc/policy.d.ts +35 -0
  50. package/package-dist/chatntc/policy.js +36 -0
  51. package/package-dist/chatntc/policy.js.map +1 -0
  52. package/package-dist/chatntc/provider.d.ts +42 -0
  53. package/package-dist/chatntc/provider.js +2 -0
  54. package/package-dist/chatntc/provider.js.map +1 -0
  55. package/package-dist/chatntc/responseContract.d.ts +52 -0
  56. package/package-dist/chatntc/responseContract.js +73 -0
  57. package/package-dist/chatntc/responseContract.js.map +1 -0
  58. package/package-dist/chatntc/retrieval.d.ts +5 -0
  59. package/package-dist/chatntc/retrieval.js +220 -0
  60. package/package-dist/chatntc/retrieval.js.map +1 -0
  61. package/package-dist/chatntc/types.d.ts +240 -0
  62. package/package-dist/chatntc/types.js +2 -0
  63. package/package-dist/chatntc/types.js.map +1 -0
  64. package/package-dist/chatntc/validation.d.ts +8 -0
  65. package/package-dist/chatntc/validation.js +299 -0
  66. package/package-dist/chatntc/validation.js.map +1 -0
  67. package/package-dist/chatntc/viewerArtifacts.d.ts +14 -0
  68. package/package-dist/chatntc/viewerArtifacts.js +168 -0
  69. package/package-dist/chatntc/viewerArtifacts.js.map +1 -0
  70. package/package-dist/chatntc-history/index.d.ts +2 -0
  71. package/package-dist/chatntc-history/index.js +3 -0
  72. package/package-dist/chatntc-history/index.js.map +1 -0
  73. package/package-dist/chatntc-history/indexedDb.d.ts +27 -0
  74. package/package-dist/chatntc-history/indexedDb.js +258 -0
  75. package/package-dist/chatntc-history/indexedDb.js.map +1 -0
  76. package/package-dist/chatntc-history/schema.d.ts +5 -0
  77. package/package-dist/chatntc-history/schema.js +102 -0
  78. package/package-dist/chatntc-history/schema.js.map +1 -0
  79. package/package-dist/chatntc-history/types.d.ts +78 -0
  80. package/package-dist/chatntc-history/types.js +23 -0
  81. package/package-dist/chatntc-history/types.js.map +1 -0
  82. package/package-dist/chatntc-ui/ChatNTCHistoryPanel.d.ts +9 -0
  83. package/package-dist/chatntc-ui/ChatNTCHistoryPanel.js +239 -0
  84. package/package-dist/chatntc-ui/ChatNTCHistoryPanel.js.map +1 -0
  85. package/package-dist/chatntc-ui/ChatNTCIcons.d.ts +10 -0
  86. package/package-dist/chatntc-ui/ChatNTCIcons.js +20 -0
  87. package/package-dist/chatntc-ui/ChatNTCIcons.js.map +1 -0
  88. package/package-dist/chatntc-ui/ChatNTCLoadingSkeleton.d.ts +1 -0
  89. package/package-dist/chatntc-ui/ChatNTCLoadingSkeleton.js +5 -0
  90. package/package-dist/chatntc-ui/ChatNTCLoadingSkeleton.js.map +1 -0
  91. package/package-dist/chatntc-ui/ChatNTCMarkdown.d.ts +14 -0
  92. package/package-dist/chatntc-ui/ChatNTCMarkdown.js +112 -0
  93. package/package-dist/chatntc-ui/ChatNTCMarkdown.js.map +1 -0
  94. package/package-dist/chatntc-ui/ChatNTCPanel.d.ts +29 -0
  95. package/package-dist/chatntc-ui/ChatNTCPanel.js +241 -0
  96. package/package-dist/chatntc-ui/ChatNTCPanel.js.map +1 -0
  97. package/package-dist/chatntc-ui/historyMessages.d.ts +5 -0
  98. package/package-dist/chatntc-ui/historyMessages.js +53 -0
  99. package/package-dist/chatntc-ui/historyMessages.js.map +1 -0
  100. package/package-dist/chatntc-ui/index.d.ts +3 -0
  101. package/package-dist/chatntc-ui/index.js +4 -0
  102. package/package-dist/chatntc-ui/index.js.map +1 -0
  103. package/package-dist/chatntc-ui/transport.d.ts +51 -0
  104. package/package-dist/chatntc-ui/transport.js +9 -0
  105. package/package-dist/chatntc-ui/transport.js.map +1 -0
  106. package/package-dist/chunkNavigation.d.ts +12 -0
  107. package/package-dist/chunkNavigation.js +44 -0
  108. package/package-dist/chunkNavigation.js.map +1 -0
  109. package/package-dist/corpusData.d.ts +176 -33
  110. package/package-dist/corpusData.js +52 -0
  111. package/package-dist/corpusData.js.map +1 -1
  112. package/package-dist/crossReferences.d.ts +46 -0
  113. package/package-dist/crossReferences.js +198 -0
  114. package/package-dist/crossReferences.js.map +1 -0
  115. package/package-dist/generate-artifacts.mjs +47 -12
  116. package/package-dist/globalScrubber.d.ts +10 -0
  117. package/package-dist/globalScrubber.js +85 -0
  118. package/package-dist/globalScrubber.js.map +1 -0
  119. package/package-dist/permalinks.d.ts +22 -0
  120. package/package-dist/permalinks.js +36 -0
  121. package/package-dist/permalinks.js.map +1 -0
  122. package/package-dist/searchClient.d.ts +22 -0
  123. package/package-dist/searchClient.js +133 -0
  124. package/package-dist/searchClient.js.map +1 -0
  125. package/package-dist/searchEngine.d.ts +68 -0
  126. package/package-dist/searchEngine.js +558 -0
  127. package/package-dist/searchEngine.js.map +1 -0
  128. package/package-dist/searchWorker.d.ts +1 -0
  129. package/package-dist/searchWorker.js +32 -0
  130. package/package-dist/searchWorker.js.map +1 -0
  131. package/package-dist/styles.css +927 -182
  132. package/package-dist/tableCaptions.d.mts +3 -0
  133. package/package-dist/tableCaptions.mjs +35 -0
  134. package/package-dist/tableCaptions.mjs.map +1 -0
  135. package/package.json +61 -15
@@ -0,0 +1,241 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { lazy, Suspense, useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
4
+ import { viewerTargetForCitation } from "../chatntc/evidence.js";
5
+ import { ChatTransportError } from "./transport.js";
6
+ import { ChatNTCLoadingSkeleton } from "./ChatNTCLoadingSkeleton.js";
7
+ import { NewChatIcon } from "./ChatNTCIcons.js";
8
+ const loadChatNTCMarkdown = () => import("./ChatNTCMarkdown.js");
9
+ const LazyChatNTCMarkdown = lazy(() => loadChatNTCMarkdown().then((module) => ({ default: module.ChatNTCMarkdown })));
10
+ export const CHATNTC_CLASSIFICATION_LABELS = {
11
+ "direct-reference": "Riferimento diretto", "combined-reference": "Riferimento combinato",
12
+ interpretation: "Interpretazione", "no-direct-reference": "Nessun riferimento diretto", "external-source": "Fonte esterna",
13
+ };
14
+ const warningLabels = {
15
+ "no-evidence": "Non è stato trovato contenuto normativo sufficiente.",
16
+ "evidence-reduced": "Fonti parziali: è stata selezionata una parte del contenuto disponibile.",
17
+ "figure-metadata-only": "Per le figure sono disponibili soltanto i metadati.",
18
+ "unresolved-reference": "Un riferimento della domanda non è stato risolto.",
19
+ };
20
+ const answerText = (response) => response.formatVersion === 3
21
+ ? response.answerMarkdown : response.answer;
22
+ /** Complete recent pairs only: never truncate a normative statement to fit history. */
23
+ function recentHistory(turns) {
24
+ const pairs = [];
25
+ let length = 0;
26
+ for (const turn of [...turns].reverse()) {
27
+ if (!turn.result || turn.status !== "complete")
28
+ continue;
29
+ const question = turn.context ? `${turn.question}\nContesto: ${contextLabel(turn.context)}.` : turn.question;
30
+ const answer = answerText(turn.result.response);
31
+ if (question.length > 2000 || answer.length > 2000 || length + question.length + answer.length > 8000)
32
+ break;
33
+ pairs.unshift([{ role: "user", content: question }, { role: "assistant", content: answer }]);
34
+ length += question.length + answer.length;
35
+ if (pairs.length === 3)
36
+ break;
37
+ }
38
+ return pairs.flat();
39
+ }
40
+ function contextLabel(context) {
41
+ return `${context.documentId === "ntc2018" ? "NTC 2018" : "Circolare 7/2019"} §${context.numbering}`;
42
+ }
43
+ function citationLabel(citation) {
44
+ const label = contextLabel(Object.assign(Object.assign({}, citation), { documentId: citation.document }));
45
+ const target = viewerTargetForCitation(citation);
46
+ if (target.kind === "asset") {
47
+ if (target.assetKind === "formula")
48
+ return citation.assetNumber ? `Formula [${citation.assetNumber}]` : "Formula non numerata";
49
+ if (target.assetKind === "table")
50
+ return citation.assetNumber ? `Tab.${citation.assetNumber}` : "Tabella non numerata";
51
+ if (target.assetKind === "figure")
52
+ return citation.assetNumber ? `Fig. ${citation.assetNumber}` : "Figura non numerata";
53
+ return `${label} · asset`;
54
+ }
55
+ return target.kind === "block" ? `${label} · passaggio` : label;
56
+ }
57
+ const citationKey = (citation) => { var _a, _b; return [citation.unitId, (_a = citation.blockId) !== null && _a !== void 0 ? _a : "", (_b = citation.assetId) !== null && _b !== void 0 ? _b : ""].join("|"); };
58
+ const chatDisclaimer = "ChatNTC è un sistema di IA e può commettere errori. Verifica sempre le fonti normative. Non sostituisce il giudizio professionale.";
59
+ function SendIcon() {
60
+ return _jsx("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: _jsx("path", { d: "M5 12h13M13 6l6 6-6 6" }) });
61
+ }
62
+ export function ChatNTCPanel({ transport, onNavigate, hrefForTarget, initialTurns = [], onTurnsChange, onNewChat, historyEnabled = false, showNewChatAction = true, disabled = false, currentCorpusFingerprint }) {
63
+ const inputId = useId();
64
+ const inputRef = useRef(null);
65
+ const logRef = useRef(null);
66
+ const turnRefs = useRef(new Map());
67
+ const scrollActionRef = useRef(null);
68
+ const pendingRef = useRef(null);
69
+ const [turns, setTurns] = useState(initialTurns);
70
+ const turnsRef = useRef(initialTurns);
71
+ const [freshAnswerIds, setFreshAnswerIds] = useState(() => new Set());
72
+ const [dismissedReferenceWarnings, setDismissedReferenceWarnings] = useState(() => new Set());
73
+ const [draft, setDraft] = useState("");
74
+ const [notice, setNotice] = useState("");
75
+ const busy = turns.some((turn) => turn.status === "pending");
76
+ const resizeInput = useCallback(() => {
77
+ var _a, _b;
78
+ const input = inputRef.current;
79
+ if (!input)
80
+ return;
81
+ const styles = window.getComputedStyle(input);
82
+ const minimum = Number.parseFloat(styles.minHeight) || 44;
83
+ const viewportHeight = (_b = (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : window.innerHeight;
84
+ const maximum = Math.max(minimum, Math.min(viewportHeight * .33, 240));
85
+ const previous = input.getBoundingClientRect().height;
86
+ input.style.height = "auto";
87
+ const desired = Math.min(Math.max(input.scrollHeight, minimum), maximum);
88
+ input.style.overflowY = input.scrollHeight > maximum ? "auto" : "hidden";
89
+ if (previous > 0 && !window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
90
+ input.style.height = `${previous}px`;
91
+ void input.offsetHeight;
92
+ }
93
+ input.style.height = `${desired}px`;
94
+ }, []);
95
+ useEffect(() => () => { var _a; (_a = pendingRef.current) === null || _a === void 0 ? void 0 : _a.controller.abort(); pendingRef.current = null; }, []);
96
+ useEffect(() => {
97
+ var _a, _b;
98
+ window.addEventListener("resize", resizeInput);
99
+ (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.addEventListener("resize", resizeInput);
100
+ const composer = (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.parentElement;
101
+ let previousWidth = composer === null || composer === void 0 ? void 0 : composer.getBoundingClientRect().width;
102
+ const observer = composer && typeof ResizeObserver !== "undefined" ? new ResizeObserver(([entry]) => {
103
+ const width = entry.contentRect.width;
104
+ if (width !== previousWidth) {
105
+ previousWidth = width;
106
+ resizeInput();
107
+ }
108
+ }) : null;
109
+ if (composer)
110
+ observer === null || observer === void 0 ? void 0 : observer.observe(composer);
111
+ return () => {
112
+ var _a;
113
+ window.removeEventListener("resize", resizeInput);
114
+ (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.removeEventListener("resize", resizeInput);
115
+ observer === null || observer === void 0 ? void 0 : observer.disconnect();
116
+ };
117
+ }, [resizeInput]);
118
+ useLayoutEffect(resizeInput, [draft, resizeInput]);
119
+ useLayoutEffect(() => {
120
+ var _a;
121
+ const action = scrollActionRef.current;
122
+ const log = logRef.current;
123
+ if (!action || !log)
124
+ return;
125
+ scrollActionRef.current = null;
126
+ if (action.kind === "preserve") {
127
+ log.scrollTop = action.top;
128
+ return;
129
+ }
130
+ const question = (_a = turnRefs.current.get(action.id)) === null || _a === void 0 ? void 0 : _a.querySelector(".scv-chat-question");
131
+ if (!question)
132
+ return;
133
+ const logRect = log.getBoundingClientRect();
134
+ const questionRect = question.getBoundingClientRect();
135
+ const inset = 8;
136
+ if (questionRect.top < logRect.top + inset || questionRect.bottom > logRect.bottom - inset) {
137
+ log.scrollTo({ top: Math.max(0, log.scrollTop + questionRect.top - logRect.top - inset), behavior: "auto" });
138
+ }
139
+ }, [turns]);
140
+ function updateTurns(update) {
141
+ const next = update(turnsRef.current);
142
+ turnsRef.current = next;
143
+ setTurns(next);
144
+ onTurnsChange === null || onTurnsChange === void 0 ? void 0 : onTurnsChange(next);
145
+ }
146
+ function stop() {
147
+ var _a, _b, _c;
148
+ const pending = pendingRef.current;
149
+ if (!pending)
150
+ return;
151
+ pendingRef.current = null;
152
+ pending.controller.abort();
153
+ scrollActionRef.current = { kind: "preserve", top: (_b = (_a = logRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0 };
154
+ updateTurns((current) => current.map((turn) => turn.id === pending.id ? Object.assign(Object.assign({}, turn), { status: "cancelled" }) : turn));
155
+ setNotice("Richiesta interrotta.");
156
+ (_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.focus();
157
+ }
158
+ function newChat() {
159
+ var _a, _b;
160
+ if (onNewChat) {
161
+ stop();
162
+ onNewChat();
163
+ return;
164
+ }
165
+ (_a = pendingRef.current) === null || _a === void 0 ? void 0 : _a.controller.abort();
166
+ pendingRef.current = null;
167
+ updateTurns(() => []);
168
+ setFreshAnswerIds(new Set());
169
+ setDismissedReferenceWarnings(new Set());
170
+ setDraft("");
171
+ setNotice("Nuova chat pronta.");
172
+ (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.focus();
173
+ }
174
+ async function send() {
175
+ var _a, _b, _c, _d, _e, _f, _g;
176
+ const question = draft.trim();
177
+ if (disabled || !question || pendingRef.current)
178
+ return;
179
+ const id = crypto.randomUUID();
180
+ const controller = new AbortController();
181
+ pendingRef.current = { id, controller };
182
+ const history = recentHistory(turns);
183
+ void loadChatNTCMarkdown();
184
+ scrollActionRef.current = { kind: "reveal", id };
185
+ updateTurns((current) => [...current, { id, question, timestamp: new Date().toISOString(), status: "pending" }]);
186
+ setDraft("");
187
+ setNotice("");
188
+ try {
189
+ const result = await transport.send({ question, history }, { signal: controller.signal });
190
+ if (((_a = pendingRef.current) === null || _a === void 0 ? void 0 : _a.id) !== id)
191
+ return;
192
+ scrollActionRef.current = { kind: "preserve", top: (_c = (_b = logRef.current) === null || _b === void 0 ? void 0 : _b.scrollTop) !== null && _c !== void 0 ? _c : 0 };
193
+ setFreshAnswerIds((current) => new Set(current).add(id));
194
+ updateTurns((current) => current.map((turn) => turn.id === id ? Object.assign(Object.assign({}, turn), { result, answeredAt: new Date().toISOString(), status: "complete" }) : turn));
195
+ setNotice("Risposta disponibile.");
196
+ }
197
+ catch (error) {
198
+ if (((_d = pendingRef.current) === null || _d === void 0 ? void 0 : _d.id) !== id)
199
+ return;
200
+ const message = error instanceof ChatTransportError ? error.message : "Impossibile completare la richiesta. Puoi riprovare.";
201
+ scrollActionRef.current = { kind: "preserve", top: (_f = (_e = logRef.current) === null || _e === void 0 ? void 0 : _e.scrollTop) !== null && _f !== void 0 ? _f : 0 };
202
+ updateTurns((current) => current.map((turn) => turn.id === id ? Object.assign(Object.assign({}, turn), { error: message, status: "error" }) : turn));
203
+ setDraft((current) => current || question);
204
+ }
205
+ finally {
206
+ if (((_g = pendingRef.current) === null || _g === void 0 ? void 0 : _g.id) === id)
207
+ pendingRef.current = null;
208
+ }
209
+ }
210
+ return _jsxs("section", { className: `scv-chat${showNewChatAction ? " scv-chat-has-actions" : ""}`, "aria-label": "ChatNTC", children: [showNewChatAction && _jsx("div", { className: "scv-chat-actions", children: _jsxs("button", { type: "button", disabled: disabled, onClick: newChat, children: [_jsx(NewChatIcon, {}), "Nuova chat"] }) }), _jsxs("div", { className: "scv-chat-messages", role: "log", "aria-label": "Messaggi ChatNTC", "aria-live": "polite", "aria-relevant": "additions text", ref: logRef, children: [turns.length === 0 && _jsx("p", { className: "scv-chat-empty", children: "Fai una domanda sulle NTC 2018 o sulla Circolare 7/2019." }), turns.map((turn) => {
211
+ var _a, _b, _c;
212
+ return _jsxs("div", { className: "scv-chat-turn", "data-chat-turn-id": turn.id, ref: (element) => {
213
+ if (element)
214
+ turnRefs.current.set(turn.id, element);
215
+ else
216
+ turnRefs.current.delete(turn.id);
217
+ }, children: [_jsxs("article", { className: "scv-chat-question", "aria-label": "Domanda utente", children: [turn.context && _jsx("small", { children: contextLabel(turn.context) }), _jsx("p", { children: turn.question })] }), turn.status === "pending" && _jsx(ChatNTCLoadingSkeleton, {}), turn.status === "cancelled" && _jsx("p", { className: "scv-chat-meta", children: "Richiesta interrotta." }), turn.error && _jsx("p", { className: "scv-chat-error", role: "alert", children: turn.error }), turn.result && _jsxs("article", { className: `scv-chat-answer${freshAnswerIds.has(turn.id) ? " scv-chat-answer-enter" : ""}`, "data-entrance": freshAnswerIds.has(turn.id) ? "new" : "history", "aria-label": "Risposta ChatNTC", children: [_jsx("span", { className: "scv-chat-classification", "data-classification": turn.result.response.classification, children: CHATNTC_CLASSIFICATION_LABELS[turn.result.response.classification] }), _jsx(Suspense, { fallback: _jsx("div", { className: "scv-chat-markdown scv-chat-markdown-loader", "aria-hidden": "true" }), children: _jsx(LazyChatNTCMarkdown, { markdown: answerText(turn.result.response), references: turn.result.citations, hrefForTarget: hrefForTarget, onNavigate: onNavigate, onNavigationError: () => setNotice("Non è stato possibile aprire il riferimento.") }) }), turn.result.response.formatVersion === 3 && turn.result.response.referenceWarning
218
+ && !dismissedReferenceWarnings.has(turn.id) && _jsxs("div", { className: "scv-chat-reference-warning", role: "status", children: [_jsx("span", { children: turn.result.response.referenceWarning === "some-references-omitted"
219
+ ? "Risposta disponibile; alcuni riferimenti sono stati omessi perché non verificabili."
220
+ : "Non sono stati verificati riferimenti normativi specifici." }), _jsx("button", { type: "button", "aria-label": "Chiudi avviso sui riferimenti", onClick: () => setDismissedReferenceWarnings((current) => {
221
+ const next = new Set(current);
222
+ next.add(turn.id);
223
+ return next;
224
+ }), children: "\u00D7" })] }), currentCorpusFingerprint && turn.result.evidence.corpusFingerprint !== currentCorpusFingerprint && _jsx("p", { className: "scv-chat-corpus-warning", children: "Questa risposta \u00E8 stata generata con una versione diversa del corpus." }), historyEnabled && _jsxs("details", { className: "scv-chat-warnings", children: [_jsx("summary", { children: "Versione e provenienza della risposta" }), _jsxs("dl", { className: "scv-chat-provenance", children: [_jsx("dt", { children: "Generata il" }), _jsx("dd", { children: turn.answeredAt ? new Date(turn.answeredAt).toLocaleString("it-IT") : "Data non disponibile" }), _jsx("dt", { children: "Provider / modello" }), _jsxs("dd", { children: [(_a = turn.result.generation.provider) !== null && _a !== void 0 ? _a : "Astensione locale", " / ", (_b = turn.result.generation.model) !== null && _b !== void 0 ? _b : "Non disponibile"] }), _jsx("dt", { children: "structural-codes" }), _jsx("dd", { children: (_c = turn.result.evidence.structuralCodesVersion) !== null && _c !== void 0 ? _c : "Versione non disponibile" }), _jsx("dt", { children: "Fingerprint corpus" }), _jsx("dd", { children: turn.result.evidence.corpusFingerprint })] })] }), turn.result.citations.length > 0 && _jsxs("nav", { className: "scv-chat-citations", "aria-label": "Riferimenti normativi verificati", children: [_jsx("strong", { children: "Riferimenti verificati" }), _jsx("ul", { children: turn.result.citations.map((citation) => {
225
+ const target = viewerTargetForCitation(citation);
226
+ return _jsx("li", { children: _jsx("a", { href: hrefForTarget(target), onClick: (event) => {
227
+ if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)
228
+ return;
229
+ event.preventDefault();
230
+ void Promise.resolve().then(() => onNavigate(target)).catch(() => setNotice("Non è stato possibile aprire il riferimento."));
231
+ }, children: citationLabel(citation) }) }, citationKey(citation));
232
+ }) })] }), turn.result.response.needsMoreEvidence && _jsx("p", { className: "scv-chat-meta", children: "Servono altre fonti o un riferimento pi\u00F9 preciso per completare la risposta." }), turn.result.response.externalResearchSuggested && _jsx("p", { className: "scv-chat-meta", children: "Potrebbero servire fonti esterne; la ricerca esterna non \u00E8 disponibile." }), (turn.result.response.warnings.length > 0 || turn.result.evidence.warnings.length > 0) && _jsxs("details", { className: "scv-chat-warnings", children: [_jsx("summary", { children: "Limiti e stato delle fonti" }), _jsx("ul", { children: [...new Set([...turn.result.response.warnings, ...turn.result.evidence.warnings.map((warning) => { var _a; return (_a = warningLabels[warning.code]) !== null && _a !== void 0 ? _a : "È presente un avviso sulle fonti."; })])].map((warning) => _jsx("li", { children: warning }, warning)) })] })] })] }, turn.id);
233
+ })] }), _jsxs("form", { className: "scv-chat-composer", onSubmit: (event) => { event.preventDefault(); void send(); }, children: [_jsxs("div", { className: "scv-chat-composer-bar", children: [_jsx("textarea", { id: inputId, ref: inputRef, rows: 1, maxLength: 4000, value: draft, onChange: (event) => setDraft(event.target.value), placeholder: "Scrivi una domanda\u2026", onKeyDown: (event) => {
234
+ if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing && event.keyCode !== 229) {
235
+ event.preventDefault();
236
+ void send();
237
+ }
238
+ }, "aria-label": "Scrivi una domanda" }), busy ? _jsx("button", { className: "scv-chat-action-button", type: "button", "aria-label": "Interrompi risposta", disabled: !transport.capabilities.cancellation, onClick: stop, children: _jsx("span", { className: "scv-chat-stop-icon", "aria-hidden": "true" }) })
239
+ : _jsx("button", { className: "scv-chat-action-button", type: "submit", "aria-label": "Invia domanda", disabled: disabled || !draft.trim(), children: _jsx(SendIcon, {}) })] }), _jsx("p", { className: "scv-chat-disclaimer", children: chatDisclaimer }), _jsx("span", { className: "scv-chat-live", role: "status", children: notice })] })] });
240
+ }
241
+ //# sourceMappingURL=ChatNTCPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatNTCPanel.js","sourceRoot":"","sources":["../../shared/chatntc-ui/ChatNTCPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ChatHistoryMessage } from "../chatntc-history/types.js";
2
+ import type { ChatNTCTurn } from "./ChatNTCPanel.js";
3
+ /** Explicit projection: transport extensions/configuration never flow into storage by spreading result. */
4
+ export declare function historyMessages(turns: ChatNTCTurn[]): ChatHistoryMessage[];
5
+ export declare function turnsFromHistory(messages: ChatHistoryMessage[]): ChatNTCTurn[];
@@ -0,0 +1,53 @@
1
+ /** Explicit projection: transport extensions/configuration never flow into storage by spreading result. */
2
+ export function historyMessages(turns) {
3
+ return turns.flatMap((turn) => {
4
+ var _a, _b, _c;
5
+ const user = Object.assign(Object.assign({ id: turn.id, role: "user", content: turn.question, timestamp: turn.timestamp, status: turn.status }, (turn.context ? { context: Object.assign(Object.assign({ documentId: turn.context.documentId, unitId: turn.context.unitId, numbering: turn.context.numbering }, (turn.context.blockId ? { blockId: turn.context.blockId } : {})), (turn.context.assetId ? { assetId: turn.context.assetId } : {})) } : {})), (turn.error ? { error: turn.error } : {}));
6
+ if (!turn.result)
7
+ return [user];
8
+ const { response, evidence, generation } = turn.result;
9
+ const content = response.formatVersion === 3 ? response.answerMarkdown : response.answer;
10
+ const answer = response.formatVersion === 3
11
+ ? Object.assign(Object.assign({ formatVersion: response.formatVersion, evidencePackageId: response.evidencePackageId, classification: response.classification, status: response.status, verifiedReferences: response.verifiedReferences.map((c) => (Object.assign(Object.assign(Object.assign({ document: c.document, unitId: c.unitId, numbering: c.numbering, kind: c.kind }, (c.blockId ? { blockId: c.blockId } : {})), (c.assetId ? { assetId: c.assetId } : {})), (c.assetNumber !== undefined ? { assetNumber: c.assetNumber } : {})))) }, (response.referenceWarning ? { referenceWarning: response.referenceWarning } : {})), { warnings: [...response.warnings], needsMoreEvidence: response.needsMoreEvidence, externalResearchSuggested: response.externalResearchSuggested }) : response.formatVersion === 2 ? { formatVersion: 2, evidencePackageId: response.evidencePackageId,
12
+ classification: response.classification, status: response.status,
13
+ claims: response.claims.map((claim) => ({ id: claim.id, text: claim.text, classification: claim.classification,
14
+ citations: claim.citations.map((c) => (Object.assign(Object.assign(Object.assign({ evidenceId: c.evidenceId, document: c.document, unitId: c.unitId, numbering: c.numbering }, (c.blockId ? { blockId: c.blockId } : {})), (c.assetId ? { assetId: c.assetId } : {})), (c.assetNumber !== undefined ? { assetNumber: c.assetNumber } : {})))) })),
15
+ usedEvidenceIds: [...response.usedEvidenceIds], warnings: [...response.warnings], needsMoreEvidence: response.needsMoreEvidence,
16
+ externalResearchSuggested: response.externalResearchSuggested }
17
+ : { formatVersion: 1, evidencePackageId: response.evidencePackageId,
18
+ classification: response.classification,
19
+ claims: response.claims.map((claim) => ({ id: claim.id, text: claim.text, classification: claim.classification,
20
+ citations: claim.citations.map((c) => (Object.assign(Object.assign(Object.assign({ evidenceId: c.evidenceId, document: c.document, unitId: c.unitId, numbering: c.numbering }, (c.blockId ? { blockId: c.blockId } : {})), (c.assetId ? { assetId: c.assetId } : {})), (c.assetNumber !== undefined ? { assetNumber: c.assetNumber } : {})))) })),
21
+ usedEvidenceIds: [...response.usedEvidenceIds], warnings: [...response.warnings], needsMoreEvidence: response.needsMoreEvidence,
22
+ externalResearchSuggested: response.externalResearchSuggested };
23
+ return [user, {
24
+ id: `${turn.id}:answer`, turnId: turn.id, role: "assistant", content, timestamp: (_a = turn.answeredAt) !== null && _a !== void 0 ? _a : turn.timestamp, answer,
25
+ provenance: Object.assign(Object.assign({ provider: generation.provider, model: (_b = generation.model) !== null && _b !== void 0 ? _b : null, structuralCodesVersion: (_c = evidence.structuralCodesVersion) !== null && _c !== void 0 ? _c : null, corpusFingerprint: evidence.corpusFingerprint, artifactFingerprint: evidence.artifactFingerprint, policyVersion: evidence.policyVersion, outcome: generation.outcome }, (generation.aiGenerated ? { aiGenerated: true } : {})), { validation: Object.assign({ valid: turn.result.validation.valid, scope: turn.result.validation.scope }, (turn.result.validation.stage ? { stage: turn.result.validation.stage } : {})) }),
26
+ evidenceReduced: evidence.reduced, evidenceWarnings: evidence.warnings.map((w) => (Object.assign({ code: w.code }, (w.unitId ? { unitId: w.unitId } : {})))),
27
+ }];
28
+ });
29
+ }
30
+ export function turnsFromHistory(messages) {
31
+ return messages.flatMap((message, index) => {
32
+ if (message.role !== "user")
33
+ return [];
34
+ const assistant = messages[index + 1];
35
+ const turn = { id: message.id, question: message.content, timestamp: message.timestamp, context: message.context,
36
+ // Reload never restarts an interrupted request or represents it as still running.
37
+ status: message.status === "pending" ? "cancelled" : message.status, error: message.error };
38
+ if ((assistant === null || assistant === void 0 ? void 0 : assistant.role) === "assistant") {
39
+ const p = assistant.provenance;
40
+ const response = (assistant.answer.formatVersion === 3
41
+ ? Object.assign(Object.assign({}, assistant.answer), { answerMarkdown: assistant.content }) : Object.assign(Object.assign({}, assistant.answer), { answer: assistant.content }));
42
+ const citations = response.formatVersion === 3 ? response.verifiedReferences
43
+ : response.usedEvidenceIds.map((id) => response.claims.flatMap((claim) => claim.citations).find((c) => c.evidenceId === id));
44
+ turn.answeredAt = assistant.timestamp;
45
+ turn.result = { ok: true, response,
46
+ citations,
47
+ evidence: Object.assign(Object.assign({ packageId: assistant.answer.evidencePackageId, corpusFingerprint: p.corpusFingerprint, artifactFingerprint: p.artifactFingerprint }, (p.structuralCodesVersion ? { structuralCodesVersion: p.structuralCodesVersion } : {})), { policyVersion: p.policyVersion, reduced: assistant.evidenceReduced, warnings: assistant.evidenceWarnings }),
48
+ generation: Object.assign({ provider: p.provider, model: p.model, outcome: p.outcome }, (p.aiGenerated ? { aiGenerated: true } : {})), validation: p.validation };
49
+ }
50
+ return [turn];
51
+ });
52
+ }
53
+ //# sourceMappingURL=historyMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historyMessages.js","sourceRoot":"","sources":["../../shared/chatntc-ui/historyMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ChatNTCPanel, CHATNTC_CLASSIFICATION_LABELS, type ChatNTCPanelProps } from "./ChatNTCPanel.js";
2
+ export { ChatTransportError, type ChatTransport, type ChatRequest, type ChatResult } from "./transport.js";
3
+ export { ChatNTCHistoryPanel, type ChatNTCHistoryPanelProps } from "./ChatNTCHistoryPanel.js";
@@ -0,0 +1,4 @@
1
+ export { ChatNTCPanel, CHATNTC_CLASSIFICATION_LABELS } from "./ChatNTCPanel.js";
2
+ export { ChatTransportError } from "./transport.js";
3
+ export { ChatNTCHistoryPanel } from "./ChatNTCHistoryPanel.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../shared/chatntc-ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAA0B,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAyD,MAAM,gBAAgB,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAiC,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { ChatNTCEvidencePackage, ChatNTCProcessingStage, ChatNTCReference, ChatNTCResponse, ChatNTCRetrievalContext, ChatNTCValidationIssue } from "../chatntc/types.js";
2
+ import type { ChatNTCMessage } from "../chatntc/provider.js";
3
+ /** Transient input. Context contains identifiers only, never a browser-supplied corpus chunk. */
4
+ export interface ChatRequest {
5
+ question: string;
6
+ history?: ChatNTCMessage[];
7
+ context?: ChatNTCRetrievalContext;
8
+ }
9
+ /** A transport must return only results accepted by the server Citation Validator. */
10
+ export interface ChatResult {
11
+ ok: true;
12
+ response: ChatNTCResponse;
13
+ citations: ChatNTCReference[];
14
+ evidence: {
15
+ packageId: string;
16
+ corpusFingerprint: string;
17
+ artifactFingerprint: string;
18
+ /** Optional only for transports predating history; persisted as null when unavailable. */
19
+ structuralCodesVersion?: string;
20
+ policyVersion: string;
21
+ reduced: boolean;
22
+ warnings: ChatNTCEvidencePackage["warnings"];
23
+ };
24
+ generation: {
25
+ provider: string | null;
26
+ model?: string | null;
27
+ outcome: "generated" | "abstained";
28
+ /** True for responses authored by the configured provider; absent in saved older results. */
29
+ aiGenerated?: true;
30
+ };
31
+ validation: {
32
+ valid: true;
33
+ scope: "integrity-provenance-claim-coverage" | "integrity-provenance-reference-resolution";
34
+ stage?: ChatNTCProcessingStage;
35
+ diagnostics?: ChatNTCValidationIssue[];
36
+ };
37
+ }
38
+ export interface ChatTransport {
39
+ readonly capabilities: {
40
+ readonly cancellation: boolean;
41
+ readonly streaming: false;
42
+ };
43
+ send(request: ChatRequest, options?: {
44
+ signal?: AbortSignal;
45
+ }): Promise<ChatResult>;
46
+ }
47
+ /** Only deliberate, user-facing transport messages may be displayed by the panel. */
48
+ export declare class ChatTransportError extends Error {
49
+ readonly code: string;
50
+ constructor(code: string, message: string);
51
+ }
@@ -0,0 +1,9 @@
1
+ /** Only deliberate, user-facing transport messages may be displayed by the panel. */
2
+ export class ChatTransportError extends Error {
3
+ constructor(code, message) {
4
+ super(message);
5
+ this.code = code;
6
+ this.name = "ChatTransportError";
7
+ }
8
+ }
9
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../shared/chatntc-ui/transport.ts"],"names":[],"mappings":"AAiCA,qFAAqF;AACrF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAqB,IAAY,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAAhD,SAAI,GAAJ,IAAI,CAAQ;QAAqC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAAC,CAAC;CAC1G"}
@@ -0,0 +1,12 @@
1
+ export function navigationChunkWindow(lookup: any, targetPath: any): {
2
+ previous: any;
3
+ target: any;
4
+ next: any;
5
+ };
6
+ export function navigationChunkPaths(lookup: any, targetPath: any): any[];
7
+ export function isChunkNearRenderedWindow(lookup: any, targetPath: any, renderedPaths: any): boolean;
8
+ export function primarySummaryForVisibleUnit(lookup: any, unitId: any, primaryAnchorByFallbackId: any): any;
9
+ export function progressiveChunkTargetsForVisibleUnit(lookup: any, unitId: any, primaryAnchorByFallbackId: any): {
10
+ previous: any;
11
+ next: any;
12
+ };
@@ -0,0 +1,44 @@
1
+ export function navigationChunkWindow(lookup, targetPath) {
2
+ var _a, _b;
3
+ const position = lookup === null || lookup === void 0 ? void 0 : lookup.chunkIndexByPath.get(targetPath);
4
+ if (position === undefined)
5
+ return { previous: null, target: targetPath, next: null };
6
+ return {
7
+ previous: (_a = lookup.chunkPaths[position - 1]) !== null && _a !== void 0 ? _a : null,
8
+ target: targetPath,
9
+ next: (_b = lookup.chunkPaths[position + 1]) !== null && _b !== void 0 ? _b : null,
10
+ };
11
+ }
12
+ export function navigationChunkPaths(lookup, targetPath) {
13
+ const window = navigationChunkWindow(lookup, targetPath);
14
+ return [window.previous, window.target, window.next].filter(Boolean);
15
+ }
16
+ export function isChunkNearRenderedWindow(lookup, targetPath, renderedPaths) {
17
+ const position = lookup === null || lookup === void 0 ? void 0 : lookup.chunkIndexByPath.get(targetPath);
18
+ if (position === undefined)
19
+ return false;
20
+ return [position - 1, position, position + 1].some((candidate) => {
21
+ const path = lookup.chunkPaths[candidate];
22
+ return Boolean(path && renderedPaths.has(path));
23
+ });
24
+ }
25
+ export function primarySummaryForVisibleUnit(lookup, unitId, primaryAnchorByFallbackId) {
26
+ var _a, _b;
27
+ return (_b = (_a = lookup === null || lookup === void 0 ? void 0 : lookup.unitById.get(unitId)) !== null && _a !== void 0 ? _a : primaryAnchorByFallbackId === null || primaryAnchorByFallbackId === void 0 ? void 0 : primaryAnchorByFallbackId.get(unitId)) !== null && _b !== void 0 ? _b : null;
28
+ }
29
+ export function progressiveChunkTargetsForVisibleUnit(lookup, unitId, primaryAnchorByFallbackId) {
30
+ var _a;
31
+ const summary = primarySummaryForVisibleUnit(lookup, unitId, primaryAnchorByFallbackId);
32
+ if (!lookup || !summary)
33
+ return { previous: null, next: null };
34
+ const chunkUnits = (_a = lookup.unitsByChunkPath.get(summary.chunkPath)) !== null && _a !== void 0 ? _a : [];
35
+ const position = chunkUnits.findIndex((unit) => unit.id === summary.id);
36
+ if (position < 0)
37
+ return { previous: null, next: null };
38
+ const adjacent = navigationChunkWindow(lookup, summary.chunkPath);
39
+ return {
40
+ previous: position <= 1 ? adjacent.previous : null,
41
+ next: position >= chunkUnits.length - 2 ? adjacent.next : null,
42
+ };
43
+ }
44
+ //# sourceMappingURL=chunkNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunkNavigation.js","sourceRoot":"","sources":["../shared/chunkNavigation.js"],"names":[],"mappings":"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"}