@sealkeeper/schema 0.0.1 → 0.4.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 (68) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +14 -1
  4. package/dist/agent-id.d.ts +13 -0
  5. package/dist/agent-id.js +29 -0
  6. package/dist/agent-name.d.ts +9 -0
  7. package/dist/agent-name.js +58 -0
  8. package/dist/api.d.ts +1207 -0
  9. package/dist/api.js +624 -0
  10. package/dist/base64url.d.ts +4 -0
  11. package/dist/base64url.js +43 -0
  12. package/dist/credential.d.ts +392 -0
  13. package/dist/credential.js +287 -0
  14. package/dist/db/agent-renames.d.ts +126 -0
  15. package/dist/db/agent-renames.js +20 -0
  16. package/dist/db/agents.d.ts +145 -0
  17. package/dist/db/agents.js +40 -0
  18. package/dist/db/client.d.ts +1893 -0
  19. package/dist/db/client.js +34 -0
  20. package/dist/db/credentials.d.ts +143 -0
  21. package/dist/db/credentials.js +16 -0
  22. package/dist/db/deleted-operators.d.ts +75 -0
  23. package/dist/db/deleted-operators.js +13 -0
  24. package/dist/db/events.d.ts +160 -0
  25. package/dist/db/events.js +34 -0
  26. package/dist/db/feed-items.d.ts +109 -0
  27. package/dist/db/feed-items.js +16 -0
  28. package/dist/db/index.d.ts +56 -0
  29. package/dist/db/index.js +23 -0
  30. package/dist/db/migrate.d.ts +1 -0
  31. package/dist/db/migrate.js +30 -0
  32. package/dist/db/migrator.d.ts +2 -0
  33. package/dist/db/migrator.js +20 -0
  34. package/dist/db/operators.d.ts +109 -0
  35. package/dist/db/operators.js +11 -0
  36. package/dist/db/quota-counters.d.ts +109 -0
  37. package/dist/db/quota-counters.js +17 -0
  38. package/dist/db/ratings.d.ts +160 -0
  39. package/dist/db/ratings.js +27 -0
  40. package/dist/db/scores.d.ts +160 -0
  41. package/dist/db/scores.js +15 -0
  42. package/dist/db/standing.d.ts +228 -0
  43. package/dist/db/standing.js +29 -0
  44. package/dist/db/task-outcomes.d.ts +126 -0
  45. package/dist/db/task-outcomes.js +18 -0
  46. package/dist/db/tasks.d.ts +251 -0
  47. package/dist/db/tasks.js +49 -0
  48. package/dist/db/timestamps.d.ts +4 -0
  49. package/dist/db/timestamps.js +24 -0
  50. package/dist/db/url.d.ts +12 -0
  51. package/dist/db/url.js +25 -0
  52. package/dist/dimensions.d.ts +21 -0
  53. package/dist/dimensions.js +15 -0
  54. package/dist/envelope.d.ts +16 -0
  55. package/dist/envelope.js +70 -0
  56. package/dist/events.d.ts +153 -0
  57. package/dist/events.js +98 -0
  58. package/dist/index.d.ts +12 -0
  59. package/dist/index.js +12 -0
  60. package/dist/seal-conformance.d.ts +14 -0
  61. package/dist/seal-conformance.js +176 -0
  62. package/dist/standing.d.ts +46 -0
  63. package/dist/standing.js +79 -0
  64. package/dist/tasks.d.ts +49 -0
  65. package/dist/tasks.js +102 -0
  66. package/dist/top-dimensions.d.ts +9 -0
  67. package/dist/top-dimensions.js +13 -0
  68. package/package.json +69 -5
@@ -0,0 +1,34 @@
1
+ import { drizzle } from 'drizzle-orm/postgres-js';
2
+ import postgres from 'postgres';
3
+ import { agentRenames } from './agent-renames.js';
4
+ import { agents } from './agents.js';
5
+ import { credentials } from './credentials.js';
6
+ import { deletedOperators } from './deleted-operators.js';
7
+ import { events } from './events.js';
8
+ import { feedItems } from './feed-items.js';
9
+ import { operators } from './operators.js';
10
+ import { quotaCounters } from './quota-counters.js';
11
+ import { ratings } from './ratings.js';
12
+ import { scores } from './scores.js';
13
+ import { standing } from './standing.js';
14
+ import { taskOutcomes } from './task-outcomes.js';
15
+ import { tasks } from './tasks.js';
16
+ import { pgArgs } from './url.js';
17
+ const schema = {
18
+ operators,
19
+ agents,
20
+ events,
21
+ tasks,
22
+ taskOutcomes,
23
+ ratings,
24
+ credentials,
25
+ scores,
26
+ standing,
27
+ quotaCounters,
28
+ feedItems,
29
+ agentRenames,
30
+ deletedOperators,
31
+ };
32
+ export function createDb(url) {
33
+ return drizzle(postgres(...pgArgs(url)), { schema });
34
+ }
@@ -0,0 +1,143 @@
1
+ export declare const credentials: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "credentials";
3
+ schema: undefined;
4
+ columns: {
5
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "created_at";
7
+ tableName: "credentials";
8
+ dataType: "date";
9
+ columnType: "PgTimestamp";
10
+ data: Date;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: false;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "updated_at";
24
+ tableName: "credentials";
25
+ dataType: "date";
26
+ columnType: "PgTimestamp";
27
+ data: Date;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: true;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: undefined;
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ id: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "id";
41
+ tableName: "credentials";
42
+ dataType: "string";
43
+ columnType: "PgUUID";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: true;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: undefined;
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ agentId: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "agent_id";
58
+ tableName: "credentials";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ kid: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "kid";
75
+ tableName: "credentials";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: true;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ jws: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "jws";
92
+ tableName: "credentials";
93
+ dataType: "string";
94
+ columnType: "PgText";
95
+ data: string;
96
+ driverParam: string;
97
+ notNull: true;
98
+ hasDefault: false;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: [string, ...string[]];
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ issuedAt: import("drizzle-orm/pg-core").PgColumn<{
108
+ name: "issued_at";
109
+ tableName: "credentials";
110
+ dataType: "date";
111
+ columnType: "PgTimestamp";
112
+ data: Date;
113
+ driverParam: string;
114
+ notNull: true;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: undefined;
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {}>;
124
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "expires_at";
126
+ tableName: "credentials";
127
+ dataType: "date";
128
+ columnType: "PgTimestamp";
129
+ data: Date;
130
+ driverParam: string;
131
+ notNull: true;
132
+ hasDefault: false;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: undefined;
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {}>;
141
+ };
142
+ dialect: 'pg';
143
+ }>;
@@ -0,0 +1,16 @@
1
+ import { index, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';
2
+ import { agents } from './agents.js';
3
+ import { timestamps } from './timestamps.js';
4
+ export const credentials = pgTable('credentials', {
5
+ id: uuid('id').primaryKey(),
6
+ agentId: text('agent_id')
7
+ .notNull()
8
+ .references(() => agents.id),
9
+ kid: text('kid').notNull(),
10
+ jws: text('jws').notNull(),
11
+ issuedAt: timestamp('issued_at', { withTimezone: true }).notNull(),
12
+ expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
13
+ ...timestamps,
14
+ }, (t) => [
15
+ index('credentials_agent_id_expires_at_idx').on(t.agentId, t.expiresAt),
16
+ ]);
@@ -0,0 +1,75 @@
1
+ export declare const deletedOperators: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "deleted_operators";
3
+ schema: undefined;
4
+ columns: {
5
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "created_at";
7
+ tableName: "deleted_operators";
8
+ dataType: "date";
9
+ columnType: "PgTimestamp";
10
+ data: Date;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: false;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "updated_at";
24
+ tableName: "deleted_operators";
25
+ dataType: "date";
26
+ columnType: "PgTimestamp";
27
+ data: Date;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: true;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: undefined;
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ githubId: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "github_id";
41
+ tableName: "deleted_operators";
42
+ dataType: "number";
43
+ columnType: "PgBigInt53";
44
+ data: number;
45
+ driverParam: string | number;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: true;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: undefined;
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ deletedAt: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "deleted_at";
58
+ tableName: "deleted_operators";
59
+ dataType: "date";
60
+ columnType: "PgTimestamp";
61
+ data: Date;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: true;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: undefined;
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ };
74
+ dialect: 'pg';
75
+ }>;
@@ -0,0 +1,13 @@
1
+ import { bigint, pgTable, timestamp } from 'drizzle-orm/pg-core';
2
+ import { timestamps } from './timestamps.js';
3
+ // One row per GitHub account whose operator deleted itself. It holds the
4
+ // numeric GitHub id and when, nothing else, so registration and web sign in
5
+ // can refuse the same account for 30 days. The scoring run purges rows
6
+ // older than that. deleted_at is set by the database.
7
+ export const deletedOperators = pgTable('deleted_operators', {
8
+ githubId: bigint('github_id', { mode: 'number' }).primaryKey(),
9
+ deletedAt: timestamp('deleted_at', { withTimezone: true })
10
+ .notNull()
11
+ .defaultNow(),
12
+ ...timestamps,
13
+ });
@@ -0,0 +1,160 @@
1
+ export declare const events: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "events";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "events";
8
+ dataType: "number";
9
+ columnType: "PgBigInt53";
10
+ data: number;
11
+ driverParam: string | number;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: "always";
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ agentId: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "agent_id";
24
+ tableName: "events";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ eventId: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "event_id";
41
+ tableName: "events";
42
+ dataType: "string";
43
+ columnType: "PgUUID";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: undefined;
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ type: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "type";
58
+ tableName: "events";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ version: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "version";
75
+ tableName: "events";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: true;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ payload: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "payload";
92
+ tableName: "events";
93
+ dataType: "json";
94
+ columnType: "PgJsonb";
95
+ data: unknown;
96
+ driverParam: unknown;
97
+ notNull: true;
98
+ hasDefault: false;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: undefined;
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ envelope: import("drizzle-orm/pg-core").PgColumn<{
108
+ name: "envelope";
109
+ tableName: "events";
110
+ dataType: "string";
111
+ columnType: "PgText";
112
+ data: string;
113
+ driverParam: string;
114
+ notNull: true;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: [string, ...string[]];
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {}>;
124
+ occurredAt: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "occurred_at";
126
+ tableName: "events";
127
+ dataType: "date";
128
+ columnType: "PgTimestamp";
129
+ data: Date;
130
+ driverParam: string;
131
+ notNull: true;
132
+ hasDefault: false;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: undefined;
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {}>;
141
+ receivedAt: import("drizzle-orm/pg-core").PgColumn<{
142
+ name: "received_at";
143
+ tableName: "events";
144
+ dataType: "date";
145
+ columnType: "PgTimestamp";
146
+ data: Date;
147
+ driverParam: string;
148
+ notNull: true;
149
+ hasDefault: true;
150
+ isPrimaryKey: false;
151
+ isAutoincrement: false;
152
+ hasRuntimeDefault: false;
153
+ enumValues: undefined;
154
+ baseColumn: never;
155
+ identity: undefined;
156
+ generated: undefined;
157
+ }, {}, {}>;
158
+ };
159
+ dialect: 'pg';
160
+ }>;
@@ -0,0 +1,34 @@
1
+ import { bigint, index, jsonb, pgTable, text, timestamp, unique, uuid, } from 'drizzle-orm/pg-core';
2
+ import { agents } from './agents.js';
3
+ // Append only. No created_at or updated_at, received_at is the server timestamp.
4
+ export const events = pgTable('events', {
5
+ id: bigint('id', { mode: 'number' })
6
+ .primaryKey()
7
+ .generatedAlwaysAsIdentity(),
8
+ agentId: text('agent_id')
9
+ .notNull()
10
+ .references(() => agents.id),
11
+ eventId: uuid('event_id').notNull(),
12
+ type: text('type').notNull(),
13
+ version: text('version').notNull(),
14
+ payload: jsonb('payload').notNull(),
15
+ envelope: text('envelope').notNull(),
16
+ occurredAt: timestamp('occurred_at', { withTimezone: true }).notNull(),
17
+ receivedAt: timestamp('received_at', { withTimezone: true })
18
+ .notNull()
19
+ .defaultNow(),
20
+ }, (t) => [
21
+ unique('events_agent_id_event_id_unique').on(t.agentId, t.eventId),
22
+ index('events_agent_id_occurred_at_idx').on(t.agentId, t.occurredAt),
23
+ // Last seen and the activity queries read the newest received_at per
24
+ // agent. NULLS FIRST is what a plain DESC means in Postgres, so the index
25
+ // matches order by received_at desc exactly. The column is never null.
26
+ index('events_agent_id_received_at_idx').on(t.agentId, t.receivedAt.desc().nullsFirst()),
27
+ // The ingest cap on new versions per day walks an agent's distinct
28
+ // versions and reads each one's first received_at from here. The
29
+ // scoring run's first seen per version reads the same pairs.
30
+ index('events_agent_id_version_received_at_idx').on(t.agentId, t.version, t.receivedAt),
31
+ // Range reads on the server clock across agents. The stats count of
32
+ // the last 24 hours and the evidence counts over a window.
33
+ index('events_received_at_agent_id_idx').on(t.receivedAt, t.agentId),
34
+ ]);
@@ -0,0 +1,109 @@
1
+ export declare const feedItems: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "feed_items";
3
+ schema: undefined;
4
+ columns: {
5
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "created_at";
7
+ tableName: "feed_items";
8
+ dataType: "date";
9
+ columnType: "PgTimestamp";
10
+ data: Date;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: false;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "updated_at";
24
+ tableName: "feed_items";
25
+ dataType: "date";
26
+ columnType: "PgTimestamp";
27
+ data: Date;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: true;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: undefined;
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ id: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "id";
41
+ tableName: "feed_items";
42
+ dataType: "number";
43
+ columnType: "PgBigInt53";
44
+ data: number;
45
+ driverParam: string | number;
46
+ notNull: true;
47
+ hasDefault: true;
48
+ isPrimaryKey: true;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: undefined;
52
+ baseColumn: never;
53
+ identity: "always";
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ kind: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "kind";
58
+ tableName: "feed_items";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ agentId: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "agent_id";
75
+ tableName: "feed_items";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: false;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ payload: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "payload";
92
+ tableName: "feed_items";
93
+ dataType: "json";
94
+ columnType: "PgJsonb";
95
+ data: unknown;
96
+ driverParam: unknown;
97
+ notNull: true;
98
+ hasDefault: false;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: undefined;
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ };
108
+ dialect: 'pg';
109
+ }>;
@@ -0,0 +1,16 @@
1
+ import { bigint, index, jsonb, pgTable, text } from 'drizzle-orm/pg-core';
2
+ import { agents } from './agents.js';
3
+ import { timestamps } from './timestamps.js';
4
+ // The public feed. One row per public fact, written in the same transaction
5
+ // as the change it describes. The identity id is the SSE event id, so a
6
+ // client resumes with Last-Event-ID. The payload holds public facts only,
7
+ // shaped by FeedItem in api.ts.
8
+ export const feedItems = pgTable('feed_items', {
9
+ id: bigint('id', { mode: 'number' })
10
+ .primaryKey()
11
+ .generatedAlwaysAsIdentity(),
12
+ kind: text('kind').notNull(),
13
+ agentId: text('agent_id').references(() => agents.id),
14
+ payload: jsonb('payload').notNull(),
15
+ ...timestamps,
16
+ }, (t) => [index('feed_items_created_at_idx').on(t.createdAt)]);
@@ -0,0 +1,56 @@
1
+ import type { agentRenames } from './agent-renames.js';
2
+ import type { credentials } from './credentials.js';
3
+ import type { deletedOperators } from './deleted-operators.js';
4
+ import type { events } from './events.js';
5
+ import type { feedItems } from './feed-items.js';
6
+ import type { operators } from './operators.js';
7
+ import type { quotaCounters } from './quota-counters.js';
8
+ import type { ratings } from './ratings.js';
9
+ import type { scores } from './scores.js';
10
+ import type { standing } from './standing.js';
11
+ import type { taskOutcomes } from './task-outcomes.js';
12
+ import type { tasks } from './tasks.js';
13
+ export { and, asc, desc, eq, gt, inArray, isNotNull, isNull, lt, lte, max, ne, notInArray, or, sql, } from 'drizzle-orm';
14
+ export { DrizzleQueryError } from 'drizzle-orm/errors';
15
+ export { agentRenames } from './agent-renames.js';
16
+ export type { Agent, NewAgent } from './agents.js';
17
+ export { agents } from './agents.js';
18
+ export { createDb, type Db, type Tx } from './client.js';
19
+ export { credentials } from './credentials.js';
20
+ export { deletedOperators } from './deleted-operators.js';
21
+ export { events } from './events.js';
22
+ export { feedItems } from './feed-items.js';
23
+ export { migrationsFolder, runMigrations } from './migrator.js';
24
+ export { operators } from './operators.js';
25
+ export { quotaCounters } from './quota-counters.js';
26
+ export { ratings } from './ratings.js';
27
+ export { scores } from './scores.js';
28
+ export { type StoredCounts, standing } from './standing.js';
29
+ export { taskOutcomes } from './task-outcomes.js';
30
+ export { tasks } from './tasks.js';
31
+ export { timestamps } from './timestamps.js';
32
+ export { pgArgs } from './url.js';
33
+ export type Operator = typeof operators.$inferSelect;
34
+ export type NewOperator = typeof operators.$inferInsert;
35
+ export type Event = typeof events.$inferSelect;
36
+ export type NewEvent = typeof events.$inferInsert;
37
+ export type Task = typeof tasks.$inferSelect;
38
+ export type NewTask = typeof tasks.$inferInsert;
39
+ export type TaskOutcome = typeof taskOutcomes.$inferSelect;
40
+ export type NewTaskOutcome = typeof taskOutcomes.$inferInsert;
41
+ export type Rating = typeof ratings.$inferSelect;
42
+ export type NewRating = typeof ratings.$inferInsert;
43
+ export type Credential = typeof credentials.$inferSelect;
44
+ export type NewCredential = typeof credentials.$inferInsert;
45
+ export type Score = typeof scores.$inferSelect;
46
+ export type NewScore = typeof scores.$inferInsert;
47
+ export type StandingRow = typeof standing.$inferSelect;
48
+ export type NewStandingRow = typeof standing.$inferInsert;
49
+ export type QuotaCounter = typeof quotaCounters.$inferSelect;
50
+ export type NewQuotaCounter = typeof quotaCounters.$inferInsert;
51
+ export type AgentRename = typeof agentRenames.$inferSelect;
52
+ export type NewAgentRename = typeof agentRenames.$inferInsert;
53
+ export type FeedItem = typeof feedItems.$inferSelect;
54
+ export type NewFeedItem = typeof feedItems.$inferInsert;
55
+ export type DeletedOperator = typeof deletedOperators.$inferSelect;
56
+ export type NewDeletedOperator = typeof deletedOperators.$inferInsert;