@varveai/adit-core 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/dist/config/index.d.ts +29 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +107 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/db/connection.d.ts +9 -0
  7. package/dist/db/connection.d.ts.map +1 -0
  8. package/dist/db/connection.js +48 -0
  9. package/dist/db/connection.js.map +1 -0
  10. package/dist/db/diffs.d.ts +22 -0
  11. package/dist/db/diffs.d.ts.map +1 -0
  12. package/dist/db/diffs.js +37 -0
  13. package/dist/db/diffs.js.map +1 -0
  14. package/dist/db/env-snapshots.d.ts +29 -0
  15. package/dist/db/env-snapshots.d.ts.map +1 -0
  16. package/dist/db/env-snapshots.js +57 -0
  17. package/dist/db/env-snapshots.js.map +1 -0
  18. package/dist/db/events.d.ts +91 -0
  19. package/dist/db/events.d.ts.map +1 -0
  20. package/dist/db/events.js +260 -0
  21. package/dist/db/events.js.map +1 -0
  22. package/dist/db/index.d.ts +10 -0
  23. package/dist/db/index.d.ts.map +1 -0
  24. package/dist/db/index.js +10 -0
  25. package/dist/db/index.js.map +1 -0
  26. package/dist/db/migrations.d.ts +13 -0
  27. package/dist/db/migrations.d.ts.map +1 -0
  28. package/dist/db/migrations.js +237 -0
  29. package/dist/db/migrations.js.map +1 -0
  30. package/dist/db/plans.d.ts +21 -0
  31. package/dist/db/plans.d.ts.map +1 -0
  32. package/dist/db/plans.js +52 -0
  33. package/dist/db/plans.js.map +1 -0
  34. package/dist/db/sessions.d.ts +23 -0
  35. package/dist/db/sessions.d.ts.map +1 -0
  36. package/dist/db/sessions.js +57 -0
  37. package/dist/db/sessions.js.map +1 -0
  38. package/dist/db/sync-state.d.ts +21 -0
  39. package/dist/db/sync-state.d.ts.map +1 -0
  40. package/dist/db/sync-state.js +36 -0
  41. package/dist/db/sync-state.js.map +1 -0
  42. package/dist/db/transcript-uploads.d.ts +57 -0
  43. package/dist/db/transcript-uploads.d.ts.map +1 -0
  44. package/dist/db/transcript-uploads.js +132 -0
  45. package/dist/db/transcript-uploads.js.map +1 -0
  46. package/dist/index.d.ts +17 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +17 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/perf/perf-log.d.ts +105 -0
  51. package/dist/perf/perf-log.d.ts.map +1 -0
  52. package/dist/perf/perf-log.js +280 -0
  53. package/dist/perf/perf-log.js.map +1 -0
  54. package/dist/security/content-redaction.d.ts +105 -0
  55. package/dist/security/content-redaction.d.ts.map +1 -0
  56. package/dist/security/content-redaction.js +365 -0
  57. package/dist/security/content-redaction.js.map +1 -0
  58. package/dist/sync/index.d.ts +3 -0
  59. package/dist/sync/index.d.ts.map +1 -0
  60. package/dist/sync/index.js +3 -0
  61. package/dist/sync/index.js.map +1 -0
  62. package/dist/sync/ulid.d.ts +15 -0
  63. package/dist/sync/ulid.d.ts.map +1 -0
  64. package/dist/sync/ulid.js +34 -0
  65. package/dist/sync/ulid.js.map +1 -0
  66. package/dist/sync/vclock.d.ts +33 -0
  67. package/dist/sync/vclock.d.ts.map +1 -0
  68. package/dist/sync/vclock.js +69 -0
  69. package/dist/sync/vclock.js.map +1 -0
  70. package/dist/types/environment.d.ts +53 -0
  71. package/dist/types/environment.d.ts.map +1 -0
  72. package/dist/types/environment.js +8 -0
  73. package/dist/types/environment.js.map +1 -0
  74. package/dist/types/events.d.ts +88 -0
  75. package/dist/types/events.d.ts.map +1 -0
  76. package/dist/types/events.js +40 -0
  77. package/dist/types/events.js.map +1 -0
  78. package/dist/types/index.d.ts +6 -0
  79. package/dist/types/index.d.ts.map +1 -0
  80. package/dist/types/index.js +2 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/dist/types/plan.d.ts +30 -0
  83. package/dist/types/plan.d.ts.map +1 -0
  84. package/dist/types/plan.js +8 -0
  85. package/dist/types/plan.js.map +1 -0
  86. package/dist/types/session.d.ts +44 -0
  87. package/dist/types/session.d.ts.map +1 -0
  88. package/dist/types/session.js +8 -0
  89. package/dist/types/session.js.map +1 -0
  90. package/package.json +29 -0
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Session CRUD operations.
3
+ */
4
+ import type Database from "better-sqlite3";
5
+ import type { AditSession, SessionStatus, Platform, SessionType } from "../types/index.js";
6
+ export interface CreateSessionInput {
7
+ id: string;
8
+ projectId: string;
9
+ clientId: string;
10
+ sessionType: SessionType;
11
+ platform: Platform;
12
+ startedAt: string;
13
+ metadataJson?: string | null;
14
+ vclockJson: string;
15
+ platformSessionId?: string | null;
16
+ }
17
+ export declare function insertSession(db: Database.Database, input: CreateSessionInput): void;
18
+ export declare function getSessionById(db: Database.Database, id: string): AditSession | null;
19
+ export declare function getActiveSession(db: Database.Database, projectId: string, clientId: string): AditSession | null;
20
+ export declare function getSessionByPlatformSessionId(db: Database.Database, platformSessionId: string): AditSession | null;
21
+ export declare function endSession(db: Database.Database, id: string, status?: SessionStatus, vclockJson?: string): void;
22
+ export declare function listSessions(db: Database.Database, projectId: string, limit?: number): AditSession[];
23
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE3F,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,kBAAkB,GACxB,IAAI,CAeN;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,WAAW,GAAG,IAAI,CAKpB;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,WAAW,GAAG,IAAI,CAOpB;AAED,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,iBAAiB,EAAE,MAAM,GACxB,WAAW,GAAG,IAAI,CAOpB;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,aAA2B,EACnC,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAWN;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,SAAK,GACT,WAAW,EAAE,CAOf"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Session CRUD operations.
3
+ */
4
+ export function insertSession(db, input) {
5
+ db.prepare(`
6
+ INSERT INTO sessions (id, project_id, client_id, session_type, platform, started_at, metadata_json, vclock_json, platform_session_id)
7
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
8
+ `).run(input.id, input.projectId, input.clientId, input.sessionType, input.platform, input.startedAt, input.metadataJson ?? null, input.vclockJson, input.platformSessionId ?? null);
9
+ }
10
+ export function getSessionById(db, id) {
11
+ const row = db.prepare("SELECT * FROM sessions WHERE id = ?").get(id);
12
+ return row ? rowToSession(row) : null;
13
+ }
14
+ export function getActiveSession(db, projectId, clientId) {
15
+ const row = db
16
+ .prepare("SELECT * FROM sessions WHERE project_id = ? AND client_id = ? AND status = 'active' AND deleted_at IS NULL ORDER BY started_at DESC LIMIT 1")
17
+ .get(projectId, clientId);
18
+ return row ? rowToSession(row) : null;
19
+ }
20
+ export function getSessionByPlatformSessionId(db, platformSessionId) {
21
+ const row = db
22
+ .prepare("SELECT * FROM sessions WHERE platform_session_id = ? AND status = 'active' AND deleted_at IS NULL ORDER BY started_at DESC LIMIT 1")
23
+ .get(platformSessionId);
24
+ return row ? rowToSession(row) : null;
25
+ }
26
+ export function endSession(db, id, status = "completed", vclockJson) {
27
+ const now = new Date().toISOString();
28
+ if (vclockJson) {
29
+ db.prepare("UPDATE sessions SET ended_at = ?, status = ?, vclock_json = ? WHERE id = ?").run(now, status, vclockJson, id);
30
+ }
31
+ else {
32
+ db.prepare("UPDATE sessions SET ended_at = ?, status = ? WHERE id = ?").run(now, status, id);
33
+ }
34
+ }
35
+ export function listSessions(db, projectId, limit = 20) {
36
+ const rows = db
37
+ .prepare("SELECT * FROM sessions WHERE project_id = ? AND deleted_at IS NULL ORDER BY started_at DESC LIMIT ?")
38
+ .all(projectId, limit);
39
+ return rows.map(rowToSession);
40
+ }
41
+ function rowToSession(row) {
42
+ return {
43
+ id: row.id,
44
+ projectId: row.project_id,
45
+ clientId: row.client_id,
46
+ sessionType: row.session_type,
47
+ platform: row.platform,
48
+ startedAt: row.started_at,
49
+ endedAt: row.ended_at ?? null,
50
+ status: row.status,
51
+ metadataJson: row.metadata_json ?? null,
52
+ vclockJson: row.vclock_json,
53
+ platformSessionId: row.platform_session_id ?? null,
54
+ deletedAt: row.deleted_at ?? null,
55
+ };
56
+ }
57
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Sync state tracking — per-server sync cursor and version.
3
+ *
4
+ * Tracks the last-synced position so incremental push only
5
+ * sends records the server hasn't seen yet.
6
+ */
7
+ import type Database from "better-sqlite3";
8
+ export interface SyncState {
9
+ serverUrl: string;
10
+ clientId: string;
11
+ lastSyncedEventId: string | null;
12
+ lastSyncedAt: string | null;
13
+ syncVersion: number;
14
+ }
15
+ /** Get sync state for a specific server */
16
+ export declare function getSyncState(db: Database.Database, serverUrl: string): SyncState | null;
17
+ /** Insert or update sync state */
18
+ export declare function upsertSyncState(db: Database.Database, state: SyncState): void;
19
+ /** Remove sync state for a server (on logout) */
20
+ export declare function clearSyncState(db: Database.Database, serverUrl: string): void;
21
+ //# sourceMappingURL=sync-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-state.d.ts","sourceRoot":"","sources":["../../src/db/sync-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB,SAAS,GAAG,IAAI,CAclB;AAED,kCAAkC;AAClC,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,SAAS,GACf,IAAI,CAgBN;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB,IAAI,CAEN"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Sync state tracking — per-server sync cursor and version.
3
+ *
4
+ * Tracks the last-synced position so incremental push only
5
+ * sends records the server hasn't seen yet.
6
+ */
7
+ /** Get sync state for a specific server */
8
+ export function getSyncState(db, serverUrl) {
9
+ const row = db
10
+ .prepare("SELECT * FROM sync_state WHERE server_url = ?")
11
+ .get(serverUrl);
12
+ if (!row)
13
+ return null;
14
+ return {
15
+ serverUrl: row.server_url,
16
+ clientId: row.client_id,
17
+ lastSyncedEventId: row.last_synced_event_id ?? null,
18
+ lastSyncedAt: row.last_synced_at ?? null,
19
+ syncVersion: row.sync_version,
20
+ };
21
+ }
22
+ /** Insert or update sync state */
23
+ export function upsertSyncState(db, state) {
24
+ db.prepare(`INSERT INTO sync_state (server_url, client_id, last_synced_event_id, last_synced_at, sync_version)
25
+ VALUES (?, ?, ?, ?, ?)
26
+ ON CONFLICT (server_url) DO UPDATE SET
27
+ client_id = excluded.client_id,
28
+ last_synced_event_id = excluded.last_synced_event_id,
29
+ last_synced_at = excluded.last_synced_at,
30
+ sync_version = excluded.sync_version`).run(state.serverUrl, state.clientId, state.lastSyncedEventId, state.lastSyncedAt, state.syncVersion);
31
+ }
32
+ /** Remove sync state for a server (on logout) */
33
+ export function clearSyncState(db, serverUrl) {
34
+ db.prepare("DELETE FROM sync_state WHERE server_url = ?").run(serverUrl);
35
+ }
36
+ //# sourceMappingURL=sync-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-state.js","sourceRoot":"","sources":["../../src/db/sync-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAC1B,EAAqB,EACrB,SAAiB;IAEjB,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,+CAA+C,CAAC;SACxD,GAAG,CAAC,SAAS,CAAwC,CAAC;IAEzD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAoB;QACnC,QAAQ,EAAE,GAAG,CAAC,SAAmB;QACjC,iBAAiB,EAAG,GAAG,CAAC,oBAA+B,IAAI,IAAI;QAC/D,YAAY,EAAG,GAAG,CAAC,cAAyB,IAAI,IAAI;QACpD,WAAW,EAAE,GAAG,CAAC,YAAsB;KACxC,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,KAAgB;IAEhB,EAAE,CAAC,OAAO,CACR;;;;;;4CAMwC,CACzC,CAAC,GAAG,CACH,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,WAAW,CAClB,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,SAAiB;IAEjB,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Transcript upload tracking.
3
+ *
4
+ * Tracks which transcript files have been discovered, how much
5
+ * has been uploaded (byte offset for incremental uploads), and
6
+ * retry state (max 3 failures before giving up).
7
+ */
8
+ import type Database from "better-sqlite3";
9
+ /** Status of a transcript upload */
10
+ export type TranscriptUploadStatus = "pending" | "uploading" | "up_to_date" | "failed" | "disabled";
11
+ export interface TranscriptUpload {
12
+ id: string;
13
+ sessionId: string;
14
+ transcriptPath: string;
15
+ serverUrl: string;
16
+ /** Number of bytes already confirmed uploaded to server */
17
+ uploadedBytes: number;
18
+ /** Current file size on disk */
19
+ fileSizeBytes: number;
20
+ status: TranscriptUploadStatus;
21
+ /** Number of consecutive failures (resets on success) */
22
+ failureCount: number;
23
+ lastError: string | null;
24
+ /** Opaque version token from server (for conflict detection) */
25
+ serverVersion: string | null;
26
+ createdAt: string;
27
+ updatedAt: string;
28
+ }
29
+ export interface UpsertTranscriptUploadInput {
30
+ id: string;
31
+ sessionId: string;
32
+ transcriptPath: string;
33
+ serverUrl: string;
34
+ uploadedBytes?: number;
35
+ fileSizeBytes?: number;
36
+ status?: TranscriptUploadStatus;
37
+ failureCount?: number;
38
+ lastError?: string | null;
39
+ serverVersion?: string | null;
40
+ }
41
+ /** Insert or update a transcript upload record */
42
+ export declare function upsertTranscriptUpload(db: Database.Database, input: UpsertTranscriptUploadInput): void;
43
+ /** Get a transcript upload by path and server */
44
+ export declare function getTranscriptUpload(db: Database.Database, transcriptPath: string, serverUrl: string): TranscriptUpload | null;
45
+ /** Get a transcript upload by ID */
46
+ export declare function getTranscriptUploadById(db: Database.Database, id: string): TranscriptUpload | null;
47
+ /** List transcript uploads that need processing (pending or have new data) */
48
+ export declare function listPendingTranscriptUploads(db: Database.Database, serverUrl: string): TranscriptUpload[];
49
+ /** Mark a transcript upload as successfully uploaded up to a byte offset */
50
+ export declare function markTranscriptUploaded(db: Database.Database, id: string, uploadedBytes: number, fileSizeBytes: number, serverVersion: string | null): void;
51
+ /** Record a failed upload attempt */
52
+ export declare function markTranscriptUploadFailed(db: Database.Database, id: string, error: string): void;
53
+ /** Reset a transcript for full re-upload (server requested) */
54
+ export declare function resetTranscriptUpload(db: Database.Database, id: string): void;
55
+ /** Count active transcript uploads for a server */
56
+ export declare function countActiveTranscriptUploads(db: Database.Database, serverUrl: string): number;
57
+ //# sourceMappingURL=transcript-uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-uploads.d.ts","sourceRoot":"","sources":["../../src/db/transcript-uploads.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,oCAAoC;AACpC,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gEAAgE;IAChE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAwBD,kDAAkD;AAClD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,2BAA2B,GACjC,IAAI,CAeN;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,gBAAgB,GAAG,IAAI,CASzB;AAED,oCAAoC;AACpC,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,gBAAgB,GAAG,IAAI,CAMzB;AAED,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB,gBAAgB,EAAE,CAYpB;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,IAAI,CAaN;AAED,qCAAqC;AACrC,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,IAAI,CAYN;AAED,mDAAmD;AACnD,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Transcript upload tracking.
3
+ *
4
+ * Tracks which transcript files have been discovered, how much
5
+ * has been uploaded (byte offset for incremental uploads), and
6
+ * retry state (max 3 failures before giving up).
7
+ */
8
+ const UPSERT_SQL = `
9
+ INSERT INTO transcript_uploads (
10
+ id, session_id, transcript_path, server_url,
11
+ uploaded_bytes, file_size_bytes, status,
12
+ failure_count, last_error, server_version,
13
+ created_at, updated_at
14
+ ) VALUES (
15
+ @id, @sessionId, @transcriptPath, @serverUrl,
16
+ @uploadedBytes, @fileSizeBytes, @status,
17
+ @failureCount, @lastError, @serverVersion,
18
+ @now, @now
19
+ )
20
+ ON CONFLICT(transcript_path, server_url) DO UPDATE SET
21
+ uploaded_bytes = @uploadedBytes,
22
+ file_size_bytes = @fileSizeBytes,
23
+ status = @status,
24
+ failure_count = @failureCount,
25
+ last_error = @lastError,
26
+ server_version = @serverVersion,
27
+ updated_at = @now
28
+ `;
29
+ /** Insert or update a transcript upload record */
30
+ export function upsertTranscriptUpload(db, input) {
31
+ const now = new Date().toISOString();
32
+ db.prepare(UPSERT_SQL).run({
33
+ id: input.id,
34
+ sessionId: input.sessionId,
35
+ transcriptPath: input.transcriptPath,
36
+ serverUrl: input.serverUrl,
37
+ uploadedBytes: input.uploadedBytes ?? 0,
38
+ fileSizeBytes: input.fileSizeBytes ?? 0,
39
+ status: input.status ?? "pending",
40
+ failureCount: input.failureCount ?? 0,
41
+ lastError: input.lastError ?? null,
42
+ serverVersion: input.serverVersion ?? null,
43
+ now,
44
+ });
45
+ }
46
+ /** Get a transcript upload by path and server */
47
+ export function getTranscriptUpload(db, transcriptPath, serverUrl) {
48
+ const row = db
49
+ .prepare(`SELECT * FROM transcript_uploads
50
+ WHERE transcript_path = ? AND server_url = ?`)
51
+ .get(transcriptPath, serverUrl);
52
+ return row ? mapRow(row) : null;
53
+ }
54
+ /** Get a transcript upload by ID */
55
+ export function getTranscriptUploadById(db, id) {
56
+ const row = db
57
+ .prepare("SELECT * FROM transcript_uploads WHERE id = ?")
58
+ .get(id);
59
+ return row ? mapRow(row) : null;
60
+ }
61
+ /** List transcript uploads that need processing (pending or have new data) */
62
+ export function listPendingTranscriptUploads(db, serverUrl) {
63
+ const rows = db
64
+ .prepare(`SELECT * FROM transcript_uploads
65
+ WHERE server_url = ?
66
+ AND status IN ('pending', 'uploading', 'up_to_date')
67
+ AND failure_count < 3
68
+ ORDER BY updated_at ASC`)
69
+ .all(serverUrl);
70
+ return rows.map(mapRow);
71
+ }
72
+ /** Mark a transcript upload as successfully uploaded up to a byte offset */
73
+ export function markTranscriptUploaded(db, id, uploadedBytes, fileSizeBytes, serverVersion) {
74
+ const now = new Date().toISOString();
75
+ db.prepare(`UPDATE transcript_uploads
76
+ SET uploaded_bytes = ?,
77
+ file_size_bytes = ?,
78
+ status = CASE WHEN ? >= ? THEN 'up_to_date' ELSE 'uploading' END,
79
+ failure_count = 0,
80
+ last_error = NULL,
81
+ server_version = COALESCE(?, server_version),
82
+ updated_at = ?
83
+ WHERE id = ?`).run(uploadedBytes, fileSizeBytes, uploadedBytes, fileSizeBytes, serverVersion, now, id);
84
+ }
85
+ /** Record a failed upload attempt */
86
+ export function markTranscriptUploadFailed(db, id, error) {
87
+ const now = new Date().toISOString();
88
+ db.prepare(`UPDATE transcript_uploads
89
+ SET failure_count = failure_count + 1,
90
+ last_error = ?,
91
+ status = CASE WHEN failure_count + 1 >= 3 THEN 'failed' ELSE status END,
92
+ updated_at = ?
93
+ WHERE id = ?`).run(error, now, id);
94
+ }
95
+ /** Reset a transcript for full re-upload (server requested) */
96
+ export function resetTranscriptUpload(db, id) {
97
+ const now = new Date().toISOString();
98
+ db.prepare(`UPDATE transcript_uploads
99
+ SET uploaded_bytes = 0,
100
+ status = 'pending',
101
+ failure_count = 0,
102
+ last_error = NULL,
103
+ server_version = NULL,
104
+ updated_at = ?
105
+ WHERE id = ?`).run(now, id);
106
+ }
107
+ /** Count active transcript uploads for a server */
108
+ export function countActiveTranscriptUploads(db, serverUrl) {
109
+ const row = db
110
+ .prepare(`SELECT COUNT(*) as count FROM transcript_uploads
111
+ WHERE server_url = ?
112
+ AND status NOT IN ('failed', 'disabled')`)
113
+ .get(serverUrl);
114
+ return row.count;
115
+ }
116
+ function mapRow(row) {
117
+ return {
118
+ id: row.id,
119
+ sessionId: row.session_id,
120
+ transcriptPath: row.transcript_path,
121
+ serverUrl: row.server_url,
122
+ uploadedBytes: row.uploaded_bytes,
123
+ fileSizeBytes: row.file_size_bytes,
124
+ status: row.status,
125
+ failureCount: row.failure_count,
126
+ lastError: row.last_error,
127
+ serverVersion: row.server_version,
128
+ createdAt: row.created_at,
129
+ updatedAt: row.updated_at,
130
+ };
131
+ }
132
+ //# sourceMappingURL=transcript-uploads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-uploads.js","sourceRoot":"","sources":["../../src/db/transcript-uploads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @varveai/adit-core — Core types, database, config, and sync primitives.
3
+ *
4
+ * This is the foundation package. All other ADIT packages depend on it.
5
+ */
6
+ export type { EventType, Actor, EventStatus, ErrorCategory, FileStat, EventError, AditEvent, } from "./types/index.js";
7
+ export { parseLabels, parseDiffStats, parseError } from "./types/index.js";
8
+ export type { SessionStatus, Platform, SessionType, SessionMetadata, AditSession, } from "./types/index.js";
9
+ export type { PlanType, PlanStatus, AditPlan, } from "./types/index.js";
10
+ export type { EnvSnapshot, EnvDiff, EnvChange } from "./types/index.js";
11
+ export { openDatabase, closeDatabase, insertSession, getSessionById, getActiveSession, getSessionByPlatformSessionId, endSession, listSessions, insertEvent, insertEventAutoSeq, getEventById, queryEvents, getEventsBySession, updateEventStatus, updateEventCheckpoint, updateEventLabels, allocateSequence, searchEvents, getLatestCheckpointEvent, getLatestCheckpointByBranch, getRecentCheckpointsExcludingBranch, clearEvents, countEvents, insertDiff, getDiffByEventId, getDiffText, insertPlan, getPlanById, listPlans, getChildPlans, updatePlanStatus, updatePlanContent, insertEnvSnapshot, getEnvSnapshotById, getLatestEnvSnapshot, listEnvSnapshots, getSyncState, upsertSyncState, clearSyncState, upsertTranscriptUpload, getTranscriptUpload, getTranscriptUploadById, listPendingTranscriptUploads, markTranscriptUploaded, markTranscriptUploadFailed, resetTranscriptUpload, countActiveTranscriptUploads, } from "./db/index.js";
12
+ export type { CreateSessionInput, InsertEventInput, EventQueryOptions, DiffRecord, CreatePlanInput, CreateEnvSnapshotInput, SyncState, TranscriptUpload, TranscriptUploadStatus, UpsertTranscriptUploadInput, } from "./db/index.js";
13
+ export { loadConfig, findGitRoot, redactSensitiveKeys, type AditConfig, } from "./config/index.js";
14
+ export { shannonEntropy, redactContent, redactObject, shouldSkipField, builtinPatterns, defaultSkipFields, type RedactionResult, type SecretDetection, type RedactionConfig, type SecretPattern, } from "./security/content-redaction.js";
15
+ export { recordPerf, withPerf, withPerfSync, readPerfLogs, generatePerfStats, clearPerfLogs, pruneOldLogs, type PerfEntry, type PerfOperationStats, type PerfStatsReport, } from "./perf/perf-log.js";
16
+ export { generateId, generateIdAt, extractTimestamp, type VectorClock, createClock, tick, merge, compare, serialize, deserialize, } from "./sync/index.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,YAAY,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,eAAe,EACf,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,6BAA6B,EAC7B,UAAU,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,EACxB,2BAA2B,EAC3B,mCAAmC,EACnC,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,KAAK,WAAW,EAChB,WAAW,EACX,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @varveai/adit-core — Core types, database, config, and sync primitives.
3
+ *
4
+ * This is the foundation package. All other ADIT packages depend on it.
5
+ */
6
+ export { parseLabels, parseDiffStats, parseError } from "./types/index.js";
7
+ // Database
8
+ export { openDatabase, closeDatabase, insertSession, getSessionById, getActiveSession, getSessionByPlatformSessionId, endSession, listSessions, insertEvent, insertEventAutoSeq, getEventById, queryEvents, getEventsBySession, updateEventStatus, updateEventCheckpoint, updateEventLabels, allocateSequence, searchEvents, getLatestCheckpointEvent, getLatestCheckpointByBranch, getRecentCheckpointsExcludingBranch, clearEvents, countEvents, insertDiff, getDiffByEventId, getDiffText, insertPlan, getPlanById, listPlans, getChildPlans, updatePlanStatus, updatePlanContent, insertEnvSnapshot, getEnvSnapshotById, getLatestEnvSnapshot, listEnvSnapshots, getSyncState, upsertSyncState, clearSyncState, upsertTranscriptUpload, getTranscriptUpload, getTranscriptUploadById, listPendingTranscriptUploads, markTranscriptUploaded, markTranscriptUploadFailed, resetTranscriptUpload, countActiveTranscriptUploads, } from "./db/index.js";
9
+ // Config
10
+ export { loadConfig, findGitRoot, redactSensitiveKeys, } from "./config/index.js";
11
+ // Security — content-aware secret redaction
12
+ export { shannonEntropy, redactContent, redactObject, shouldSkipField, builtinPatterns, defaultSkipFields, } from "./security/content-redaction.js";
13
+ // Performance logging
14
+ export { recordPerf, withPerf, withPerfSync, readPerfLogs, generatePerfStats, clearPerfLogs, pruneOldLogs, } from "./perf/perf-log.js";
15
+ // Sync primitives
16
+ export { generateId, generateIdAt, extractTimestamp, createClock, tick, merge, compare, serialize, deserialize, } from "./sync/index.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkB3E,WAAW;AACX,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,6BAA6B,EAC7B,UAAU,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,EACxB,2BAA2B,EAC3B,mCAAmC,EACnC,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAevB,SAAS;AACT,OAAO,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAE3B,4CAA4C;AAC5C,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,GAKlB,MAAM,iCAAiC,CAAC;AAEzC,sBAAsB;AACtB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAE5B,kBAAkB;AAClB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAEhB,WAAW,EACX,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Performance logging for time-sensitive operations.
3
+ *
4
+ * Records call timing for hook handlers, git operations, network calls,
5
+ * and other time-sensitive operations. Logs are stored as daily JSONL files
6
+ * in .adit/perf-logs/ and auto-pruned after 7 days.
7
+ */
8
+ /** A single performance log entry */
9
+ export interface PerfEntry {
10
+ /** ISO timestamp of when the call started */
11
+ timestamp: string;
12
+ /** Category of the call (e.g. "hook", "git", "network", "snapshot") */
13
+ category: string;
14
+ /** Name of the operation (e.g. "dispatchHook:stop", "runGit:status") */
15
+ operation: string;
16
+ /** Duration in milliseconds */
17
+ durationMs: number;
18
+ /** Whether the operation succeeded */
19
+ success: boolean;
20
+ /** Optional error message on failure */
21
+ error?: string;
22
+ }
23
+ /** Aggregated stats for a single operation */
24
+ export interface PerfOperationStats {
25
+ /** Category of the call */
26
+ category: string;
27
+ /** Name of the operation */
28
+ operation: string;
29
+ /** Total number of calls */
30
+ count: number;
31
+ /** Average duration in ms */
32
+ avgMs: number;
33
+ /** Minimum duration in ms */
34
+ minMs: number;
35
+ /** Maximum duration in ms */
36
+ maxMs: number;
37
+ /** p95 duration in ms */
38
+ p95Ms: number;
39
+ /** Standard deviation in ms (measures jitter) */
40
+ stddevMs: number;
41
+ /** Number of failures */
42
+ failures: number;
43
+ }
44
+ /** Full stats report */
45
+ export interface PerfStatsReport {
46
+ /** When the report was generated */
47
+ generatedAt: string;
48
+ /** Date range covered */
49
+ fromDate: string;
50
+ toDate: string;
51
+ /** Total number of entries analyzed */
52
+ totalEntries: number;
53
+ /** Per-operation stats, sorted by call count descending */
54
+ operations: PerfOperationStats[];
55
+ }
56
+ /**
57
+ * Prune log files older than the retention period.
58
+ * Called on each write to keep the directory clean.
59
+ */
60
+ export declare function pruneOldLogs(dataDir: string): void;
61
+ /**
62
+ * Record a performance log entry.
63
+ *
64
+ * @param dataDir - The ADIT data directory (.adit/)
65
+ * @param entry - The performance entry to record
66
+ */
67
+ export declare function recordPerf(dataDir: string, entry: PerfEntry): void;
68
+ /**
69
+ * Wrap an async function with performance logging.
70
+ *
71
+ * @param dataDir - The ADIT data directory (.adit/)
72
+ * @param category - Category of the operation
73
+ * @param operation - Name of the operation
74
+ * @param fn - The async function to measure
75
+ * @returns The result of the function
76
+ */
77
+ export declare function withPerf<T>(dataDir: string, category: string, operation: string, fn: () => Promise<T>): Promise<T>;
78
+ /**
79
+ * Wrap a sync function with performance logging.
80
+ */
81
+ export declare function withPerfSync<T>(dataDir: string, category: string, operation: string, fn: () => T): T;
82
+ /**
83
+ * Read all perf log entries within the retention window.
84
+ *
85
+ * @param dataDir - The ADIT data directory (.adit/)
86
+ * @param fromDate - Optional start date (YYYY-MM-DD). Defaults to 7 days ago.
87
+ * @param toDate - Optional end date (YYYY-MM-DD). Defaults to today.
88
+ * @returns Array of perf entries
89
+ */
90
+ export declare function readPerfLogs(dataDir: string, fromDate?: string, toDate?: string): PerfEntry[];
91
+ /**
92
+ * Generate a stats report from perf log entries.
93
+ *
94
+ * @param entries - Array of perf entries to analyze
95
+ * @returns Stats report with per-operation aggregations
96
+ */
97
+ export declare function generatePerfStats(entries: PerfEntry[]): PerfStatsReport;
98
+ /**
99
+ * Clear all performance logs.
100
+ *
101
+ * @param dataDir - The ADIT data directory (.adit/)
102
+ * @returns Number of files deleted
103
+ */
104
+ export declare function clearPerfLogs(dataDir: string): number;
105
+ //# sourceMappingURL=perf-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-log.d.ts","sourceRoot":"","sources":["../../src/perf/perf-log.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAwB;AACxB,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAoBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAwBlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAclE;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAwBH;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,SAAS,EAAE,CAiCb;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,eAAe,CAwEvE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBrD"}