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,239 @@
1
+ "use client";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
+ import { useEffect, useId, useRef, useState } from "react";
15
+ import { ChatHistoryError, titleFromQuestion } from "../chatntc-history/types.js";
16
+ import { ChatNTCPanel } from "./ChatNTCPanel.js";
17
+ import { historyMessages, turnsFromHistory } from "./historyMessages.js";
18
+ import { HistoryIcon, NewChatIcon, SettingsIcon, TrashIcon } from "./ChatNTCIcons.js";
19
+ const errorMessage = (error) => error instanceof ChatHistoryError ? error.message : "La cronologia non è disponibile. I dati non sono stati cancellati.";
20
+ /** This component knows only ChatHistoryStore. No IndexedDB, provider, HTTP or key configuration. */
21
+ export function ChatNTCHistoryPanel(_a) {
22
+ var _b, _c;
23
+ var { historyStore: store, settings } = _a, panelProps = __rest(_a, ["historyStore", "settings"]);
24
+ const [rows, setRows] = useState([]);
25
+ const [session, setSession] = useState(null);
26
+ const [error, setError] = useState("");
27
+ const [loading, setLoading] = useState(true);
28
+ const [saving, setSaving] = useState(false);
29
+ const [generating, setGenerating] = useState(false);
30
+ const [expanded, setExpanded] = useState(null);
31
+ const [rename, setRename] = useState(null);
32
+ const [activeTitle, setActiveTitle] = useState("Nuova chat");
33
+ const [activeId, setActiveId] = useState(null);
34
+ const [saveFailed, setSaveFailed] = useState(false);
35
+ const [hasSnapshot, setHasSnapshot] = useState(false);
36
+ const [conflict, setConflict] = useState(false);
37
+ const historyId = useId();
38
+ const settingsId = useId();
39
+ const current = useRef(null);
40
+ const latest = useRef(null);
41
+ const queue = useRef(Promise.resolve());
42
+ const failed = useRef(false);
43
+ const writes = useRef(0);
44
+ const mounted = useRef(false);
45
+ const sequence = useRef(0);
46
+ const historyButton = useRef(null);
47
+ const settingsButton = useRef(null);
48
+ const renameButton = useRef(null);
49
+ const renaming = useRef(false);
50
+ const renameCancelled = useRef(false);
51
+ useEffect(() => {
52
+ mounted.current = true;
53
+ let cancelled = false;
54
+ void (async () => {
55
+ var _a, _b;
56
+ try {
57
+ const list = await store.listConversations();
58
+ const id = await store.getActiveConversationId();
59
+ const conversation = id ? await store.getConversation(id) : null;
60
+ if (id && !conversation)
61
+ throw new ChatHistoryError("CONFLICT");
62
+ if (cancelled)
63
+ return;
64
+ current.current = conversation;
65
+ setActiveId((_a = conversation === null || conversation === void 0 ? void 0 : conversation.id) !== null && _a !== void 0 ? _a : null);
66
+ setRows(list);
67
+ setSession({ key: ++sequence.current, conversation });
68
+ setActiveTitle((_b = conversation === null || conversation === void 0 ? void 0 : conversation.title) !== null && _b !== void 0 ? _b : "Nuova chat");
69
+ }
70
+ catch (reason) {
71
+ if (!cancelled) {
72
+ failed.current = true;
73
+ setSaveFailed(true);
74
+ setError(errorMessage(reason));
75
+ }
76
+ }
77
+ finally {
78
+ if (!cancelled)
79
+ setLoading(false);
80
+ }
81
+ })();
82
+ return () => { cancelled = true; mounted.current = false; };
83
+ }, [store]);
84
+ // Browser unload confirmation only while a save is outstanding or failed; no telemetry.
85
+ useEffect(() => {
86
+ if (!saving && !(saveFailed && hasSnapshot))
87
+ return;
88
+ const warn = (event) => { event.preventDefault(); event.returnValue = ""; };
89
+ window.addEventListener("beforeunload", warn);
90
+ return () => window.removeEventListener("beforeunload", warn);
91
+ }, [saving, saveFailed, hasSnapshot]);
92
+ function save(turns) {
93
+ latest.current = structuredClone(turns);
94
+ setHasSnapshot(true);
95
+ const messages = historyMessages(turns);
96
+ writes.current++;
97
+ setSaving(true);
98
+ setGenerating(turns.some((turn) => turn.status === "pending"));
99
+ queue.current = queue.current.then(async () => {
100
+ var _a, _b;
101
+ if (failed.current)
102
+ return;
103
+ try {
104
+ const previous = current.current;
105
+ const title = (previous === null || previous === void 0 ? void 0 : previous.messages.length) ? previous.title : titleFromQuestion((_b = (_a = turns[0]) === null || _a === void 0 ? void 0 : _a.question) !== null && _b !== void 0 ? _b : "");
106
+ const saved = previous
107
+ ? await store.updateConversation(previous.id, { title, messages }, previous.revision)
108
+ : await store.createConversation({ title, messages });
109
+ current.current = saved;
110
+ await store.setActiveConversationId(saved.id);
111
+ const list = await store.listConversations();
112
+ if (mounted.current) {
113
+ setRows(list);
114
+ setActiveTitle(saved.title);
115
+ setActiveId(saved.id);
116
+ }
117
+ }
118
+ catch (reason) {
119
+ failed.current = true;
120
+ if (mounted.current) {
121
+ setSaveFailed(true);
122
+ setConflict(reason instanceof ChatHistoryError && reason.code === "CONFLICT");
123
+ setError(errorMessage(reason));
124
+ }
125
+ }
126
+ }).finally(() => { writes.current--; if (mounted.current)
127
+ setSaving(writes.current > 0); });
128
+ }
129
+ async function act(operation) {
130
+ setLoading(true);
131
+ await queue.current;
132
+ if (failed.current) {
133
+ setLoading(false);
134
+ return;
135
+ }
136
+ try {
137
+ await operation();
138
+ }
139
+ catch (reason) {
140
+ setError(errorMessage(reason));
141
+ }
142
+ finally {
143
+ setLoading(false);
144
+ }
145
+ }
146
+ function select(conversation) {
147
+ var _a, _b;
148
+ current.current = conversation;
149
+ latest.current = null;
150
+ setActiveId((_a = conversation === null || conversation === void 0 ? void 0 : conversation.id) !== null && _a !== void 0 ? _a : null);
151
+ setHasSnapshot(false);
152
+ setSession({ key: ++sequence.current, conversation });
153
+ setActiveTitle((_b = conversation === null || conversation === void 0 ? void 0 : conversation.title) !== null && _b !== void 0 ? _b : "Nuova chat");
154
+ setGenerating(false);
155
+ setExpanded(null);
156
+ setRename(null);
157
+ setError("");
158
+ }
159
+ function closeAccordion(kind) {
160
+ setExpanded(null);
161
+ window.requestAnimationFrame(() => { var _a; return (_a = (kind === "history" ? historyButton : settingsButton).current) === null || _a === void 0 ? void 0 : _a.focus(); });
162
+ }
163
+ function cancelRename() {
164
+ renameCancelled.current = true;
165
+ setRename(null);
166
+ window.requestAnimationFrame(() => { var _a; return (_a = renameButton.current) === null || _a === void 0 ? void 0 : _a.focus(); });
167
+ }
168
+ async function commitRename() {
169
+ var _a;
170
+ if (renameCancelled.current) {
171
+ renameCancelled.current = false;
172
+ return;
173
+ }
174
+ if (renaming.current)
175
+ return;
176
+ const title = (_a = rename === null || rename === void 0 ? void 0 : rename.trim()) !== null && _a !== void 0 ? _a : "";
177
+ const previous = current.current;
178
+ if (!previous || !title) {
179
+ cancelRename();
180
+ return;
181
+ }
182
+ if (title === activeTitle) {
183
+ cancelRename();
184
+ return;
185
+ }
186
+ renaming.current = true;
187
+ await act(async () => {
188
+ const updated = await store.updateConversation(previous.id, { title }, previous.revision);
189
+ current.current = updated;
190
+ setActiveTitle(updated.title);
191
+ setRows(await store.listConversations());
192
+ setRename(null);
193
+ });
194
+ renaming.current = false;
195
+ window.requestAnimationFrame(() => { var _a; return (_a = renameButton.current) === null || _a === void 0 ? void 0 : _a.focus(); });
196
+ }
197
+ const locked = loading || saving || saveFailed;
198
+ const historyOpen = expanded === "history";
199
+ const settingsOpen = expanded === "settings";
200
+ const visibleStatus = loading ? "Apertura…" : saving ? "Salvataggio…" : error ? "Cronologia da verificare" : "";
201
+ return _jsxs("div", { className: "scv-chat-history-shell", "data-history-state": loading ? "loading" : saving ? "saving" : error ? "error" : "idle", children: [_jsxs("div", { className: "scv-chat-history-actions", children: [_jsxs("button", { className: "scv-chat-strip-button", type: "button", disabled: locked || generating, onClick: () => void act(async () => { await store.setActiveConversationId(null); select(null); }), children: [_jsx(NewChatIcon, {}), "Nuova chat"] }), _jsxs("button", { ref: historyButton, className: "scv-chat-strip-button", type: "button", "aria-controls": historyId, "aria-expanded": historyOpen, onClick: () => {
202
+ setExpanded(historyOpen ? null : "history");
203
+ if (!historyOpen)
204
+ void store.listConversations().then(setRows).catch((reason) => setError(errorMessage(reason)));
205
+ }, children: [_jsx(HistoryIcon, {}), "Cronologia chat"] }), settings && _jsxs("button", { ref: settingsButton, className: "scv-chat-strip-button", type: "button", "aria-controls": settingsId, "aria-expanded": settingsOpen, onClick: () => setExpanded(settingsOpen ? null : "settings"), children: [_jsx(SettingsIcon, {}), "Impostazioni AI"] }), visibleStatus && _jsx("span", { role: "status", children: visibleStatus })] }), error && _jsxs("div", { className: "scv-chat-history-error", role: "alert", children: [_jsx("p", { children: error }), hasSnapshot && saveFailed && _jsxs(_Fragment, { children: [_jsx("p", { children: "Le modifiche restano visibili in questa pagina. Non chiuderla finch\u00E9 non sono salvate." }), _jsx("button", { type: "button", disabled: saving, onClick: () => { failed.current = false; setSaveFailed(false); setError(""); save(latest.current); }, children: "Riprova salvataggio" }), conflict && _jsx("button", { type: "button", disabled: saving || generating, onClick: () => { current.current = null; failed.current = false; setSaveFailed(false); setConflict(false); setError(""); save(latest.current); }, children: "Salva come nuova conversazione" })] }), !session && _jsx("button", { type: "button", onClick: () => window.location.reload(), children: "Riprova apertura" })] }), _jsx("div", { id: historyId, className: "scv-chat-history-accordion", "data-expanded": historyOpen, "aria-hidden": !historyOpen, inert: !historyOpen, onKeyDown: (event) => {
206
+ if (event.key === "Escape") {
207
+ event.preventDefault();
208
+ closeAccordion("history");
209
+ }
210
+ }, children: _jsx("section", { className: "scv-chat-history-list", "aria-label": "Cronologia conversazioni", children: rows.length === 0 ? _jsx("p", { children: "Nessuna conversazione salvata." }) : _jsx("ul", { children: rows.map((row) => _jsxs("li", { children: [_jsxs("button", { type: "button", disabled: locked || generating, "aria-current": activeId === row.id ? "true" : undefined, onClick: () => void act(async () => {
211
+ const conversation = await store.getConversation(row.id);
212
+ if (!conversation)
213
+ throw new ChatHistoryError("CONFLICT");
214
+ await store.setActiveConversationId(row.id);
215
+ select(conversation);
216
+ }), children: [_jsx("span", { children: row.title }), _jsx("time", { dateTime: row.updatedAt, children: new Date(row.updatedAt).toLocaleDateString("it-IT") })] }), _jsx("button", { className: "scv-chat-history-delete", type: "button", "aria-label": `Elimina ${row.title}`, title: `Elimina ${row.title}`, disabled: locked || generating, onClick: () => void act(async () => {
217
+ var _a;
218
+ await store.deleteConversation(row.id, row.revision);
219
+ if (((_a = current.current) === null || _a === void 0 ? void 0 : _a.id) === row.id)
220
+ select(null);
221
+ setRows(await store.listConversations());
222
+ }), children: _jsx(TrashIcon, {}) })] }, row.id)) }) }) }), settings && _jsx("div", { id: settingsId, className: "scv-chat-settings-accordion", "data-expanded": settingsOpen, "aria-hidden": !settingsOpen, inert: !settingsOpen, onKeyDown: (event) => {
223
+ if (event.key === "Escape") {
224
+ event.preventDefault();
225
+ closeAccordion("settings");
226
+ }
227
+ }, children: _jsx("section", { className: "scv-chat-settings-content", "aria-label": "Impostazioni AI", children: settings }) }), session && _jsxs(_Fragment, { children: [_jsx("div", { className: "scv-chat-history-title", children: rename !== null ? _jsx("form", { onSubmit: (event) => { event.preventDefault(); void commitRename(); }, children: _jsx("input", { "aria-label": "Titolo conversazione", maxLength: 144, value: rename, onChange: (event) => setRename(event.target.value), onBlur: () => void commitRename(), onKeyDown: (event) => {
228
+ if (event.key === "Enter") {
229
+ event.preventDefault();
230
+ void commitRename();
231
+ }
232
+ else if (event.key === "Escape") {
233
+ event.preventDefault();
234
+ cancelRename();
235
+ }
236
+ }, autoFocus: true }) })
237
+ : _jsxs(_Fragment, { children: [_jsx("strong", { children: activeTitle }), _jsx("button", { ref: renameButton, className: "scv-chat-rename-button", type: "button", "aria-label": "Rinomina conversazione", title: "Rinomina conversazione", disabled: locked || generating || !activeId, onClick: () => { renameCancelled.current = false; setRename(activeTitle); }, children: _jsxs("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("path", { d: "m4 16-.8 4 4-.8L18.4 8 16 5.6 4 16Z" }), _jsx("path", { d: "m14.8 6.8 2.4 2.4" })] }) })] }) }), _jsx("div", { className: "scv-chat-history-content", children: _jsx(ChatNTCPanel, Object.assign({}, panelProps, { initialTurns: turnsFromHistory((_c = (_b = session.conversation) === null || _b === void 0 ? void 0 : _b.messages) !== null && _c !== void 0 ? _c : []), historyEnabled: true, showNewChatAction: false, disabled: locked, onTurnsChange: save, onNewChat: () => void act(async () => { await store.setActiveConversationId(null); select(null); }) }), session.key) })] })] });
238
+ }
239
+ //# sourceMappingURL=ChatNTCHistoryPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatNTCHistoryPanel.js","sourceRoot":"","sources":["../../shared/chatntc-ui/ChatNTCHistoryPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface IconProps {
2
+ className?: string;
3
+ }
4
+ export declare function NewChatIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function HistoryIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function SettingsIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function TrashIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function ApplySettingsIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function CloseIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function NewChatIcon({ className = "scv-chat-control-icon" }) {
3
+ return _jsxs("svg", { className: className, viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("path", { d: "M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8" }), _jsx("path", { d: "M14 3v5h5M13 17.5l5.2-5.2 2 2-5.2 5.2-3 .7.8-2.7Z" })] });
4
+ }
5
+ export function HistoryIcon({ className = "scv-chat-control-icon" }) {
6
+ return _jsxs("svg", { className: className, viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("path", { d: "M3 12a9 9 0 1 0 3-6.7" }), _jsx("path", { d: "M3 3v6h6M12 7v5l3 2" })] });
7
+ }
8
+ export function SettingsIcon({ className = "scv-chat-control-icon" }) {
9
+ return _jsxs("svg", { className: className, viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("path", { d: "M10 2h4l.6 2.6c.6.2 1.2.5 1.7 1l2.5-.8 2 3.4-1.9 1.8c.1.7.1 1.3 0 2l1.9 1.8-2 3.4-2.5-.8c-.5.4-1.1.8-1.7 1L14 21h-4l-.6-2.6c-.6-.2-1.2-.6-1.7-1l-2.5.8-2-3.4L5.1 13c-.1-.7-.1-1.3 0-2L3.2 9.2l2-3.4 2.5.8c.5-.5 1.1-.8 1.7-1L10 2Z" }), _jsx("circle", { cx: "12", cy: "11.5", r: "2.7" })] });
10
+ }
11
+ export function TrashIcon({ className = "scv-chat-delete-icon" }) {
12
+ return _jsx("svg", { className: className, viewBox: "0 0 24 24", "aria-hidden": "true", children: _jsx("path", { d: "M4 7h16M9 7V4h6v3M7 7l1 13h8l1-13M10 11v5M14 11v5" }) });
13
+ }
14
+ export function ApplySettingsIcon({ className = "scv-ai-action-icon" }) {
15
+ return _jsxs("svg", { className: className, viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("circle", { cx: "12", cy: "12", r: "8.5" }), _jsx("path", { d: "m8.2 12.2 2.4 2.4 5.4-5.4" })] });
16
+ }
17
+ export function CloseIcon({ className = "scv-tools-close-icon" }) {
18
+ return _jsx("svg", { className: className, viewBox: "0 0 24 24", "aria-hidden": "true", children: _jsx("path", { d: "m6 6 12 12M18 6 6 18" }) });
19
+ }
20
+ //# sourceMappingURL=ChatNTCIcons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatNTCIcons.js","sourceRoot":"","sources":["../../shared/chatntc-ui/ChatNTCIcons.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,uBAAuB,EAAa;IAC5E,OAAO,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,iBAAa,MAAM,aACtE,eAAM,CAAC,EAAC,0CAA0C,GAAG,EACrD,eAAM,CAAC,EAAC,mDAAmD,GAAG,IAC1D,CAAC;AACT,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,uBAAuB,EAAa;IAC5E,OAAO,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,iBAAa,MAAM,aACtE,eAAM,CAAC,EAAC,uBAAuB,GAAG,EAClC,eAAM,CAAC,EAAC,qBAAqB,GAAG,IAC5B,CAAC;AACT,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,GAAG,uBAAuB,EAAa;IAC7E,OAAO,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,iBAAa,MAAM,aACtE,eAAM,CAAC,EAAC,oOAAoO,GAAG,EAC/O,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,EAAC,CAAC,EAAC,KAAK,GAAG,IAChC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,GAAG,sBAAsB,EAAa;IACzE,OAAO,cAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,iBAAa,MAAM,YACtE,eAAM,CAAC,EAAC,mDAAmD,GAAG,GAC1D,CAAC;AACT,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAE,SAAS,GAAG,oBAAoB,EAAa;IAC/E,OAAO,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,iBAAa,MAAM,aACtE,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,KAAK,GAAG,EAClC,eAAM,CAAC,EAAC,2BAA2B,GAAG,IAClC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,GAAG,sBAAsB,EAAa;IACzE,OAAO,cAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,iBAAa,MAAM,YAAC,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAAM,CAAC;AACnH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function ChatNTCLoadingSkeleton(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function ChatNTCLoadingSkeleton() {
3
+ return _jsxs("div", { className: "scv-chat-loading", role: "status", "aria-live": "polite", children: [_jsx("span", { className: "scv-chat-loading-label", children: "Sto consultando la normativa\u2026" }), _jsxs("span", { className: "scv-chat-loading-lines", "aria-hidden": "true", children: [_jsx("i", {}), _jsx("i", {}), _jsx("i", {}), _jsx("i", {})] })] });
4
+ }
5
+ //# sourceMappingURL=ChatNTCLoadingSkeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatNTCLoadingSkeleton.js","sourceRoot":"","sources":["../../shared/chatntc-ui/ChatNTCLoadingSkeleton.tsx"],"names":[],"mappings":";AAAA,MAAM,UAAU,sBAAsB;IACpC,OAAO,eAAK,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,QAAQ,eAAW,QAAQ,aACvE,eAAM,SAAS,EAAC,wBAAwB,mDAAqC,EAC7E,gBAAM,SAAS,EAAC,wBAAwB,iBAAa,MAAM,aACzD,aAAK,EAAA,aAAK,EAAA,aAAK,EAAA,aAAK,IACf,IACH,CAAC;AACT,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ChatNTCReference } from "../chatntc/types.js";
2
+ import type { ViewerTarget } from "../permalinks.js";
3
+ export interface ChatNTCMarkdownProps {
4
+ markdown: string;
5
+ references?: readonly ChatNTCReference[];
6
+ hrefForTarget?: (target: ViewerTarget) => string;
7
+ onNavigate?: (target: ViewerTarget) => void | Promise<void>;
8
+ onNavigationError?: () => void;
9
+ }
10
+ /**
11
+ * Controlled Markdown surface for model output.
12
+ * Raw HTML is deliberately skipped; URLs retain react-markdown's safe transform.
13
+ */
14
+ export declare function ChatNTCMarkdown({ markdown, references, hrefForTarget, onNavigate, onNavigationError }: ChatNTCMarkdownProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,112 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import ReactMarkdown from "react-markdown";
14
+ import rehypeKatex from "rehype-katex";
15
+ import remarkGfm from "remark-gfm";
16
+ import remarkMath from "remark-math";
17
+ import { findCrossReferences } from "../crossReferences.js";
18
+ import { viewerTargetForCitation } from "../chatntc/evidence.js";
19
+ const skippedNodeTypes = new Set(["code", "inlineCode", "inlineMath", "link", "linkReference", "math"]);
20
+ const normalizedNumber = (value) => value.replace(/^C\.?/iu, "").replace(/[.\s]+$/gu, "").toUpperCase();
21
+ function referenceKind(reference) {
22
+ var _a, _b, _c;
23
+ if ("kind" in reference)
24
+ return reference.kind;
25
+ if ((_a = reference.assetId) === null || _a === void 0 ? void 0 : _a.includes(":formula:"))
26
+ return "formula";
27
+ if ((_b = reference.assetId) === null || _b === void 0 ? void 0 : _b.includes(":table:"))
28
+ return "table";
29
+ if ((_c = reference.assetId) === null || _c === void 0 ? void 0 : _c.includes(":figure:"))
30
+ return "figure";
31
+ return reference.blockId ? "block" : "unit";
32
+ }
33
+ function documentMention(value, start) {
34
+ const prefix = value.slice(Math.max(0, start - 28), start);
35
+ if (/(?:Circolare(?:\s+7\/2019)?|Circ\.)\s*$/iu.test(prefix))
36
+ return "circ2019";
37
+ if (/NTC(?:\s+2018)?\s*$/iu.test(prefix))
38
+ return "ntc2018";
39
+ return null;
40
+ }
41
+ function matchingLink(found, value, links) {
42
+ var _a;
43
+ const document = (_a = found.documentHint) !== null && _a !== void 0 ? _a : documentMention(value, found.start);
44
+ let candidates = links.filter(({ reference }) => {
45
+ const kind = referenceKind(reference);
46
+ const sameKind = found.kind === "unit" ? kind === "unit" || kind === "block" : kind === found.kind;
47
+ const number = found.kind === "unit" ? reference.numbering : reference.assetNumber;
48
+ return sameKind && typeof number === "string" && normalizedNumber(number) === found.number
49
+ && (!document || reference.document === document);
50
+ });
51
+ if (found.kind === "unit" && candidates.some(({ reference }) => referenceKind(reference) === "unit")) {
52
+ candidates = candidates.filter(({ reference }) => referenceKind(reference) === "unit");
53
+ }
54
+ const targets = new Set(candidates.map(({ target }) => JSON.stringify(target)));
55
+ return targets.size === 1 ? candidates[0] : undefined;
56
+ }
57
+ function linkifyText(node, links) {
58
+ var _a;
59
+ const value = (_a = node.value) !== null && _a !== void 0 ? _a : "";
60
+ const replacements = findCrossReferences(value)
61
+ .map((found) => ({ found, link: matchingLink(found, value, links) }))
62
+ .filter((item) => Boolean(item.link));
63
+ if (!replacements.length)
64
+ return [node];
65
+ const nodes = [];
66
+ let cursor = 0;
67
+ for (const { found, link } of replacements) {
68
+ if (found.start > cursor)
69
+ nodes.push({ type: "text", value: value.slice(cursor, found.start) });
70
+ nodes.push({ type: "link", url: link.href, data: { hProperties: { className: "scv-chat-reference-link" } },
71
+ children: [{ type: "text", value: value.slice(found.start, found.end) }] });
72
+ cursor = found.end;
73
+ }
74
+ if (cursor < value.length)
75
+ nodes.push({ type: "text", value: value.slice(cursor) });
76
+ return nodes;
77
+ }
78
+ function remarkVerifiedReferences({ links }) {
79
+ return (tree) => {
80
+ function visit(node) {
81
+ if (!node.children || skippedNodeTypes.has(node.type))
82
+ return;
83
+ node.children = node.children.flatMap((child) => child.type === "text" ? linkifyText(child, links) : (visit(child), [child]));
84
+ }
85
+ visit(tree);
86
+ };
87
+ }
88
+ /**
89
+ * Controlled Markdown surface for model output.
90
+ * Raw HTML is deliberately skipped; URLs retain react-markdown's safe transform.
91
+ */
92
+ export function ChatNTCMarkdown({ markdown, references = [], hrefForTarget, onNavigate, onNavigationError }) {
93
+ const links = hrefForTarget ? references.map((reference) => {
94
+ const target = viewerTargetForCitation(reference);
95
+ return { reference, target, href: hrefForTarget(target) };
96
+ }) : [];
97
+ const targetByHref = new Map(links.map((link) => [link.href, link.target]));
98
+ const components = {
99
+ a(_a) {
100
+ var { href } = _a, props = __rest(_a, ["href"]);
101
+ const target = href ? targetByHref.get(href) : undefined;
102
+ return _jsx("a", Object.assign({}, props, { href: href, onClick: target && onNavigate ? (event) => {
103
+ if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)
104
+ return;
105
+ event.preventDefault();
106
+ void Promise.resolve().then(() => onNavigate(target)).catch(() => onNavigationError === null || onNavigationError === void 0 ? void 0 : onNavigationError());
107
+ } : undefined }));
108
+ },
109
+ };
110
+ return _jsx("div", { className: "scv-chat-markdown", children: _jsx(ReactMarkdown, { skipHtml: true, components: components, remarkPlugins: [remarkGfm, remarkMath, [remarkVerifiedReferences, { links }]], rehypePlugins: [[rehypeKatex, { throwOnError: false, strict: "warn", trust: false }]], children: markdown }) });
111
+ }
112
+ //# sourceMappingURL=ChatNTCMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatNTCMarkdown.js","sourceRoot":"","sources":["../../shared/chatntc-ui/ChatNTCMarkdown.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ChatNTCClassification, ChatNTCRetrievalContext } from "../chatntc/types.js";
2
+ import type { ViewerTarget } from "../permalinks.js";
3
+ import { type ChatResult, type ChatTransport } from "./transport.js";
4
+ export declare const CHATNTC_CLASSIFICATION_LABELS: Record<ChatNTCClassification, string>;
5
+ export interface ChatNTCTurn {
6
+ id: string;
7
+ question: string;
8
+ timestamp: string;
9
+ answeredAt?: string;
10
+ context?: ChatNTCRetrievalContext;
11
+ result?: ChatResult;
12
+ status: "pending" | "complete" | "error" | "cancelled";
13
+ error?: string;
14
+ }
15
+ export interface ChatNTCPanelProps {
16
+ transport: ChatTransport;
17
+ context?: ChatNTCRetrievalContext | null;
18
+ onNavigate: (target: ViewerTarget) => void | Promise<void>;
19
+ hrefForTarget: (target: ViewerTarget) => string;
20
+ /** Optional controlled lifecycle, independent of any storage implementation. Remount to switch sessions. */
21
+ initialTurns?: ChatNTCTurn[];
22
+ onTurnsChange?: (turns: ChatNTCTurn[]) => void;
23
+ onNewChat?: () => void;
24
+ historyEnabled?: boolean;
25
+ showNewChatAction?: boolean;
26
+ disabled?: boolean;
27
+ currentCorpusFingerprint?: string;
28
+ }
29
+ export declare function ChatNTCPanel({ transport, onNavigate, hrefForTarget, initialTurns, onTurnsChange, onNewChat, historyEnabled, showNewChatAction, disabled, currentCorpusFingerprint }: ChatNTCPanelProps): import("react/jsx-runtime").JSX.Element;