@undefineds.co/models 0.1.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 (254) hide show
  1. package/README.md +578 -0
  2. package/dist/_drizzle-solid/columns.d.ts +37 -0
  3. package/dist/_drizzle-solid/columns.js +1 -0
  4. package/dist/_drizzle-solid/pod-table.d.ts +3 -0
  5. package/dist/_drizzle-solid/pod-table.js +1 -0
  6. package/dist/_drizzle-solid/types.d.ts +40 -0
  7. package/dist/_drizzle-solid/types.js +1 -0
  8. package/dist/agent.providers.d.ts +13 -0
  9. package/dist/agent.providers.js +69 -0
  10. package/dist/agent.repository.d.ts +85 -0
  11. package/dist/agent.repository.js +7 -0
  12. package/dist/agent.schema.d.ts +1 -0
  13. package/dist/agent.schema.js +1 -0
  14. package/dist/ai-config/index.d.ts +61 -0
  15. package/dist/ai-config/index.js +294 -0
  16. package/dist/ai-config.d.ts +1 -0
  17. package/dist/ai-config.js +1 -0
  18. package/dist/ai-model.schema.d.ts +1 -0
  19. package/dist/ai-model.schema.js +1 -0
  20. package/dist/ai-provider.schema.d.ts +1 -0
  21. package/dist/ai-provider.schema.js +1 -0
  22. package/dist/approval.schema.d.ts +1 -0
  23. package/dist/approval.schema.js +1 -0
  24. package/dist/audit.schema.d.ts +1 -0
  25. package/dist/audit.schema.js +1 -0
  26. package/dist/chat.repository.d.ts +61 -0
  27. package/dist/chat.repository.js +8 -0
  28. package/dist/chat.schema.d.ts +1 -0
  29. package/dist/chat.schema.js +1 -0
  30. package/dist/chat.utils.d.ts +3 -0
  31. package/dist/chat.utils.js +30 -0
  32. package/dist/contact.repository.d.ts +85 -0
  33. package/dist/contact.repository.js +8 -0
  34. package/dist/contact.schema.d.ts +1 -0
  35. package/dist/contact.schema.js +1 -0
  36. package/dist/core/agent-provider.schema.d.ts +1 -0
  37. package/dist/core/agent-provider.schema.js +1 -0
  38. package/dist/core/agent-status.schema.d.ts +12 -0
  39. package/dist/core/agent-status.schema.js +18 -0
  40. package/dist/core/agent.schema.d.ts +72 -0
  41. package/dist/core/agent.schema.js +38 -0
  42. package/dist/core/ai-config.schema.d.ts +11 -0
  43. package/dist/core/ai-config.schema.js +18 -0
  44. package/dist/core/ai-model.schema.d.ts +15 -0
  45. package/dist/core/ai-model.schema.js +21 -0
  46. package/dist/core/ai-provider.schema.d.ts +16 -0
  47. package/dist/core/ai-provider.schema.js +28 -0
  48. package/dist/core/approval.schema.d.ts +21 -0
  49. package/dist/core/approval.schema.js +33 -0
  50. package/dist/core/audit.schema.d.ts +17 -0
  51. package/dist/core/audit.schema.js +29 -0
  52. package/dist/core/chat.schema.d.ts +36 -0
  53. package/dist/core/chat.schema.js +45 -0
  54. package/dist/core/contact.schema.d.ts +47 -0
  55. package/dist/core/contact.schema.js +59 -0
  56. package/dist/core/credential.schema.d.ts +56 -0
  57. package/dist/core/credential.schema.js +40 -0
  58. package/dist/core/extension/extension.schema.d.ts +4 -0
  59. package/dist/core/extension/extension.schema.js +11 -0
  60. package/dist/core/extension/index.d.ts +1 -0
  61. package/dist/core/extension/index.js +1 -0
  62. package/dist/core/extension.d.ts +1 -0
  63. package/dist/core/extension.js +1 -0
  64. package/dist/core/favorite/favorite.schema.d.ts +24 -0
  65. package/dist/core/favorite/favorite.schema.js +34 -0
  66. package/dist/core/favorite/index.d.ts +1 -0
  67. package/dist/core/favorite/index.js +1 -0
  68. package/dist/core/file/file.schema.d.ts +39 -0
  69. package/dist/core/file/file.schema.js +51 -0
  70. package/dist/core/file/index.d.ts +1 -0
  71. package/dist/core/file/index.js +1 -0
  72. package/dist/core/file.d.ts +1 -0
  73. package/dist/core/file.js +1 -0
  74. package/dist/core/grant.schema.d.ts +16 -0
  75. package/dist/core/grant.schema.js +29 -0
  76. package/dist/core/import/import-job.schema.d.ts +5 -0
  77. package/dist/core/import/import-job.schema.js +5 -0
  78. package/dist/core/import/index.d.ts +1 -0
  79. package/dist/core/import/index.js +1 -0
  80. package/dist/core/import.d.ts +1 -0
  81. package/dist/core/import.js +1 -0
  82. package/dist/core/inbox-notification.schema.d.ts +9 -0
  83. package/dist/core/inbox-notification.schema.js +16 -0
  84. package/dist/core/index.d.ts +31 -0
  85. package/dist/core/index.js +32 -0
  86. package/dist/core/knowledge/index.d.ts +1 -0
  87. package/dist/core/knowledge/index.js +1 -0
  88. package/dist/core/knowledge/knowledge-folder.schema.d.ts +7 -0
  89. package/dist/core/knowledge/knowledge-folder.schema.js +6 -0
  90. package/dist/core/knowledge.d.ts +1 -0
  91. package/dist/core/knowledge.js +1 -0
  92. package/dist/core/message.schema.d.ts +33 -0
  93. package/dist/core/message.schema.js +49 -0
  94. package/dist/core/namespaces.d.ts +176 -0
  95. package/dist/core/namespaces.js +289 -0
  96. package/dist/core/profile.d.ts +16 -0
  97. package/dist/core/profile.js +19 -0
  98. package/dist/core/schema.d.ts +304 -0
  99. package/dist/core/schema.js +46 -0
  100. package/dist/core/session/index.d.ts +1 -0
  101. package/dist/core/session/index.js +1 -0
  102. package/dist/core/session/session.schema.d.ts +6 -0
  103. package/dist/core/session/session.schema.js +6 -0
  104. package/dist/core/session.d.ts +1 -0
  105. package/dist/core/session.js +1 -0
  106. package/dist/core/settings/index.d.ts +1 -0
  107. package/dist/core/settings/index.js +1 -0
  108. package/dist/core/settings/settings.schema.d.ts +49 -0
  109. package/dist/core/settings/settings.schema.js +63 -0
  110. package/dist/core/settings.d.ts +1 -0
  111. package/dist/core/settings.js +1 -0
  112. package/dist/core/thread.schema.d.ts +28 -0
  113. package/dist/core/thread.schema.js +36 -0
  114. package/dist/core/types/collaboration-blocks.d.ts +52 -0
  115. package/dist/core/types/collaboration-blocks.js +7 -0
  116. package/dist/core/types/message-block.d.ts +270 -0
  117. package/dist/core/types/message-block.js +125 -0
  118. package/dist/core/vector-store.schema.d.ts +25 -0
  119. package/dist/core/vector-store.schema.js +35 -0
  120. package/dist/core/vocab/_namespaces.d.ts +1 -0
  121. package/dist/core/vocab/_namespaces.js +3 -0
  122. package/dist/core/vocab/chat.vocab.d.ts +16 -0
  123. package/dist/core/vocab/chat.vocab.js +22 -0
  124. package/dist/core/vocab/contact.vocab.d.ts +21 -0
  125. package/dist/core/vocab/contact.vocab.js +22 -0
  126. package/dist/core/vocab/index.d.ts +6 -0
  127. package/dist/core/vocab/index.js +6 -0
  128. package/dist/core/vocab/message.vocab.d.ts +20 -0
  129. package/dist/core/vocab/message.vocab.js +24 -0
  130. package/dist/core/vocab/sidecar.vocab.d.ts +46 -0
  131. package/dist/core/vocab/sidecar.vocab.js +47 -0
  132. package/dist/core/vocab/thread.vocab.d.ts +11 -0
  133. package/dist/core/vocab/thread.vocab.js +14 -0
  134. package/dist/core/vocab/workspace.vocab.d.ts +12 -0
  135. package/dist/core/vocab/workspace.vocab.js +13 -0
  136. package/dist/core/vocab.d.ts +1 -0
  137. package/dist/core/vocab.js +1 -0
  138. package/dist/core/workspace.schema.d.ts +35 -0
  139. package/dist/core/workspace.schema.js +106 -0
  140. package/dist/core.d.ts +1 -0
  141. package/dist/core.js +1 -0
  142. package/dist/credential.schema.d.ts +1 -0
  143. package/dist/credential.schema.js +1 -0
  144. package/dist/discovery/index.d.ts +31 -0
  145. package/dist/discovery/index.js +147 -0
  146. package/dist/discovery/models.json +2623 -0
  147. package/dist/discovery/providers.json +156 -0
  148. package/dist/discovery/types.d.ts +103 -0
  149. package/dist/discovery/types.js +12 -0
  150. package/dist/discovery/vercel.d.ts +25 -0
  151. package/dist/discovery/vercel.js +95 -0
  152. package/dist/discovery.d.ts +1 -0
  153. package/dist/discovery.js +1 -0
  154. package/dist/extension/extension.schema.d.ts +1 -0
  155. package/dist/extension/extension.schema.js +1 -0
  156. package/dist/extension/index.d.ts +1 -0
  157. package/dist/extension/index.js +1 -0
  158. package/dist/extension.d.ts +1 -0
  159. package/dist/extension.js +1 -0
  160. package/dist/favorite/favorite.schema.d.ts +1 -0
  161. package/dist/favorite/favorite.schema.js +1 -0
  162. package/dist/favorite/index.d.ts +2 -0
  163. package/dist/favorite/index.js +7 -0
  164. package/dist/favorite/starred-sync.d.ts +66 -0
  165. package/dist/favorite/starred-sync.js +156 -0
  166. package/dist/favorite.d.ts +1 -0
  167. package/dist/favorite.js +1 -0
  168. package/dist/file/file.schema.d.ts +1 -0
  169. package/dist/file/file.schema.js +1 -0
  170. package/dist/file/index.d.ts +1 -0
  171. package/dist/file/index.js +1 -0
  172. package/dist/file.d.ts +1 -0
  173. package/dist/file.js +1 -0
  174. package/dist/fixtures/contracts-chat-contact.d.ts +13 -0
  175. package/dist/fixtures/contracts-chat-contact.js +76 -0
  176. package/dist/grant.schema.d.ts +1 -0
  177. package/dist/grant.schema.js +1 -0
  178. package/dist/import/import-job.schema.d.ts +5 -0
  179. package/dist/import/import-job.schema.js +5 -0
  180. package/dist/import/index.d.ts +1 -0
  181. package/dist/import/index.js +1 -0
  182. package/dist/import.d.ts +1 -0
  183. package/dist/import.js +1 -0
  184. package/dist/inbox-notification.schema.d.ts +1 -0
  185. package/dist/inbox-notification.schema.js +1 -0
  186. package/dist/index.d.ts +41 -0
  187. package/dist/index.js +83 -0
  188. package/dist/knowledge/index.d.ts +1 -0
  189. package/dist/knowledge/index.js +1 -0
  190. package/dist/knowledge/knowledge-folder.schema.d.ts +1 -0
  191. package/dist/knowledge/knowledge-folder.schema.js +1 -0
  192. package/dist/knowledge.d.ts +1 -0
  193. package/dist/knowledge.js +1 -0
  194. package/dist/message.repository.d.ts +81 -0
  195. package/dist/message.repository.js +8 -0
  196. package/dist/message.schema.d.ts +1 -0
  197. package/dist/message.schema.js +1 -0
  198. package/dist/namespaces.d.ts +1 -0
  199. package/dist/namespaces.js +1 -0
  200. package/dist/profile.d.ts +1 -0
  201. package/dist/profile.js +1 -0
  202. package/dist/repository.d.ts +59 -0
  203. package/dist/repository.js +186 -0
  204. package/dist/schema.d.ts +1 -0
  205. package/dist/schema.js +1 -0
  206. package/dist/session/index.d.ts +1 -0
  207. package/dist/session/index.js +1 -0
  208. package/dist/session/session.schema.d.ts +1 -0
  209. package/dist/session/session.schema.js +1 -0
  210. package/dist/session.d.ts +1 -0
  211. package/dist/session.js +1 -0
  212. package/dist/settings/index.d.ts +1 -0
  213. package/dist/settings/index.js +1 -0
  214. package/dist/settings/settings.schema.d.ts +1 -0
  215. package/dist/settings/settings.schema.js +1 -0
  216. package/dist/settings.d.ts +1 -0
  217. package/dist/settings.js +1 -0
  218. package/dist/sidecar/index.d.ts +2 -0
  219. package/dist/sidecar/index.js +2 -0
  220. package/dist/sidecar/persistence-mapping.d.ts +51 -0
  221. package/dist/sidecar/persistence-mapping.js +44 -0
  222. package/dist/sidecar/sidecar-events.d.ts +632 -0
  223. package/dist/sidecar/sidecar-events.js +133 -0
  224. package/dist/thread.repository.d.ts +41 -0
  225. package/dist/thread.repository.js +8 -0
  226. package/dist/thread.schema.d.ts +1 -0
  227. package/dist/thread.schema.js +1 -0
  228. package/dist/types/collaboration-blocks.d.ts +52 -0
  229. package/dist/types/collaboration-blocks.js +7 -0
  230. package/dist/types/message-block.d.ts +270 -0
  231. package/dist/types/message-block.js +125 -0
  232. package/dist/vocab/_namespaces.d.ts +1 -0
  233. package/dist/vocab/_namespaces.js +3 -0
  234. package/dist/vocab/chat.vocab.d.ts +16 -0
  235. package/dist/vocab/chat.vocab.js +22 -0
  236. package/dist/vocab/contact.vocab.d.ts +21 -0
  237. package/dist/vocab/contact.vocab.js +22 -0
  238. package/dist/vocab/index.d.ts +6 -0
  239. package/dist/vocab/index.js +6 -0
  240. package/dist/vocab/message.vocab.d.ts +20 -0
  241. package/dist/vocab/message.vocab.js +24 -0
  242. package/dist/vocab/sidecar.vocab.d.ts +46 -0
  243. package/dist/vocab/sidecar.vocab.js +47 -0
  244. package/dist/vocab/thread.vocab.d.ts +11 -0
  245. package/dist/vocab/thread.vocab.js +14 -0
  246. package/dist/vocab/workspace.vocab.d.ts +12 -0
  247. package/dist/vocab/workspace.vocab.js +13 -0
  248. package/dist/vocab.d.ts +1 -0
  249. package/dist/vocab.js +1 -0
  250. package/dist/workspace.repository.d.ts +45 -0
  251. package/dist/workspace.repository.js +8 -0
  252. package/dist/workspace.schema.d.ts +1 -0
  253. package/dist/workspace.schema.js +1 -0
  254. package/package.json +68 -0
@@ -0,0 +1,30 @@
1
+ export const resolveRowId = (row) => {
2
+ if (!row)
3
+ return null;
4
+ const record = row;
5
+ const candidate = record['@id'] ??
6
+ record.subject ??
7
+ record.id;
8
+ if (typeof candidate === 'string' && candidate.length > 0) {
9
+ return candidate;
10
+ }
11
+ return null;
12
+ };
13
+ export const ensureRowId = (row, fallback) => {
14
+ const resolved = resolveRowId(row) ?? fallback;
15
+ if (!resolved) {
16
+ throw new Error('Record is missing an identifier');
17
+ }
18
+ return resolved;
19
+ };
20
+ export const toTimestamp = (value, fallback = 0) => {
21
+ if (value instanceof Date)
22
+ return value.getTime();
23
+ if (typeof value === 'string') {
24
+ const ms = new Date(value).getTime();
25
+ return Number.isNaN(ms) ? fallback : ms;
26
+ }
27
+ if (typeof value === 'number')
28
+ return value;
29
+ return fallback;
30
+ };
@@ -0,0 +1,85 @@
1
+ export declare const contactRepository: import("./repository.js").PodRepositoryDescriptor<import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").PodStringColumn<false, false>;
3
+ name: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
4
+ avatarUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
5
+ entityUri: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, true, false>;
6
+ rdfType: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, true, true>;
7
+ contactType: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
8
+ isPublic: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"boolean", null, false, true>;
9
+ externalPlatform: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
10
+ externalId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
11
+ alias: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
12
+ starred: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"boolean", null, false, true>;
13
+ note: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
14
+ sortKey: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
15
+ gender: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
16
+ province: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
17
+ city: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
18
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
19
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
20
+ deletedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
21
+ lastSyncedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
22
+ }>>, {
23
+ id: string;
24
+ name: string;
25
+ avatarUrl: string;
26
+ entityUri: string;
27
+ rdfType: string;
28
+ contactType: string;
29
+ isPublic: boolean;
30
+ externalPlatform: string;
31
+ externalId: string;
32
+ alias: string;
33
+ starred: boolean;
34
+ note: string;
35
+ sortKey: string;
36
+ gender: string;
37
+ province: string;
38
+ city: string;
39
+ createdAt: Date;
40
+ updatedAt: Date;
41
+ deletedAt: Date;
42
+ lastSyncedAt: Date;
43
+ }, {
44
+ name: string;
45
+ entityUri: string;
46
+ contactType: string;
47
+ id?: string | undefined;
48
+ avatarUrl?: string | undefined;
49
+ rdfType?: string | undefined;
50
+ isPublic?: boolean | undefined;
51
+ externalPlatform?: string | undefined;
52
+ externalId?: string | undefined;
53
+ alias?: string | undefined;
54
+ starred?: boolean | undefined;
55
+ note?: string | undefined;
56
+ sortKey?: string | undefined;
57
+ gender?: string | undefined;
58
+ province?: string | undefined;
59
+ city?: string | undefined;
60
+ createdAt?: Date | undefined;
61
+ updatedAt?: Date | undefined;
62
+ deletedAt?: Date | undefined;
63
+ lastSyncedAt?: Date | undefined;
64
+ }, {
65
+ id?: string | null | undefined;
66
+ name?: string | undefined;
67
+ avatarUrl?: string | null | undefined;
68
+ entityUri?: string | undefined;
69
+ rdfType?: string | undefined;
70
+ contactType?: string | undefined;
71
+ isPublic?: boolean | null | undefined;
72
+ externalPlatform?: string | null | undefined;
73
+ externalId?: string | null | undefined;
74
+ alias?: string | null | undefined;
75
+ starred?: boolean | null | undefined;
76
+ note?: string | null | undefined;
77
+ sortKey?: string | null | undefined;
78
+ gender?: string | null | undefined;
79
+ province?: string | null | undefined;
80
+ city?: string | null | undefined;
81
+ createdAt?: Date | undefined;
82
+ updatedAt?: Date | undefined;
83
+ deletedAt?: Date | null | undefined;
84
+ lastSyncedAt?: Date | null | undefined;
85
+ }, Record<string, unknown>>;
@@ -0,0 +1,8 @@
1
+ import { definePodRepository } from './repository.js';
2
+ import { contactTable } from './contact.schema.js';
3
+ export const contactRepository = definePodRepository({
4
+ namespace: 'contact',
5
+ table: contactTable,
6
+ searchableFields: ['name', 'alias', 'note'],
7
+ defaultSort: { field: 'name', direction: 'asc' },
8
+ });
@@ -0,0 +1 @@
1
+ export { contactTable, ContactClass, ContactType, isAgentContact, isGroupContact, type ContactRow, type ContactInsert, type ContactUpdate, type ContactClassValue, type ContactTypeValue, } from './core.js';
@@ -0,0 +1 @@
1
+ export { contactTable, ContactClass, ContactType, isAgentContact, isGroupContact, } from './core.js';
@@ -0,0 +1 @@
1
+ export { aiProviderTable as agentProviderTable, aiProviderRelations as agentProviderRelations, type AIProviderRow as AgentProviderRow, type AIProviderInsert as AgentProviderInsert, type AIProviderUpdate as AgentProviderUpdate, } from './ai-provider.schema.js';
@@ -0,0 +1 @@
1
+ export { aiProviderTable as agentProviderTable, aiProviderRelations as agentProviderRelations, } from './ai-provider.schema.js';
@@ -0,0 +1,12 @@
1
+ export declare const agentStatusTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
3
+ agentId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
4
+ status: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
5
+ startedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
6
+ lastActivityAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
7
+ currentTaskId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
8
+ errorMessage: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
9
+ }>>;
10
+ export type AgentStatusRow = typeof agentStatusTable.$inferSelect;
11
+ export type AgentStatusInsert = typeof agentStatusTable.$inferInsert;
12
+ export type AgentStatusUpdate = typeof agentStatusTable.$inferUpdate;
@@ -0,0 +1,18 @@
1
+ import { solidSchema, string, timestamp } from '@undefineds.co/drizzle-solid';
2
+ import { UDFS } from './namespaces.js';
3
+ const agentStatusSchema = solidSchema({
4
+ id: string('id').primaryKey(),
5
+ agentId: string('agentId').predicate(UDFS.agentId),
6
+ status: string('status').predicate(UDFS.status),
7
+ startedAt: timestamp('startedAt').predicate(UDFS.startedAt),
8
+ lastActivityAt: timestamp('lastActivityAt').predicate(UDFS.lastActivityAt),
9
+ currentTaskId: string('currentTaskId').predicate(UDFS.currentTaskId),
10
+ errorMessage: string('errorMessage').predicate(UDFS.errorMessage),
11
+ }, {
12
+ type: UDFS.AgentStatus,
13
+ namespace: UDFS,
14
+ });
15
+ export const agentStatusTable = agentStatusSchema.table('agentStatus', {
16
+ base: '/settings/ai/agent-status.ttl',
17
+ subjectTemplate: '#{id}',
18
+ });
@@ -0,0 +1,72 @@
1
+ export interface CreateAgentSchemaOptions {
2
+ nameRequired?: boolean;
3
+ }
4
+ export declare function createAgentSchema(options?: CreateAgentSchemaOptions): import("@undefineds.co/drizzle-solid").SolidSchema<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
5
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
6
+ name: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
7
+ description: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
8
+ avatarUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
9
+ instructions: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
10
+ provider: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
11
+ runtimeKind: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
12
+ credential: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
13
+ model: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
14
+ enabled: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, true>;
15
+ temperature: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
16
+ tools: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"array", "string", false, false>;
17
+ contextRound: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
18
+ maxTurns: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
19
+ timeout: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
20
+ ttsModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
21
+ videoModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
22
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
23
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
24
+ deletedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
25
+ }>>;
26
+ export declare const agentSchema: import("@undefineds.co/drizzle-solid").SolidSchema<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
27
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
28
+ name: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
29
+ description: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
30
+ avatarUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
31
+ instructions: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
32
+ provider: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
33
+ runtimeKind: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
34
+ credential: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
35
+ model: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
36
+ enabled: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, true>;
37
+ temperature: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
38
+ tools: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"array", "string", false, false>;
39
+ contextRound: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
40
+ maxTurns: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
41
+ timeout: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
42
+ ttsModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
43
+ videoModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
44
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
45
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
46
+ deletedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
47
+ }>>;
48
+ export declare const agentTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
49
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
50
+ name: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
51
+ description: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
52
+ avatarUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
53
+ instructions: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
54
+ provider: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
55
+ runtimeKind: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
56
+ credential: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
57
+ model: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
58
+ enabled: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, true>;
59
+ temperature: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
60
+ tools: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"array", "string", false, false>;
61
+ contextRound: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
62
+ maxTurns: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
63
+ timeout: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
64
+ ttsModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
65
+ videoModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
66
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
67
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
68
+ deletedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
69
+ }>>;
70
+ export type AgentRow = typeof agentTable.$inferSelect;
71
+ export type AgentInsert = typeof agentTable.$inferInsert;
72
+ export type AgentUpdate = typeof agentTable.$inferUpdate;
@@ -0,0 +1,38 @@
1
+ import { integer, real, solidSchema, string, text, timestamp, uri } from '@undefineds.co/drizzle-solid';
2
+ import { DCTerms, FOAF, UDFS, VCARD } from './namespaces.js';
3
+ import { aiModelTable } from './ai-model.schema.js';
4
+ import { credentialTable } from './credential.schema.js';
5
+ export function createAgentSchema(options = {}) {
6
+ const nameColumn = string('name').predicate(FOAF.name);
7
+ return solidSchema({
8
+ id: string('id').primaryKey(),
9
+ name: options.nameRequired === false ? nameColumn : nameColumn.notNull(),
10
+ description: text('description').predicate(DCTerms.description),
11
+ avatarUrl: uri('avatarUrl').predicate(VCARD.hasPhoto),
12
+ instructions: text('instructions').predicate(UDFS.systemPrompt),
13
+ provider: uri('provider').predicate(UDFS.provider),
14
+ runtimeKind: string('runtimeKind').predicate(UDFS.runtimeKind),
15
+ credential: uri('credential').predicate(UDFS.credential).link(credentialTable),
16
+ model: uri('model').predicate(UDFS.model).link(aiModelTable),
17
+ enabled: string('enabled').predicate(UDFS.enabled).default('true'),
18
+ temperature: real('temperature').predicate(UDFS.temperature).default(0.7),
19
+ tools: text('tools').array().predicate(UDFS.tools),
20
+ contextRound: integer('contextRound').predicate(UDFS.contextRound).default(4),
21
+ maxTurns: integer('maxTurns').predicate(UDFS.maxTurns),
22
+ timeout: integer('timeout').predicate(UDFS.timeout),
23
+ ttsModel: uri('ttsModel').predicate(UDFS.ttsModel).link(aiModelTable),
24
+ videoModel: uri('videoModel').predicate(UDFS.videoModel).link(aiModelTable),
25
+ createdAt: timestamp('createdAt').predicate(DCTerms.created).notNull().defaultNow(),
26
+ updatedAt: timestamp('updatedAt').predicate(DCTerms.modified).notNull().defaultNow(),
27
+ deletedAt: timestamp('deletedAt').predicate(UDFS.deletedAt),
28
+ }, {
29
+ type: UDFS.AgentConfig,
30
+ namespace: UDFS,
31
+ });
32
+ }
33
+ export const agentSchema = createAgentSchema();
34
+ export const agentTable = agentSchema.table('agent', {
35
+ base: '/.data/agents/',
36
+ sparqlEndpoint: '/.data/agents/-/sparql',
37
+ subjectTemplate: '{id}.ttl',
38
+ });
@@ -0,0 +1,11 @@
1
+ export declare const aiConfigTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
3
+ embeddingModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
4
+ previousModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
5
+ migrationStatus: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
6
+ migrationProgress: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
7
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
8
+ }>>;
9
+ export type AIConfigRow = typeof aiConfigTable.$inferSelect;
10
+ export type AIConfigInsert = typeof aiConfigTable.$inferInsert;
11
+ export type AIConfigUpdate = typeof aiConfigTable.$inferUpdate;
@@ -0,0 +1,18 @@
1
+ import { integer, solidSchema, string, timestamp, uri } from '@undefineds.co/drizzle-solid';
2
+ import { aiModelTable } from './ai-model.schema.js';
3
+ import { UDFS } from './namespaces.js';
4
+ const aiConfigSchema = solidSchema({
5
+ id: string('id').primaryKey(),
6
+ embeddingModel: uri('embeddingModel').predicate(UDFS.embeddingModel).link(aiModelTable),
7
+ previousModel: uri('previousModel').predicate(UDFS.previousModel).link(aiModelTable),
8
+ migrationStatus: string('migrationStatus').predicate(UDFS.migrationStatus),
9
+ migrationProgress: integer('migrationProgress').predicate(UDFS.migrationProgress),
10
+ updatedAt: timestamp('updatedAt').predicate(UDFS.updatedAt),
11
+ }, {
12
+ type: UDFS.AIConfig,
13
+ namespace: UDFS,
14
+ });
15
+ export const aiConfigTable = aiConfigSchema.table('aiConfig', {
16
+ base: '/settings/ai/config.ttl',
17
+ subjectTemplate: '#{id}',
18
+ });
@@ -0,0 +1,15 @@
1
+ export declare const aiModelTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
3
+ displayName: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
4
+ modelType: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, true>;
5
+ isProvidedBy: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
6
+ dimension: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
7
+ contextLength: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
8
+ maxOutputTokens: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, false>;
9
+ status: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, true>;
10
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
11
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
12
+ }>>;
13
+ export type AIModelRow = typeof aiModelTable.$inferSelect;
14
+ export type AIModelInsert = typeof aiModelTable.$inferInsert;
15
+ export type AIModelUpdate = typeof aiModelTable.$inferUpdate;
@@ -0,0 +1,21 @@
1
+ import { integer, solidSchema, string, timestamp, uri } from '@undefineds.co/drizzle-solid';
2
+ import { DCTerms, RDFS, UDFS } from './namespaces.js';
3
+ const aiModelSchema = solidSchema({
4
+ id: string('id').primaryKey(),
5
+ displayName: string('displayName').predicate(RDFS.label),
6
+ modelType: string('modelType').predicate(UDFS.modelType).default('chat'),
7
+ isProvidedBy: uri('isProvidedBy').predicate(UDFS.isProvidedBy),
8
+ dimension: integer('dimension').predicate(UDFS.dimension),
9
+ contextLength: integer('contextLength').predicate(UDFS.contextLength),
10
+ maxOutputTokens: integer('maxOutputTokens').predicate(UDFS.maxOutputTokens),
11
+ status: string('status').predicate(UDFS.status).default('active'),
12
+ createdAt: timestamp('createdAt').predicate(DCTerms.created).notNull().defaultNow(),
13
+ updatedAt: timestamp('updatedAt').predicate(DCTerms.modified).notNull().defaultNow(),
14
+ }, {
15
+ type: UDFS.Model,
16
+ namespace: UDFS,
17
+ });
18
+ export const aiModelTable = aiModelSchema.table('aiModel', {
19
+ base: '/settings/ai/models.ttl',
20
+ subjectTemplate: '#{id}',
21
+ });
@@ -0,0 +1,16 @@
1
+ export declare const aiProviderTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
3
+ displayName: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
4
+ baseUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
5
+ proxyUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
6
+ projectId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
7
+ organizationId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
8
+ hasModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
9
+ defaultModel: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
10
+ hasCredential: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
11
+ enabled: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, true>;
12
+ }>>;
13
+ export declare const aiProviderRelations: Record<string, import("@undefineds.co/drizzle-solid").RelationDefinition>;
14
+ export type AIProviderRow = typeof aiProviderTable.$inferSelect;
15
+ export type AIProviderInsert = typeof aiProviderTable.$inferInsert;
16
+ export type AIProviderUpdate = typeof aiProviderTable.$inferUpdate;
@@ -0,0 +1,28 @@
1
+ import { relations, solidSchema, string, uri } from '@undefineds.co/drizzle-solid';
2
+ import { aiModelTable } from './ai-model.schema.js';
3
+ import { RDFS, UDFS } from './namespaces.js';
4
+ const aiProviderSchema = solidSchema({
5
+ id: string('id').primaryKey(),
6
+ displayName: string('displayName').predicate(RDFS.label),
7
+ baseUrl: string('baseUrl').predicate(UDFS.baseUrl),
8
+ proxyUrl: string('proxyUrl').predicate(UDFS.proxyUrl),
9
+ projectId: string('projectId').predicate(UDFS.projectId),
10
+ organizationId: string('organizationId').predicate(UDFS.organizationId),
11
+ hasModel: uri('hasModel').predicate(UDFS.hasModel),
12
+ defaultModel: uri('defaultModel').predicate(UDFS.defaultModel).link(aiModelTable),
13
+ hasCredential: uri('hasCredential').predicate(UDFS.hasCredential),
14
+ enabled: string('enabled').predicate(UDFS.enabled).default('true'),
15
+ }, {
16
+ type: UDFS.Provider,
17
+ namespace: UDFS,
18
+ });
19
+ export const aiProviderTable = aiProviderSchema.table('aiProvider', {
20
+ base: '/settings/ai/providers.ttl',
21
+ subjectTemplate: '#{id}',
22
+ });
23
+ export const aiProviderRelations = relations(aiProviderTable, ({ one }) => ({
24
+ model: one(aiModelTable, {
25
+ fields: [aiProviderTable.defaultModel],
26
+ references: [aiModelTable.id],
27
+ }),
28
+ }));
@@ -0,0 +1,21 @@
1
+ export declare const approvalTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").PodStringColumn<false, false>;
3
+ session: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, true, false>;
4
+ toolCallId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
5
+ toolName: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
6
+ target: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, true, false>;
7
+ action: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, true, false>;
8
+ risk: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
9
+ status: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, true>;
10
+ assignedTo: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
11
+ decisionBy: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
12
+ decisionRole: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
13
+ onBehalfOf: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
14
+ reason: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
15
+ policyVersion: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
16
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
17
+ resolvedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
18
+ }>>;
19
+ export type ApprovalRow = typeof approvalTable.$inferSelect;
20
+ export type ApprovalInsert = typeof approvalTable.$inferInsert;
21
+ export type ApprovalUpdate = typeof approvalTable.$inferUpdate;
@@ -0,0 +1,33 @@
1
+ import { podTable, uri, string, text, timestamp, id } from '@undefineds.co/drizzle-solid';
2
+ import { ODRL, UDFS, DCTerms } from './namespaces.js';
3
+ // Approval request domain store (separate from Solid inbox notifications)
4
+ export const approvalTable = podTable('approval', {
5
+ id: id('id'),
6
+ // Relations
7
+ session: uri('session').predicate(UDFS.session).notNull(),
8
+ toolCallId: string('toolCallId').predicate(UDFS.toolCallId).notNull(),
9
+ // Request details
10
+ toolName: string('toolName').predicate(UDFS.toolName).notNull(),
11
+ // Standard-ish policy surface for action on target (derived by the bridge).
12
+ // NOTE: These MUST be Pod URIs / vocab URIs, not runtime-local identifiers.
13
+ target: uri('target').predicate(ODRL.target).notNull(),
14
+ action: uri('action').predicate(ODRL.action).notNull(),
15
+ risk: string('risk').predicate(UDFS.risk).notNull(),
16
+ status: string('status').predicate(UDFS.status).notNull().default('pending'),
17
+ // Decision identity (WebID semantics)
18
+ assignedTo: uri('assignedTo').predicate(UDFS.assignedTo),
19
+ decisionBy: uri('decisionBy').predicate(UDFS.decisionBy),
20
+ decisionRole: string('decisionRole').predicate(UDFS.decisionRole),
21
+ onBehalfOf: uri('onBehalfOf').predicate(UDFS.onBehalfOf),
22
+ reason: text('reason').predicate(UDFS.reason),
23
+ policyVersion: string('policyVersion').predicate(UDFS.policyVersion),
24
+ // Timestamps
25
+ createdAt: timestamp('createdAt').predicate(DCTerms.created).notNull().defaultNow(),
26
+ resolvedAt: timestamp('resolvedAt').predicate(UDFS.resolvedAt),
27
+ }, {
28
+ base: '/.data/approvals/',
29
+ sparqlEndpoint: '/.data/approvals/-/sparql',
30
+ type: UDFS.ApprovalRequest,
31
+ namespace: UDFS,
32
+ subjectTemplate: '{id}.ttl',
33
+ });
@@ -0,0 +1,17 @@
1
+ export declare const auditTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
2
+ id: import("@undefineds.co/models/_drizzle-solid/columns").PodStringColumn<false, false>;
3
+ action: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
4
+ actor: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, true, false>;
5
+ actorRole: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
6
+ onBehalfOf: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
7
+ session: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
8
+ toolCallId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
9
+ approval: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
10
+ context: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
11
+ policy: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
12
+ policyVersion: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
13
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
14
+ }>>;
15
+ export type AuditRow = typeof auditTable.$inferSelect;
16
+ export type AuditInsert = typeof auditTable.$inferInsert;
17
+ export type AuditUpdate = typeof auditTable.$inferUpdate;
@@ -0,0 +1,29 @@
1
+ import { podTable, uri, string, text, timestamp, id } from '@undefineds.co/drizzle-solid';
2
+ import { UDFS, DCTerms } from './namespaces.js';
3
+ // Append-only audit log (separate from Solid inbox notifications)
4
+ export const auditTable = podTable('audit', {
5
+ id: id('id'),
6
+ // Audit action
7
+ action: string('action').predicate(UDFS.action).notNull(),
8
+ // Actor identity (WebID semantics)
9
+ actor: uri('actor').predicate(UDFS.actor).notNull(),
10
+ actorRole: string('actorRole').predicate(UDFS.actorRole).notNull(),
11
+ onBehalfOf: uri('onBehalfOf').predicate(UDFS.onBehalfOf),
12
+ // Relations
13
+ session: uri('session').predicate(UDFS.session),
14
+ toolCallId: string('toolCallId').predicate(UDFS.toolCallId),
15
+ approval: uri('approval').predicate(UDFS.approval),
16
+ // JSON payload with policy/reasoning snapshot
17
+ context: text('context').predicate(UDFS.context),
18
+ // Policy metadata
19
+ policy: uri('policy').predicate(UDFS.policy),
20
+ policyVersion: string('policyVersion').predicate(UDFS.policyVersion),
21
+ // Timestamps
22
+ createdAt: timestamp('createdAt').predicate(DCTerms.created).notNull().defaultNow(),
23
+ }, {
24
+ base: '/.data/audit/',
25
+ sparqlEndpoint: '/.data/audit/-/sparql',
26
+ type: UDFS.AuditEntry,
27
+ namespace: UDFS,
28
+ subjectTemplate: '{id}.ttl',
29
+ });
@@ -0,0 +1,36 @@
1
+ export type ChatMemberRole = 'owner' | 'admin' | 'member';
2
+ export interface ChatMetadata {
3
+ memberRoles?: Record<string, ChatMemberRole>;
4
+ }
5
+ /**
6
+ * Chat schema (channel/place).
7
+ *
8
+ * CP0 baseline (alignment):
9
+ * - Chat is a container for messages/widgets regardless of counterpart type.
10
+ * - Do not encode counterpart-specific behavior in Chat (no chatType/subtype).
11
+ * - Participants use Solid chat-aligned flow vocabulary (wf/flow).
12
+ *
13
+ * Storage structure (aligned with xpod):
14
+ * - Chat metadata stored as #this in index.ttl
15
+ * - Location: /.data/chat/{id}/index.ttl#this
16
+ * - Threads stored as fragments in same file: /.data/chat/{id}/index.ttl#{threadId}
17
+ */
18
+ export declare const chatTable: import("@undefineds.co/models/_drizzle-solid/pod-table").PodTableWithColumns<import("@undefineds.co/models/_drizzle-solid/types").ResolvedColumns<{
19
+ id: import("@undefineds.co/models/_drizzle-solid/columns").PodStringColumn<false, false>;
20
+ title: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, true, false>;
21
+ description: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
22
+ avatarUrl: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
23
+ starred: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"boolean", null, false, true>;
24
+ muted: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"boolean", null, false, true>;
25
+ unreadCount: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"integer", null, false, true>;
26
+ participants: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"array", "uri", false, false>;
27
+ metadata: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"object", null, false, false>;
28
+ lastActiveAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, false, false>;
29
+ lastMessageId: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"uri", null, false, false>;
30
+ lastMessagePreview: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"string", null, false, false>;
31
+ createdAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
32
+ updatedAt: import("@undefineds.co/models/_drizzle-solid/columns").ColumnBuilder<"datetime", null, true, true>;
33
+ }>>;
34
+ export type ChatRow = typeof chatTable.$inferSelect;
35
+ export type ChatInsert = typeof chatTable.$inferInsert;
36
+ export type ChatUpdate = typeof chatTable.$inferUpdate;
@@ -0,0 +1,45 @@
1
+ import { boolean, object, podTable, string, text, timestamp, uri, id, integer } from '@undefineds.co/drizzle-solid';
2
+ import { UDFS, DCTerms, SCHEMA, MEETING, WF } from './namespaces.js';
3
+ /**
4
+ * Chat schema (channel/place).
5
+ *
6
+ * CP0 baseline (alignment):
7
+ * - Chat is a container for messages/widgets regardless of counterpart type.
8
+ * - Do not encode counterpart-specific behavior in Chat (no chatType/subtype).
9
+ * - Participants use Solid chat-aligned flow vocabulary (wf/flow).
10
+ *
11
+ * Storage structure (aligned with xpod):
12
+ * - Chat metadata stored as #this in index.ttl
13
+ * - Location: /.data/chat/{id}/index.ttl#this
14
+ * - Threads stored as fragments in same file: /.data/chat/{id}/index.ttl#{threadId}
15
+ */
16
+ export const chatTable = podTable('chats', {
17
+ id: id('id'),
18
+ // Display
19
+ title: string('title').predicate(DCTerms.title).notNull(),
20
+ description: string('description').predicate(DCTerms.description),
21
+ avatarUrl: uri('avatarUrl').predicate(SCHEMA.image),
22
+ // Chat state
23
+ starred: boolean('starred').predicate(UDFS.favorite).default(false),
24
+ muted: boolean('muted').predicate(UDFS.muted).default(false),
25
+ unreadCount: integer('unreadCount').predicate(UDFS.unreadCount).default(0),
26
+ // Explicit membership for group chats.
27
+ participants: uri('participants')
28
+ .array()
29
+ .predicate(WF.participant),
30
+ // Structured chat metadata.
31
+ metadata: object('metadata').predicate(UDFS.metadata),
32
+ // Last activity
33
+ lastActiveAt: timestamp('lastActiveAt').predicate(UDFS.lastActiveAt),
34
+ lastMessageId: uri('lastMessageId').predicate(WF.message),
35
+ lastMessagePreview: text('lastMessagePreview').predicate(SCHEMA.text),
36
+ // Timestamps
37
+ createdAt: timestamp('createdAt').predicate(DCTerms.created).notNull().defaultNow(),
38
+ updatedAt: timestamp('updatedAt').predicate(DCTerms.modified).notNull().defaultNow(),
39
+ }, {
40
+ base: '/.data/chat/',
41
+ sparqlEndpoint: '/.data/chat/-/sparql',
42
+ type: MEETING.LongChat,
43
+ namespace: UDFS,
44
+ subjectTemplate: '{id}/index.ttl#this',
45
+ });