structural-codes-viewer 0.1.0-alpha.2 → 0.1.0-alpha.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.
- package/README.md +34 -101
- package/package-dist/styles.css +7 -172
- package/package.json +4 -46
- package/package-dist/chatntc/canonicalization.d.ts +0 -15
- package/package-dist/chatntc/canonicalization.js +0 -107
- package/package-dist/chatntc/canonicalization.js.map +0 -1
- package/package-dist/chatntc/directives.d.ts +0 -2
- package/package-dist/chatntc/directives.js +0 -38
- package/package-dist/chatntc/directives.js.map +0 -1
- package/package-dist/chatntc/evidence.d.ts +0 -17
- package/package-dist/chatntc/evidence.js +0 -116
- package/package-dist/chatntc/evidence.js.map +0 -1
- package/package-dist/chatntc/index.d.ts +0 -10
- package/package-dist/chatntc/index.js +0 -9
- package/package-dist/chatntc/index.js.map +0 -1
- package/package-dist/chatntc/issueCategories.d.ts +0 -2
- package/package-dist/chatntc/issueCategories.js +0 -11
- package/package-dist/chatntc/issueCategories.js.map +0 -1
- package/package-dist/chatntc/policy.d.ts +0 -35
- package/package-dist/chatntc/policy.js +0 -36
- package/package-dist/chatntc/policy.js.map +0 -1
- package/package-dist/chatntc/provider.d.ts +0 -42
- package/package-dist/chatntc/provider.js +0 -2
- package/package-dist/chatntc/provider.js.map +0 -1
- package/package-dist/chatntc/responseContract.d.ts +0 -52
- package/package-dist/chatntc/responseContract.js +0 -73
- package/package-dist/chatntc/responseContract.js.map +0 -1
- package/package-dist/chatntc/retrieval.d.ts +0 -5
- package/package-dist/chatntc/retrieval.js +0 -220
- package/package-dist/chatntc/retrieval.js.map +0 -1
- package/package-dist/chatntc/types.d.ts +0 -240
- package/package-dist/chatntc/types.js +0 -2
- package/package-dist/chatntc/types.js.map +0 -1
- package/package-dist/chatntc/validation.d.ts +0 -8
- package/package-dist/chatntc/validation.js +0 -299
- package/package-dist/chatntc/validation.js.map +0 -1
- package/package-dist/chatntc/viewerArtifacts.d.ts +0 -14
- package/package-dist/chatntc/viewerArtifacts.js +0 -168
- package/package-dist/chatntc/viewerArtifacts.js.map +0 -1
- package/package-dist/chatntc-history/index.d.ts +0 -2
- package/package-dist/chatntc-history/index.js +0 -3
- package/package-dist/chatntc-history/index.js.map +0 -1
- package/package-dist/chatntc-history/indexedDb.d.ts +0 -27
- package/package-dist/chatntc-history/indexedDb.js +0 -258
- package/package-dist/chatntc-history/indexedDb.js.map +0 -1
- package/package-dist/chatntc-history/schema.d.ts +0 -5
- package/package-dist/chatntc-history/schema.js +0 -102
- package/package-dist/chatntc-history/schema.js.map +0 -1
- package/package-dist/chatntc-history/types.d.ts +0 -78
- package/package-dist/chatntc-history/types.js +0 -23
- package/package-dist/chatntc-history/types.js.map +0 -1
- package/package-dist/chatntc-ui/ChatNTCHistoryPanel.d.ts +0 -9
- package/package-dist/chatntc-ui/ChatNTCHistoryPanel.js +0 -239
- package/package-dist/chatntc-ui/ChatNTCHistoryPanel.js.map +0 -1
- package/package-dist/chatntc-ui/ChatNTCIcons.d.ts +0 -10
- package/package-dist/chatntc-ui/ChatNTCIcons.js +0 -20
- package/package-dist/chatntc-ui/ChatNTCIcons.js.map +0 -1
- package/package-dist/chatntc-ui/ChatNTCLoadingSkeleton.d.ts +0 -1
- package/package-dist/chatntc-ui/ChatNTCLoadingSkeleton.js +0 -5
- package/package-dist/chatntc-ui/ChatNTCLoadingSkeleton.js.map +0 -1
- package/package-dist/chatntc-ui/ChatNTCMarkdown.d.ts +0 -14
- package/package-dist/chatntc-ui/ChatNTCMarkdown.js +0 -112
- package/package-dist/chatntc-ui/ChatNTCMarkdown.js.map +0 -1
- package/package-dist/chatntc-ui/ChatNTCPanel.d.ts +0 -29
- package/package-dist/chatntc-ui/ChatNTCPanel.js +0 -241
- package/package-dist/chatntc-ui/ChatNTCPanel.js.map +0 -1
- package/package-dist/chatntc-ui/historyMessages.d.ts +0 -5
- package/package-dist/chatntc-ui/historyMessages.js +0 -53
- package/package-dist/chatntc-ui/historyMessages.js.map +0 -1
- package/package-dist/chatntc-ui/index.d.ts +0 -3
- package/package-dist/chatntc-ui/index.js +0 -4
- package/package-dist/chatntc-ui/index.js.map +0 -1
- package/package-dist/chatntc-ui/transport.d.ts +0 -51
- package/package-dist/chatntc-ui/transport.js +0 -9
- package/package-dist/chatntc-ui/transport.js.map +0 -1
|
@@ -1,258 +0,0 @@
|
|
|
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 { migrateConversationV1, readConversation } from "./schema.js";
|
|
13
|
-
import { ChatHistoryError } from "./types.js";
|
|
14
|
-
const DATABASE_VERSION = 2;
|
|
15
|
-
const STORES = ["conversations", "state"];
|
|
16
|
-
function stored(value) {
|
|
17
|
-
try {
|
|
18
|
-
return readConversation(value);
|
|
19
|
-
}
|
|
20
|
-
catch (_a) {
|
|
21
|
-
throw new ChatHistoryError("CORRUPT");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const summary = (_a) => {
|
|
25
|
-
var { messages } = _a, conversation = __rest(_a, ["messages"]);
|
|
26
|
-
return (Object.assign(Object.assign({}, conversation), { messageCount: messages.length }));
|
|
27
|
-
};
|
|
28
|
-
/** Opt-in and lazy: importing or constructing this adapter does not open a database. */
|
|
29
|
-
export class IndexedDbChatHistoryStore {
|
|
30
|
-
constructor(options = {}) {
|
|
31
|
-
this.options = options;
|
|
32
|
-
}
|
|
33
|
-
open() {
|
|
34
|
-
if (this.opening)
|
|
35
|
-
return this.opening;
|
|
36
|
-
const opening = new Promise((resolve, reject) => {
|
|
37
|
-
var _a, _b;
|
|
38
|
-
let factory;
|
|
39
|
-
try {
|
|
40
|
-
factory = (_a = this.options.indexedDB) !== null && _a !== void 0 ? _a : globalThis.indexedDB;
|
|
41
|
-
}
|
|
42
|
-
catch ( /* Browser storage policy. */_c) { /* Browser storage policy. */ }
|
|
43
|
-
if (!factory) {
|
|
44
|
-
reject(new ChatHistoryError("UNAVAILABLE"));
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
let request;
|
|
48
|
-
try {
|
|
49
|
-
request = factory.open((_b = this.options.name) !== null && _b !== void 0 ? _b : "structural-codes-chatntc", DATABASE_VERSION);
|
|
50
|
-
}
|
|
51
|
-
catch (_d) {
|
|
52
|
-
reject(new ChatHistoryError("UNAVAILABLE"));
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
let failed = false;
|
|
56
|
-
let upgradeFailed = false;
|
|
57
|
-
request.onblocked = () => { failed = true; reject(new ChatHistoryError("BLOCKED")); };
|
|
58
|
-
request.onupgradeneeded = (event) => {
|
|
59
|
-
const db = request.result;
|
|
60
|
-
const tx = request.transaction;
|
|
61
|
-
const abort = () => { upgradeFailed = true; tx.abort(); };
|
|
62
|
-
if (failed) {
|
|
63
|
-
abort();
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
try {
|
|
67
|
-
if (event.oldVersion === 0) {
|
|
68
|
-
db.createObjectStore("conversations", { keyPath: "id" }).createIndex("updatedAt", "updatedAt");
|
|
69
|
-
db.createObjectStore("state");
|
|
70
|
-
}
|
|
71
|
-
else if (event.oldVersion === 1) {
|
|
72
|
-
if (!STORES.every((name) => db.objectStoreNames.contains(name))) {
|
|
73
|
-
abort();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const conversations = tx.objectStore("conversations");
|
|
77
|
-
if (!conversations.indexNames.contains("updatedAt"))
|
|
78
|
-
conversations.createIndex("updatedAt", "updatedAt");
|
|
79
|
-
const cursor = conversations.openCursor();
|
|
80
|
-
cursor.onsuccess = () => {
|
|
81
|
-
try {
|
|
82
|
-
if (!cursor.result)
|
|
83
|
-
return;
|
|
84
|
-
cursor.result.update(migrateConversationV1(cursor.result.value));
|
|
85
|
-
cursor.result.continue();
|
|
86
|
-
}
|
|
87
|
-
catch (_a) {
|
|
88
|
-
abort();
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
else
|
|
93
|
-
abort();
|
|
94
|
-
}
|
|
95
|
-
catch (_a) {
|
|
96
|
-
abort();
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
request.onerror = () => { var _a; failed = true; reject(new ChatHistoryError(upgradeFailed || ((_a = request.error) === null || _a === void 0 ? void 0 : _a.name) === "VersionError" ? "UPGRADE_FAILED" : "UNAVAILABLE")); };
|
|
100
|
-
request.onsuccess = () => {
|
|
101
|
-
const db = request.result;
|
|
102
|
-
if (failed) {
|
|
103
|
-
db.close();
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (!STORES.every((name) => db.objectStoreNames.contains(name))) {
|
|
107
|
-
db.close();
|
|
108
|
-
reject(new ChatHistoryError("CORRUPT"));
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
db.onversionchange = () => { db.close(); this.opening = undefined; };
|
|
112
|
-
db.onclose = () => { this.opening = undefined; };
|
|
113
|
-
resolve(db);
|
|
114
|
-
};
|
|
115
|
-
});
|
|
116
|
-
this.opening = opening;
|
|
117
|
-
void opening.catch(() => { if (this.opening === opening)
|
|
118
|
-
this.opening = undefined; });
|
|
119
|
-
return opening;
|
|
120
|
-
}
|
|
121
|
-
async close() { const db = await this.opening; db === null || db === void 0 ? void 0 : db.close(); this.opening = undefined; }
|
|
122
|
-
/** Resolve only after commit. All IDB requests are queued synchronously in request handlers. */
|
|
123
|
-
async transaction(mode, work) {
|
|
124
|
-
const db = await this.open();
|
|
125
|
-
return new Promise((resolve, reject) => {
|
|
126
|
-
let tx;
|
|
127
|
-
try {
|
|
128
|
-
tx = db.transaction(STORES, mode);
|
|
129
|
-
}
|
|
130
|
-
catch (_a) {
|
|
131
|
-
reject(new ChatHistoryError("UNAVAILABLE"));
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
let result;
|
|
135
|
-
let failure;
|
|
136
|
-
const guard = (callback) => () => {
|
|
137
|
-
try {
|
|
138
|
-
callback();
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
failure = error instanceof ChatHistoryError ? error : new ChatHistoryError(mode === "readonly" ? "CORRUPT" : "WRITE_FAILED");
|
|
142
|
-
tx.abort();
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
tx.oncomplete = () => resolve(result);
|
|
146
|
-
tx.onabort = () => reject(failure !== null && failure !== void 0 ? failure : new ChatHistoryError(mode === "readonly" ? "CORRUPT" : "WRITE_FAILED"));
|
|
147
|
-
guard(() => work(tx, (value) => { result = value; }, guard))();
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
listConversations() {
|
|
151
|
-
return this.transaction("readonly", (tx, done, guard) => {
|
|
152
|
-
const request = tx.objectStore("conversations").openCursor();
|
|
153
|
-
const rows = [];
|
|
154
|
-
request.onsuccess = guard(() => {
|
|
155
|
-
if (request.result) {
|
|
156
|
-
rows.push(summary(stored(request.result.value)));
|
|
157
|
-
request.result.continue();
|
|
158
|
-
}
|
|
159
|
-
else
|
|
160
|
-
done(rows.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt) || a.id.localeCompare(b.id)));
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
getConversation(id) {
|
|
165
|
-
return this.transaction("readonly", (tx, done, guard) => {
|
|
166
|
-
const request = tx.objectStore("conversations").get(id);
|
|
167
|
-
request.onsuccess = guard(() => done(request.result === undefined ? null : stored(request.result)));
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
async createConversation(input) {
|
|
171
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
172
|
-
const now = ((_c = (_b = (_a = this.options).now) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : new Date()).toISOString();
|
|
173
|
-
const conversation = readConversation(Object.assign(Object.assign({}, input), { id: (_f = (_e = (_d = this.options).id) === null || _e === void 0 ? void 0 : _e.call(_d)) !== null && _f !== void 0 ? _f : crypto.randomUUID(), schemaVersion: 2, revision: 1, createdAt: now, updatedAt: now, messages: (_g = input.messages) !== null && _g !== void 0 ? _g : [] }));
|
|
174
|
-
return this.transaction("readwrite", (tx, done) => { tx.objectStore("conversations").add(conversation); done(conversation); });
|
|
175
|
-
}
|
|
176
|
-
updateConversation(id, patch, expectedRevision) {
|
|
177
|
-
// Validate/copy the caller's data before an asynchronous transaction can observe mutations.
|
|
178
|
-
if (Object.keys(patch).some((key) => key !== "title" && key !== "messages"))
|
|
179
|
-
return Promise.reject(new ChatHistoryError("INVALID_DATA"));
|
|
180
|
-
const snapshot = structuredClone(patch);
|
|
181
|
-
return this.transaction("readwrite", (tx, done, guard) => {
|
|
182
|
-
const store = tx.objectStore("conversations");
|
|
183
|
-
const request = store.get(id);
|
|
184
|
-
request.onsuccess = guard(() => {
|
|
185
|
-
var _a, _b, _c;
|
|
186
|
-
if (!request.result)
|
|
187
|
-
throw new ChatHistoryError("CONFLICT");
|
|
188
|
-
const previous = stored(request.result);
|
|
189
|
-
if (previous.revision !== expectedRevision)
|
|
190
|
-
throw new ChatHistoryError("CONFLICT");
|
|
191
|
-
const updatedAt = new Date(Math.max(((_c = (_b = (_a = this.options).now) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : new Date()).getTime(), Date.parse(previous.updatedAt) + 1)).toISOString();
|
|
192
|
-
const next = readConversation(Object.assign(Object.assign(Object.assign({}, previous), snapshot), { updatedAt, revision: previous.revision + 1 }));
|
|
193
|
-
store.put(next);
|
|
194
|
-
done(next);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
deleteConversation(id, expectedRevision) {
|
|
199
|
-
return this.transaction("readwrite", (tx, done, guard) => {
|
|
200
|
-
const store = tx.objectStore("conversations");
|
|
201
|
-
const request = store.get(id);
|
|
202
|
-
request.onsuccess = guard(() => {
|
|
203
|
-
if (!request.result || stored(request.result).revision !== expectedRevision)
|
|
204
|
-
throw new ChatHistoryError("CONFLICT");
|
|
205
|
-
store.delete(id);
|
|
206
|
-
const active = tx.objectStore("state").get("activeConversationId");
|
|
207
|
-
active.onsuccess = guard(() => { if (active.result === id)
|
|
208
|
-
tx.objectStore("state").put(null, "activeConversationId"); done(); });
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
deleteAllConversations(expected) {
|
|
213
|
-
const snapshot = structuredClone(expected);
|
|
214
|
-
return this.transaction("readwrite", (tx, done, guard) => {
|
|
215
|
-
const store = tx.objectStore("conversations");
|
|
216
|
-
const request = store.getAll();
|
|
217
|
-
request.onsuccess = guard(() => {
|
|
218
|
-
const current = request.result.map(stored);
|
|
219
|
-
if (new Set(snapshot.map((c) => c.id)).size !== snapshot.length || current.length !== snapshot.length
|
|
220
|
-
|| current.some((c) => !snapshot.some((s) => s.id === c.id && s.revision === c.revision)))
|
|
221
|
-
throw new ChatHistoryError("CONFLICT");
|
|
222
|
-
store.clear();
|
|
223
|
-
tx.objectStore("state").put(null, "activeConversationId");
|
|
224
|
-
done();
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
getActiveConversationId() {
|
|
229
|
-
return this.transaction("readonly", (tx, done, guard) => {
|
|
230
|
-
const request = tx.objectStore("state").get("activeConversationId");
|
|
231
|
-
request.onsuccess = guard(() => {
|
|
232
|
-
if (request.result === undefined || request.result === null) {
|
|
233
|
-
done(null);
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
if (typeof request.result !== "string")
|
|
237
|
-
throw new ChatHistoryError("CORRUPT");
|
|
238
|
-
const id = request.result;
|
|
239
|
-
const conversation = tx.objectStore("conversations").get(id);
|
|
240
|
-
conversation.onsuccess = guard(() => { if (!conversation.result)
|
|
241
|
-
throw new ChatHistoryError("CORRUPT"); stored(conversation.result); done(id); });
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
setActiveConversationId(id) {
|
|
246
|
-
return this.transaction("readwrite", (tx, done, guard) => {
|
|
247
|
-
const save = () => { tx.objectStore("state").put(id, "activeConversationId"); done(); };
|
|
248
|
-
if (id === null) {
|
|
249
|
-
save();
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
const request = tx.objectStore("conversations").get(id);
|
|
253
|
-
request.onsuccess = guard(() => { if (!request.result)
|
|
254
|
-
throw new ChatHistoryError("CONFLICT"); stored(request.result); save(); });
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
//# sourceMappingURL=indexedDb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexedDb.js","sourceRoot":"","sources":["../../shared/chatntc-history/indexedDb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { type ChatConversation } from "./types.js";
|
|
2
|
-
/** Closed fields at every boundary prevent accidentally persisting config, keys or whole evidence. */
|
|
3
|
-
export declare function readConversation(value: unknown): ChatConversation;
|
|
4
|
-
/** Fixture/legacy v1 had the same messages and timestamps but no optimistic revision. */
|
|
5
|
-
export declare function migrateConversationV1(value: unknown): ChatConversation;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { isChatNTCResponse } from "../chatntc/responseContract.js";
|
|
2
|
-
import { ChatHistoryError } from "./types.js";
|
|
3
|
-
const object = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
4
|
-
const text = (value) => typeof value === "string" && value.length > 0;
|
|
5
|
-
const nullableText = (value) => value === null || text(value);
|
|
6
|
-
const date = (value) => text(value) && Number.isFinite(Date.parse(value)) && new Date(value).toISOString() === value;
|
|
7
|
-
const keys = (value, allowed) => Object.keys(value).every((key) => allowed.includes(key));
|
|
8
|
-
const optionalText = (value) => value === undefined || text(value);
|
|
9
|
-
/** Closed fields at every boundary prevent accidentally persisting config, keys or whole evidence. */
|
|
10
|
-
export function readConversation(value) {
|
|
11
|
-
var _a;
|
|
12
|
-
value = adaptLegacyV3References(value);
|
|
13
|
-
function invalid() { throw new ChatHistoryError("INVALID_DATA"); }
|
|
14
|
-
if (!object(value) || !keys(value, ["id", "schemaVersion", "revision", "title", "createdAt", "updatedAt", "messages"])
|
|
15
|
-
|| value.schemaVersion !== 2 || !text(value.id) || !text(value.title) || value.title.length > 144
|
|
16
|
-
|| !Number.isSafeInteger(value.revision) || value.revision < 1
|
|
17
|
-
|| !date(value.createdAt) || !date(value.updatedAt) || String(value.updatedAt) < String(value.createdAt)
|
|
18
|
-
|| !Array.isArray(value.messages))
|
|
19
|
-
return invalid();
|
|
20
|
-
const ids = new Set();
|
|
21
|
-
for (let i = 0; i < value.messages.length; i++) {
|
|
22
|
-
const message = value.messages[i];
|
|
23
|
-
if (!object(message) || !text(message.id) || ids.has(message.id) || !text(message.content) || !date(message.timestamp))
|
|
24
|
-
return invalid();
|
|
25
|
-
ids.add(message.id);
|
|
26
|
-
if (message.role === "user") {
|
|
27
|
-
if (!keys(message, ["id", "role", "content", "timestamp", "context", "status", "error"])
|
|
28
|
-
|| !["pending", "complete", "error", "cancelled"].includes(String(message.status)) || !optionalText(message.error))
|
|
29
|
-
return invalid();
|
|
30
|
-
const context = message.context;
|
|
31
|
-
if (context !== undefined && (!object(context) || !keys(context, ["documentId", "unitId", "numbering", "blockId", "assetId"])
|
|
32
|
-
|| !["ntc2018", "circ2019"].includes(String(context.documentId)) || !text(context.unitId) || !text(context.numbering)
|
|
33
|
-
|| !optionalText(context.blockId) || !optionalText(context.assetId)))
|
|
34
|
-
return invalid();
|
|
35
|
-
if (message.status === "complete" && ((_a = value.messages[i + 1]) === null || _a === void 0 ? void 0 : _a.role) !== "assistant")
|
|
36
|
-
return invalid();
|
|
37
|
-
}
|
|
38
|
-
else if (message.role === "assistant") {
|
|
39
|
-
const previous = value.messages[i - 1];
|
|
40
|
-
const hydrated = object(message.answer) && message.answer.formatVersion === 3
|
|
41
|
-
? Object.assign(Object.assign({}, message.answer), { answerMarkdown: message.content }) : object(message.answer) ? Object.assign(Object.assign({}, message.answer), { answer: message.content }) : null;
|
|
42
|
-
if (!keys(message, ["id", "role", "turnId", "content", "timestamp", "answer", "provenance", "evidenceWarnings", "evidenceReduced"])
|
|
43
|
-
|| (previous === null || previous === void 0 ? void 0 : previous.role) !== "user" || previous.id !== message.turnId || previous.status !== "complete"
|
|
44
|
-
|| !object(message.answer) || "answer" in message.answer || "answerMarkdown" in message.answer
|
|
45
|
-
|| !hydrated || !isChatNTCResponse(hydrated))
|
|
46
|
-
return invalid();
|
|
47
|
-
// The core response guard rejects unknown fields in claims and citations as well.
|
|
48
|
-
const p = message.provenance;
|
|
49
|
-
if (!object(p) || !keys(p, ["provider", "model", "structuralCodesVersion", "corpusFingerprint", "artifactFingerprint", "policyVersion", "outcome", "aiGenerated", "validation"])
|
|
50
|
-
|| !nullableText(p.provider) || !nullableText(p.model) || !nullableText(p.structuralCodesVersion)
|
|
51
|
-
|| !text(p.corpusFingerprint) || !text(p.artifactFingerprint) || !text(p.policyVersion)
|
|
52
|
-
|| !["generated", "abstained"].includes(String(p.outcome)) || (p.aiGenerated !== undefined && p.aiGenerated !== true) || !object(p.validation)
|
|
53
|
-
|| !keys(p.validation, ["valid", "scope", "stage"]) || p.validation.valid !== true
|
|
54
|
-
|| !["integrity-provenance-claim-coverage", "integrity-provenance-reference-resolution"].includes(String(p.validation.scope))
|
|
55
|
-
|| (p.validation.stage !== undefined && !["GENERATED", "NORMALIZED", "REFERENCES_RESOLVED", "EXPANDED", "REPAIRED", "CONSERVATIVE_REGENERATED", "PARTIALLY_SANITIZED", "DEGRADED", "HARD_REJECTED"].includes(String(p.validation.stage)))
|
|
56
|
-
|| typeof message.evidenceReduced !== "boolean" || !Array.isArray(message.evidenceWarnings)
|
|
57
|
-
|| !message.evidenceWarnings.every((w) => object(w) && keys(w, ["code", "unitId"]) && text(w.code) && optionalText(w.unitId)))
|
|
58
|
-
return invalid();
|
|
59
|
-
if (!isChatNTCResponse(hydrated))
|
|
60
|
-
return invalid();
|
|
61
|
-
if (hydrated.formatVersion !== 3) {
|
|
62
|
-
const cited = new Set(hydrated.claims.flatMap((claim) => claim.citations.map((citation) => citation.evidenceId)));
|
|
63
|
-
if (cited.size !== hydrated.usedEvidenceIds.length || hydrated.usedEvidenceIds.some((id) => !cited.has(id)))
|
|
64
|
-
return invalid();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else
|
|
68
|
-
return invalid();
|
|
69
|
-
}
|
|
70
|
-
return structuredClone(value);
|
|
71
|
-
}
|
|
72
|
-
/** Read early v3 snapshots whose verified references still reused the retrieval citation shape. */
|
|
73
|
-
function adaptLegacyV3References(value) {
|
|
74
|
-
if (!object(value) || !Array.isArray(value.messages))
|
|
75
|
-
return value;
|
|
76
|
-
const clone = structuredClone(value);
|
|
77
|
-
if (!object(clone) || !Array.isArray(clone.messages))
|
|
78
|
-
return value;
|
|
79
|
-
for (const message of clone.messages) {
|
|
80
|
-
if (!object(message) || message.role !== "assistant" || !object(message.answer)
|
|
81
|
-
|| message.answer.formatVersion !== 3 || !Array.isArray(message.answer.verifiedReferences))
|
|
82
|
-
continue;
|
|
83
|
-
message.answer.verifiedReferences = message.answer.verifiedReferences.map((reference) => {
|
|
84
|
-
if (!object(reference) || typeof reference.evidenceId !== "string" || reference.kind !== undefined)
|
|
85
|
-
return reference;
|
|
86
|
-
const current = Object.assign({}, reference);
|
|
87
|
-
delete current.evidenceId;
|
|
88
|
-
const assetId = typeof current.assetId === "string" ? current.assetId : "";
|
|
89
|
-
const kind = assetId.includes(":asset:formula:") ? "formula" : assetId.includes(":asset:table:") ? "table"
|
|
90
|
-
: assetId.includes(":asset:figure:") ? "figure" : typeof current.blockId === "string" ? "block" : "unit";
|
|
91
|
-
return Object.assign(Object.assign({}, current), { kind });
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return clone;
|
|
95
|
-
}
|
|
96
|
-
/** Fixture/legacy v1 had the same messages and timestamps but no optimistic revision. */
|
|
97
|
-
export function migrateConversationV1(value) {
|
|
98
|
-
if (!object(value) || value.schemaVersion !== 1 || "revision" in value)
|
|
99
|
-
throw new ChatHistoryError("INVALID_DATA");
|
|
100
|
-
return readConversation(Object.assign(Object.assign({}, value), { schemaVersion: 2, revision: 1 }));
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../shared/chatntc-history/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { ChatNTCRetrievalContext, ChatNTCResponse } from "../chatntc/types.js";
|
|
2
|
-
import type { ChatResult } from "../chatntc-ui/transport.js";
|
|
3
|
-
export declare const CHAT_HISTORY_SCHEMA_VERSION: 2;
|
|
4
|
-
export interface ChatHistoryUserMessage {
|
|
5
|
-
id: string;
|
|
6
|
-
role: "user";
|
|
7
|
-
content: string;
|
|
8
|
-
timestamp: string;
|
|
9
|
-
context?: ChatNTCRetrievalContext;
|
|
10
|
-
status: "pending" | "complete" | "error" | "cancelled";
|
|
11
|
-
error?: string;
|
|
12
|
-
}
|
|
13
|
-
/** A compact historical snapshot of a server-validated result, not fresh normative evidence. */
|
|
14
|
-
export interface ChatHistoryAssistantMessage {
|
|
15
|
-
id: string;
|
|
16
|
-
role: "assistant";
|
|
17
|
-
turnId: string;
|
|
18
|
-
content: string;
|
|
19
|
-
timestamp: string;
|
|
20
|
-
answer: ChatHistoryAnswer;
|
|
21
|
-
provenance: {
|
|
22
|
-
provider: string | null;
|
|
23
|
-
model: string | null;
|
|
24
|
-
structuralCodesVersion: string | null;
|
|
25
|
-
corpusFingerprint: string;
|
|
26
|
-
artifactFingerprint: string;
|
|
27
|
-
policyVersion: string;
|
|
28
|
-
outcome: ChatResult["generation"]["outcome"];
|
|
29
|
-
aiGenerated?: true;
|
|
30
|
-
validation: ChatResult["validation"];
|
|
31
|
-
};
|
|
32
|
-
evidenceWarnings: ChatResult["evidence"]["warnings"];
|
|
33
|
-
evidenceReduced: boolean;
|
|
34
|
-
}
|
|
35
|
-
type StoredResponse<T> = T extends {
|
|
36
|
-
formatVersion: 3;
|
|
37
|
-
} ? Omit<T, "answerMarkdown"> : Omit<T, "answer">;
|
|
38
|
-
export type ChatHistoryAnswer = StoredResponse<ChatNTCResponse>;
|
|
39
|
-
export type ChatHistoryMessage = ChatHistoryUserMessage | ChatHistoryAssistantMessage;
|
|
40
|
-
export interface ChatConversation {
|
|
41
|
-
id: string;
|
|
42
|
-
schemaVersion: typeof CHAT_HISTORY_SCHEMA_VERSION;
|
|
43
|
-
revision: number;
|
|
44
|
-
title: string;
|
|
45
|
-
createdAt: string;
|
|
46
|
-
updatedAt: string;
|
|
47
|
-
messages: ChatHistoryMessage[];
|
|
48
|
-
}
|
|
49
|
-
export type ChatConversationSummary = Omit<ChatConversation, "messages"> & {
|
|
50
|
-
messageCount: number;
|
|
51
|
-
};
|
|
52
|
-
export interface ChatHistoryStore {
|
|
53
|
-
listConversations(): Promise<ChatConversationSummary[]>;
|
|
54
|
-
getConversation(id: string): Promise<ChatConversation | null>;
|
|
55
|
-
createConversation(input: {
|
|
56
|
-
title: string;
|
|
57
|
-
messages?: ChatHistoryMessage[];
|
|
58
|
-
}): Promise<ChatConversation>;
|
|
59
|
-
/** Compare-and-swap: stale revisions must fail instead of overwriting another tab's work. */
|
|
60
|
-
updateConversation(id: string, patch: {
|
|
61
|
-
title?: string;
|
|
62
|
-
messages?: ChatHistoryMessage[];
|
|
63
|
-
}, expectedRevision: number): Promise<ChatConversation>;
|
|
64
|
-
deleteConversation(id: string, expectedRevision: number): Promise<void>;
|
|
65
|
-
/** The confirmed snapshot prevents clearing conversations created/edited in another tab meanwhile. */
|
|
66
|
-
deleteAllConversations(expected: {
|
|
67
|
-
id: string;
|
|
68
|
-
revision: number;
|
|
69
|
-
}[]): Promise<void>;
|
|
70
|
-
getActiveConversationId(): Promise<string | null>;
|
|
71
|
-
setActiveConversationId(id: string | null): Promise<void>;
|
|
72
|
-
}
|
|
73
|
-
export declare class ChatHistoryError extends Error {
|
|
74
|
-
readonly code: "UNAVAILABLE" | "BLOCKED" | "UPGRADE_FAILED" | "CORRUPT" | "WRITE_FAILED" | "CONFLICT" | "INVALID_DATA";
|
|
75
|
-
constructor(code: "UNAVAILABLE" | "BLOCKED" | "UPGRADE_FAILED" | "CORRUPT" | "WRITE_FAILED" | "CONFLICT" | "INVALID_DATA");
|
|
76
|
-
}
|
|
77
|
-
export declare function titleFromQuestion(question: string): string;
|
|
78
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export const CHAT_HISTORY_SCHEMA_VERSION = 2;
|
|
2
|
-
export class ChatHistoryError extends Error {
|
|
3
|
-
constructor(code) {
|
|
4
|
-
const messages = {
|
|
5
|
-
UNAVAILABLE: "La cronologia locale non è disponibile in questo browser.",
|
|
6
|
-
BLOCKED: "Chiudi le altre schede del viewer e riprova per aggiornare la cronologia.",
|
|
7
|
-
UPGRADE_FAILED: "Aggiornamento della cronologia non riuscito. I dati esistenti non sono stati cancellati.",
|
|
8
|
-
CORRUPT: "La cronologia contiene dati non leggibili. I dati sono stati conservati; nessun ripristino automatico è stato eseguito.",
|
|
9
|
-
WRITE_FAILED: "Salvataggio locale non riuscito. Mantieni aperta questa pagina e riprova.",
|
|
10
|
-
CONFLICT: "La conversazione è cambiata in un'altra scheda. I dati locali non sono stati sovrascritti.",
|
|
11
|
-
INVALID_DATA: "I dati della conversazione non rispettano il formato della cronologia.",
|
|
12
|
-
};
|
|
13
|
-
super(messages[code]);
|
|
14
|
-
this.code = code;
|
|
15
|
-
this.name = "ChatHistoryError";
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export function titleFromQuestion(question) {
|
|
19
|
-
const text = question.replace(/\s+/gu, " ").trim();
|
|
20
|
-
const chars = Array.from(text);
|
|
21
|
-
return chars.length > 72 ? `${chars.slice(0, 71).join("")}…` : text || "Nuova chat";
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../shared/chatntc-history/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAC;AA0CtD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAqB,IAA6G;QAChI,MAAM,QAAQ,GAAG;YACf,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,2EAA2E;YACpF,cAAc,EAAE,0FAA0F;YAC1G,OAAO,EAAE,yHAAyH;YAClI,YAAY,EAAE,2EAA2E;YACzF,QAAQ,EAAE,4FAA4F;YACtG,YAAY,EAAE,wEAAwE;SACvF,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAVH,SAAI,GAAJ,IAAI,CAAyG;QAUzG,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACxD,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC;AACtF,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
2
|
-
import { type ChatHistoryStore } from "../chatntc-history/types.js";
|
|
3
|
-
import { type ChatNTCPanelProps } from "./ChatNTCPanel.js";
|
|
4
|
-
export interface ChatNTCHistoryPanelProps extends Omit<ChatNTCPanelProps, "initialTurns" | "onTurnsChange" | "onNewChat" | "historyEnabled" | "disabled"> {
|
|
5
|
-
historyStore: ChatHistoryStore;
|
|
6
|
-
settings?: ReactNode;
|
|
7
|
-
}
|
|
8
|
-
/** This component knows only ChatHistoryStore. No IndexedDB, provider, HTTP or key configuration. */
|
|
9
|
-
export declare function ChatNTCHistoryPanel({ historyStore: store, settings, ...panelProps }: ChatNTCHistoryPanelProps): import("react/jsx-runtime").JSX.Element;
|