@wfm-cn/dsh-storage 0.0.0-stage → 0.2.0

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 (119) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +21 -0
  3. package/README.md +128 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/backends/database.js +578 -0
  6. package/lib/backfill.js +331 -0
  7. package/lib/client/index.js +79 -0
  8. package/lib/client/panel.js +299 -0
  9. package/lib/client/toast.js +66 -0
  10. package/lib/client.js +1 -0
  11. package/lib/compaction.js +108 -0
  12. package/lib/config.js +171 -0
  13. package/lib/ddl.js +323 -0
  14. package/lib/generated/mysql/browser.js +17 -0
  15. package/lib/generated/mysql/client.js +34 -0
  16. package/lib/generated/mysql/commonInputTypes.js +10 -0
  17. package/lib/generated/mysql/enums.js +10 -0
  18. package/lib/generated/mysql/internal/class.js +49 -0
  19. package/lib/generated/mysql/internal/prismaNamespace.js +146 -0
  20. package/lib/generated/mysql/internal/prismaNamespaceBrowser.js +117 -0
  21. package/lib/generated/mysql/models/AiChatHistory.js +1 -0
  22. package/lib/generated/mysql/models/AiMessage.js +1 -0
  23. package/lib/generated/mysql/models.js +1 -0
  24. package/lib/generated/postgresql/browser.js +17 -0
  25. package/lib/generated/postgresql/client.js +34 -0
  26. package/lib/generated/postgresql/commonInputTypes.js +10 -0
  27. package/lib/generated/postgresql/enums.js +10 -0
  28. package/lib/generated/postgresql/internal/class.js +49 -0
  29. package/lib/generated/postgresql/internal/prismaNamespace.js +131 -0
  30. package/lib/generated/postgresql/internal/prismaNamespaceBrowser.js +102 -0
  31. package/lib/generated/postgresql/models/AiChatHistory.js +1 -0
  32. package/lib/generated/postgresql/models/AiMessage.js +1 -0
  33. package/lib/generated/postgresql/models.js +1 -0
  34. package/lib/generated/sqlite/browser.js +17 -0
  35. package/lib/generated/sqlite/client.js +34 -0
  36. package/lib/generated/sqlite/commonInputTypes.js +10 -0
  37. package/lib/generated/sqlite/enums.js +10 -0
  38. package/lib/generated/sqlite/internal/class.js +49 -0
  39. package/lib/generated/sqlite/internal/prismaNamespace.js +128 -0
  40. package/lib/generated/sqlite/internal/prismaNamespaceBrowser.js +99 -0
  41. package/lib/generated/sqlite/models/AiChatHistory.js +1 -0
  42. package/lib/generated/sqlite/models/AiMessage.js +1 -0
  43. package/lib/generated/sqlite/models.js +1 -0
  44. package/lib/generated/sqlserver/browser.js +17 -0
  45. package/lib/generated/sqlserver/client.js +34 -0
  46. package/lib/generated/sqlserver/commonInputTypes.js +10 -0
  47. package/lib/generated/sqlserver/enums.js +10 -0
  48. package/lib/generated/sqlserver/internal/class.js +49 -0
  49. package/lib/generated/sqlserver/internal/prismaNamespace.js +119 -0
  50. package/lib/generated/sqlserver/internal/prismaNamespaceBrowser.js +90 -0
  51. package/lib/generated/sqlserver/models/AiChatHistory.js +1 -0
  52. package/lib/generated/sqlserver/models/AiMessage.js +1 -0
  53. package/lib/generated/sqlserver/models.js +1 -0
  54. package/lib/health.js +180 -0
  55. package/lib/index.js +676 -0
  56. package/lib/notify.js +56 -0
  57. package/lib/projector.js +191 -0
  58. package/lib/status-route.js +172 -0
  59. package/lib/types/backends/database.d.ts +78 -0
  60. package/lib/types/backfill.d.ts +67 -0
  61. package/lib/types/client/index.d.ts +12 -0
  62. package/lib/types/client/panel.d.ts +79 -0
  63. package/lib/types/client/toast.d.ts +38 -0
  64. package/lib/types/compaction.d.ts +3 -0
  65. package/lib/types/config.d.ts +52 -0
  66. package/lib/types/ddl.d.ts +49 -0
  67. package/lib/types/generated/mysql/browser.d.ts +14 -0
  68. package/lib/types/generated/mysql/client.d.ts +33 -0
  69. package/lib/types/generated/mysql/commonInputTypes.d.ts +396 -0
  70. package/lib/types/generated/mysql/enums.d.ts +1 -0
  71. package/lib/types/generated/mysql/internal/class.d.ts +143 -0
  72. package/lib/types/generated/mysql/internal/prismaNamespace.d.ts +709 -0
  73. package/lib/types/generated/mysql/internal/prismaNamespaceBrowser.d.ts +112 -0
  74. package/lib/types/generated/mysql/models/AiChatHistory.d.ts +1258 -0
  75. package/lib/types/generated/mysql/models/AiMessage.d.ts +1359 -0
  76. package/lib/types/generated/mysql/models.d.ts +3 -0
  77. package/lib/types/generated/postgresql/browser.d.ts +14 -0
  78. package/lib/types/generated/postgresql/client.d.ts +33 -0
  79. package/lib/types/generated/postgresql/commonInputTypes.d.ts +392 -0
  80. package/lib/types/generated/postgresql/enums.d.ts +1 -0
  81. package/lib/types/generated/postgresql/internal/class.d.ts +143 -0
  82. package/lib/types/generated/postgresql/internal/prismaNamespace.d.ts +728 -0
  83. package/lib/types/generated/postgresql/internal/prismaNamespaceBrowser.d.ts +95 -0
  84. package/lib/types/generated/postgresql/models/AiChatHistory.d.ts +1373 -0
  85. package/lib/types/generated/postgresql/models/AiMessage.d.ts +1496 -0
  86. package/lib/types/generated/postgresql/models.d.ts +3 -0
  87. package/lib/types/generated/sqlite/browser.d.ts +14 -0
  88. package/lib/types/generated/sqlite/client.d.ts +33 -0
  89. package/lib/types/generated/sqlite/commonInputTypes.d.ts +373 -0
  90. package/lib/types/generated/sqlite/enums.d.ts +1 -0
  91. package/lib/types/generated/sqlite/internal/class.d.ts +143 -0
  92. package/lib/types/generated/sqlite/internal/prismaNamespace.d.ts +705 -0
  93. package/lib/types/generated/sqlite/internal/prismaNamespaceBrowser.d.ts +92 -0
  94. package/lib/types/generated/sqlite/models/AiChatHistory.d.ts +1371 -0
  95. package/lib/types/generated/sqlite/models/AiMessage.d.ts +1493 -0
  96. package/lib/types/generated/sqlite/models.d.ts +3 -0
  97. package/lib/types/generated/sqlserver/browser.d.ts +14 -0
  98. package/lib/types/generated/sqlserver/client.d.ts +33 -0
  99. package/lib/types/generated/sqlserver/commonInputTypes.d.ts +333 -0
  100. package/lib/types/generated/sqlserver/enums.d.ts +1 -0
  101. package/lib/types/generated/sqlserver/internal/class.d.ts +143 -0
  102. package/lib/types/generated/sqlserver/internal/prismaNamespace.d.ts +669 -0
  103. package/lib/types/generated/sqlserver/internal/prismaNamespaceBrowser.d.ts +80 -0
  104. package/lib/types/generated/sqlserver/models/AiChatHistory.d.ts +1257 -0
  105. package/lib/types/generated/sqlserver/models/AiMessage.d.ts +1375 -0
  106. package/lib/types/generated/sqlserver/models.d.ts +3 -0
  107. package/lib/types/health.d.ts +52 -0
  108. package/lib/types/index.d.ts +91 -0
  109. package/lib/types/notify.d.ts +35 -0
  110. package/lib/types/projector.d.ts +51 -0
  111. package/lib/types/status-route.d.ts +48 -0
  112. package/lib/types/types.d.ts +58 -0
  113. package/lib/types.js +8 -0
  114. package/package.json +126 -3
  115. package/preview.png +0 -0
  116. package/prisma/schema.mysql.prisma +78 -0
  117. package/prisma/schema.postgresql.prisma +70 -0
  118. package/prisma/schema.sqlite.prisma +70 -0
  119. package/prisma/schema.sqlserver.prisma +76 -0
@@ -0,0 +1,70 @@
1
+ // Prisma schema for the dsh-storage database backend — SQLite variant (Prisma 7).
2
+ //
3
+ // Same models as schema.mysql.prisma, without native type attributes
4
+ // (SQLite has no `@db.*` vocabulary here). Client pre-generation and table
5
+ // creation work as described in schema.mysql.prisma's header. Connection URL
6
+ // shape: file:/absolute/path/to/db.sqlite.
7
+
8
+ generator client {
9
+ provider = "prisma-client"
10
+ output = "../src/generated/sqlite"
11
+ importFileExtension = "js"
12
+ }
13
+
14
+ datasource db {
15
+ provider = "sqlite"
16
+ }
17
+
18
+ /// User and assistant messages; tool results update the assistant row's tool_calls.
19
+ model AiMessage {
20
+ id String @id @default(cuid())
21
+ sessionId String @map("session_id")
22
+ historyId String? @map("history_id")
23
+ type String
24
+ content String
25
+ thoughts Json?
26
+ model String?
27
+ tokens Json?
28
+ toolCalls Json? @map("tool_calls")
29
+ agentId String? @map("agent_id")
30
+ metadata Json?
31
+ device String?
32
+ createdAt DateTime @default(now()) @map("created_at")
33
+ updatedAt DateTime @default(now()) @updatedAt @map("updated_at")
34
+ deletedAt DateTime? @map("deleted_at")
35
+
36
+ // Relations
37
+ history AiChatHistory? @relation(fields: [historyId], references: [id], onDelete: NoAction)
38
+
39
+ @@index([sessionId], map: "idx_session")
40
+ @@index([historyId], map: "idx_history")
41
+ @@index([createdAt], map: "idx_created")
42
+ @@index([deletedAt], map: "idx_deleted")
43
+ @@index([agentId], map: "idx_agent")
44
+ @@index([sessionId, agentId, type, createdAt], map: "idx_session_agent_type_created")
45
+ @@index([sessionId, historyId, deletedAt, type, createdAt, id], map: "idx_tool_call_lookup")
46
+ @@index([sessionId, deletedAt, updatedAt, id], map: "idx_archive_recovery")
47
+ @@map("ai_messages")
48
+ }
49
+
50
+ /// Per-session rollup, maintained incrementally by the projector.
51
+ model AiChatHistory {
52
+ id String @id @default(cuid())
53
+ sessionId String @map("session_id")
54
+ title String?
55
+ summary String?
56
+ messageCount Int @default(0) @map("message_count")
57
+ totalTokens BigInt @default(0) @map("total_tokens")
58
+ firstMessageAt DateTime? @map("first_message_at")
59
+ lastMessageAt DateTime? @map("last_message_at")
60
+ metadata Json?
61
+ device String?
62
+ deletedAt DateTime? @map("deleted_at")
63
+
64
+ // Relations
65
+ messages AiMessage[]
66
+
67
+ @@index([sessionId], map: "idx_chat_history_session")
68
+ @@index([deletedAt], map: "idx_chat_history_deleted")
69
+ @@map("ai_chat_histories")
70
+ }
@@ -0,0 +1,76 @@
1
+ // Prisma schema for the dsh-storage database backend — SQL Server variant (Prisma 7).
2
+ //
3
+ // Same models as schema.mysql.prisma, with SQL Server native types. Prisma's
4
+ // sqlserver connector has NO Json type, so every JSON column is a plain text
5
+ // column here — the backend serializes them on write automatically (derived
6
+ // from `provider: sqlserver`; SQL Server's own ISJSON/JSON_VALUE still query
7
+ // the text as JSON).
8
+ //
9
+ // Connection URL shape (parsed by the backend into a node-mssql config):
10
+ // sqlserver://host:1433;database=dbname;user=sa;password=p;encrypt=true;trustServerCertificate=true
11
+ // Client pre-generation and table creation work as described in
12
+ // schema.mysql.prisma's header.
13
+
14
+ generator client {
15
+ provider = "prisma-client"
16
+ output = "../src/generated/sqlserver"
17
+ importFileExtension = "js"
18
+ }
19
+
20
+ datasource db {
21
+ provider = "sqlserver"
22
+ }
23
+
24
+ /// User and assistant messages; tool results update the assistant row's tool_calls.
25
+ model AiMessage {
26
+ id String @id @default(cuid()) @db.Char(36)
27
+ sessionId String @map("session_id") @db.VarChar(100)
28
+ historyId String? @map("history_id") @db.Char(36)
29
+ type String @db.VarChar(50)
30
+ content String @db.NVarChar(Max)
31
+ thoughts String? @db.NVarChar(Max)
32
+ model String? @db.VarChar(100)
33
+ tokens String? @db.NVarChar(Max)
34
+ toolCalls String? @map("tool_calls") @db.NVarChar(Max)
35
+ agentId String? @map("agent_id") @db.VarChar(100)
36
+ metadata String? @db.NVarChar(Max)
37
+ device String? @map("device") @db.VarChar(100)
38
+ createdAt DateTime @default(now()) @map("created_at") @db.DateTime2
39
+ updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.DateTime2
40
+ deletedAt DateTime? @map("deleted_at") @db.DateTime2
41
+
42
+ // Relations
43
+ history AiChatHistory? @relation(fields: [historyId], references: [id], onDelete: NoAction)
44
+
45
+ @@index([sessionId], map: "idx_session")
46
+ @@index([historyId], map: "idx_history")
47
+ @@index([createdAt], map: "idx_created")
48
+ @@index([deletedAt], map: "idx_deleted")
49
+ @@index([agentId], map: "idx_agent")
50
+ @@index([sessionId, agentId, type, createdAt], map: "idx_session_agent_type_created")
51
+ @@index([sessionId, historyId, deletedAt, type, createdAt, id], map: "idx_tool_call_lookup")
52
+ @@index([sessionId, deletedAt, updatedAt, id], map: "idx_archive_recovery")
53
+ @@map("ai_messages")
54
+ }
55
+
56
+ /// Per-session rollup, maintained incrementally by the projector.
57
+ model AiChatHistory {
58
+ id String @id @default(cuid()) @db.Char(36)
59
+ sessionId String @map("session_id") @db.VarChar(100)
60
+ title String? @db.VarChar(255)
61
+ summary String? @db.NVarChar(Max)
62
+ messageCount Int @default(0) @map("message_count")
63
+ totalTokens BigInt @default(0) @map("total_tokens")
64
+ firstMessageAt DateTime? @map("first_message_at") @db.DateTime2
65
+ lastMessageAt DateTime? @map("last_message_at") @db.DateTime2
66
+ metadata String? @db.NVarChar(Max)
67
+ device String? @map("device") @db.VarChar(100)
68
+ deletedAt DateTime? @map("deleted_at") @db.DateTime2
69
+
70
+ // Relations
71
+ messages AiMessage[]
72
+
73
+ @@index([sessionId], map: "idx_chat_history_session")
74
+ @@index([deletedAt], map: "idx_chat_history_deleted")
75
+ @@map("ai_chat_histories")
76
+ }