@kernhq/module-tracker 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 (158) hide show
  1. package/LICENSE +662 -0
  2. package/README.md +265 -0
  3. package/dist/contract/events.d.ts +140 -0
  4. package/dist/contract/events.d.ts.map +1 -0
  5. package/dist/contract/events.js +51 -0
  6. package/dist/contract/events.js.map +1 -0
  7. package/dist/contract/index.d.ts +6 -0
  8. package/dist/contract/index.d.ts.map +1 -0
  9. package/dist/contract/index.js +6 -0
  10. package/dist/contract/index.js.map +1 -0
  11. package/dist/contract/models.d.ts +2547 -0
  12. package/dist/contract/models.d.ts.map +1 -0
  13. package/dist/contract/models.js +1214 -0
  14. package/dist/contract/models.js.map +1 -0
  15. package/dist/contract/notifications.d.ts +4 -0
  16. package/dist/contract/notifications.d.ts.map +1 -0
  17. package/dist/contract/notifications.js +46 -0
  18. package/dist/contract/notifications.js.map +1 -0
  19. package/dist/contract/permissions.d.ts +161 -0
  20. package/dist/contract/permissions.d.ts.map +1 -0
  21. package/dist/contract/permissions.js +192 -0
  22. package/dist/contract/permissions.js.map +1 -0
  23. package/dist/contract/router.d.ts +9659 -0
  24. package/dist/contract/router.d.ts.map +1 -0
  25. package/dist/contract/router.js +732 -0
  26. package/dist/contract/router.js.map +1 -0
  27. package/dist/kql/ast.d.ts +90 -0
  28. package/dist/kql/ast.d.ts.map +1 -0
  29. package/dist/kql/ast.js +80 -0
  30. package/dist/kql/ast.js.map +1 -0
  31. package/dist/kql/dates.d.ts +16 -0
  32. package/dist/kql/dates.d.ts.map +1 -0
  33. package/dist/kql/dates.js +54 -0
  34. package/dist/kql/dates.js.map +1 -0
  35. package/dist/kql/fields.d.ts +61 -0
  36. package/dist/kql/fields.d.ts.map +1 -0
  37. package/dist/kql/fields.js +106 -0
  38. package/dist/kql/fields.js.map +1 -0
  39. package/dist/kql/index.d.ts +16 -0
  40. package/dist/kql/index.d.ts.map +1 -0
  41. package/dist/kql/index.js +16 -0
  42. package/dist/kql/index.js.map +1 -0
  43. package/dist/kql/lexer.d.ts +28 -0
  44. package/dist/kql/lexer.d.ts.map +1 -0
  45. package/dist/kql/lexer.js +127 -0
  46. package/dist/kql/lexer.js.map +1 -0
  47. package/dist/kql/parser.d.ts +14 -0
  48. package/dist/kql/parser.d.ts.map +1 -0
  49. package/dist/kql/parser.js +290 -0
  50. package/dist/kql/parser.js.map +1 -0
  51. package/dist/kql/suggest.d.ts +8 -0
  52. package/dist/kql/suggest.d.ts.map +1 -0
  53. package/dist/kql/suggest.js +96 -0
  54. package/dist/kql/suggest.js.map +1 -0
  55. package/dist/kql/validate.d.ts +10 -0
  56. package/dist/kql/validate.d.ts.map +1 -0
  57. package/dist/kql/validate.js +84 -0
  58. package/dist/kql/validate.js.map +1 -0
  59. package/dist/server/index.d.ts +17 -0
  60. package/dist/server/index.d.ts.map +1 -0
  61. package/dist/server/index.js +583 -0
  62. package/dist/server/index.js.map +1 -0
  63. package/dist/server/kql/compile.d.ts +49 -0
  64. package/dist/server/kql/compile.d.ts.map +1 -0
  65. package/dist/server/kql/compile.js +372 -0
  66. package/dist/server/kql/compile.js.map +1 -0
  67. package/dist/server/rank.d.ts +23 -0
  68. package/dist/server/rank.d.ts.map +1 -0
  69. package/dist/server/rank.js +66 -0
  70. package/dist/server/rank.js.map +1 -0
  71. package/dist/server/rich.d.ts +30 -0
  72. package/dist/server/rich.d.ts.map +1 -0
  73. package/dist/server/rich.js +97 -0
  74. package/dist/server/rich.js.map +1 -0
  75. package/dist/server/router.d.ts +10589 -0
  76. package/dist/server/router.d.ts.map +1 -0
  77. package/dist/server/router.js +431 -0
  78. package/dist/server/router.js.map +1 -0
  79. package/dist/server/schema.d.ts +6622 -0
  80. package/dist/server/schema.d.ts.map +1 -0
  81. package/dist/server/schema.js +581 -0
  82. package/dist/server/schema.js.map +1 -0
  83. package/dist/server/services/access.d.ts +53 -0
  84. package/dist/server/services/access.d.ts.map +1 -0
  85. package/dist/server/services/access.js +146 -0
  86. package/dist/server/services/access.js.map +1 -0
  87. package/dist/server/services/comments.d.ts +36 -0
  88. package/dist/server/services/comments.d.ts.map +1 -0
  89. package/dist/server/services/comments.js +231 -0
  90. package/dist/server/services/comments.js.map +1 -0
  91. package/dist/server/services/config.d.ts +130 -0
  92. package/dist/server/services/config.d.ts.map +1 -0
  93. package/dist/server/services/config.js +797 -0
  94. package/dist/server/services/config.js.map +1 -0
  95. package/dist/server/services/db.d.ts +93 -0
  96. package/dist/server/services/db.d.ts.map +1 -0
  97. package/dist/server/services/db.js +519 -0
  98. package/dist/server/services/db.js.map +1 -0
  99. package/dist/server/services/imports.d.ts +37 -0
  100. package/dist/server/services/imports.d.ts.map +1 -0
  101. package/dist/server/services/imports.js +324 -0
  102. package/dist/server/services/imports.js.map +1 -0
  103. package/dist/server/services/index.d.ts +36 -0
  104. package/dist/server/services/index.d.ts.map +1 -0
  105. package/dist/server/services/index.js +57 -0
  106. package/dist/server/services/index.js.map +1 -0
  107. package/dist/server/services/intake.d.ts +47 -0
  108. package/dist/server/services/intake.d.ts.map +1 -0
  109. package/dist/server/services/intake.js +268 -0
  110. package/dist/server/services/intake.js.map +1 -0
  111. package/dist/server/services/issues.d.ts +763 -0
  112. package/dist/server/services/issues.d.ts.map +1 -0
  113. package/dist/server/services/issues.js +1381 -0
  114. package/dist/server/services/issues.js.map +1 -0
  115. package/dist/server/services/notify.d.ts +51 -0
  116. package/dist/server/services/notify.d.ts.map +1 -0
  117. package/dist/server/services/notify.js +90 -0
  118. package/dist/server/services/notify.js.map +1 -0
  119. package/dist/server/services/planning.d.ts +62 -0
  120. package/dist/server/services/planning.d.ts.map +1 -0
  121. package/dist/server/services/planning.js +614 -0
  122. package/dist/server/services/planning.js.map +1 -0
  123. package/dist/server/services/projects.d.ts +43 -0
  124. package/dist/server/services/projects.d.ts.map +1 -0
  125. package/dist/server/services/projects.js +375 -0
  126. package/dist/server/services/projects.js.map +1 -0
  127. package/dist/server/services/query.d.ts +24 -0
  128. package/dist/server/services/query.d.ts.map +1 -0
  129. package/dist/server/services/query.js +312 -0
  130. package/dist/server/services/query.js.map +1 -0
  131. package/dist/server/services/reports.d.ts +30 -0
  132. package/dist/server/services/reports.d.ts.map +1 -0
  133. package/dist/server/services/reports.js +295 -0
  134. package/dist/server/services/reports.js.map +1 -0
  135. package/dist/server/services/time.d.ts +53 -0
  136. package/dist/server/services/time.d.ts.map +1 -0
  137. package/dist/server/services/time.js +192 -0
  138. package/dist/server/services/time.js.map +1 -0
  139. package/dist/server/services/transitions.d.ts +61 -0
  140. package/dist/server/services/transitions.d.ts.map +1 -0
  141. package/dist/server/services/transitions.js +493 -0
  142. package/dist/server/services/transitions.js.map +1 -0
  143. package/dist/server/services/views.d.ts +33 -0
  144. package/dist/server/services/views.d.ts.map +1 -0
  145. package/dist/server/services/views.js +195 -0
  146. package/dist/server/services/views.js.map +1 -0
  147. package/migrations/0000_init.sql +529 -0
  148. package/migrations/0001_rls.sql +259 -0
  149. package/migrations/meta/0000_snapshot.json +4140 -0
  150. package/migrations/meta/_journal.json +20 -0
  151. package/package.json +82 -0
  152. package/src/client/api.ts +15 -0
  153. package/src/client/format.ts +164 -0
  154. package/src/client/group.ts +150 -0
  155. package/src/client/index.ts +60 -0
  156. package/src/client/kql.ts +492 -0
  157. package/src/client/rank.ts +87 -0
  158. package/src/client/types.ts +57 -0
@@ -0,0 +1,763 @@
1
+ import type { Principal } from '@kernhq/contracts';
2
+ import { type Kernel, type Tx } from '@kernhq/kernel';
3
+ import type { z } from 'zod';
4
+ import { type Attachment, type BulkResult, type CreateIssue, type Issue, type IssueHistoryEntry, type IssueTemplate, type Link, type RecurringIssue, type RelationSummary, type RelationType, type RelationView, type StatusHistoryEntry, type UpdateIssue, type UpsertIssueTemplate as UpsertIssueTemplateSchema, type UpsertRecurringIssue as UpsertRecurringIssueSchema } from '../../contract/models.js';
5
+ import type { AccessService } from './access.js';
6
+ import type { ConfigService } from './config.js';
7
+ import { type IssueRow } from './db.js';
8
+ import type { NotifyService } from './notify.js';
9
+ type UpsertIssueTemplate = z.infer<typeof UpsertIssueTemplateSchema>;
10
+ type UpsertRecurringIssue = z.infer<typeof UpsertRecurringIssueSchema>;
11
+ export interface CreateOptions {
12
+ source?: Issue['source'];
13
+ externalRef?: string | null;
14
+ /** skip permission checks: intake, email ingest and imports run as the system */
15
+ system?: boolean;
16
+ triage?: boolean;
17
+ }
18
+ /** Issues and everything attached to them: relations, attachments, links, watchers, history. */
19
+ export declare class IssueService {
20
+ private readonly kernel;
21
+ private readonly access;
22
+ private readonly config;
23
+ private readonly notify;
24
+ constructor(kernel: Kernel, access: AccessService, config: ConfigService, notify: NotifyService);
25
+ row(tx: Tx, workspaceId: string, issueId: string): Promise<IssueRow>;
26
+ /** Relation and sub-item counters for a page of issues, in two aggregate queries. */
27
+ relationSummaries(tx: Tx, ids: string[]): Promise<Map<string, RelationSummary>>;
28
+ hydrate(tx: Tx, rows: IssueRow[]): Promise<Issue[]>;
29
+ get(tx: Tx, principal: Principal, workspaceId: string, issueId: string): Promise<Issue>;
30
+ getByKey(tx: Tx, principal: Principal, workspaceId: string, key: string): Promise<Issue>;
31
+ getMany(tx: Tx, principal: Principal, workspaceId: string, ids: string[]): Promise<Issue[]>;
32
+ create(tx: Tx, principal: Principal, workspaceId: string, input: CreateIssue, opts?: CreateOptions): Promise<Issue>;
33
+ private pickInitialStatus;
34
+ private allocateNumber;
35
+ private rankFor;
36
+ private rankBetweenIssues;
37
+ private defaultAssignees;
38
+ /** Labels that share a group are mutually exclusive: the last one wins. */
39
+ private enforceLabelGroups;
40
+ private assertPlanningRefs;
41
+ private assertParentAllowed;
42
+ private subItemType;
43
+ private withFieldDefaults;
44
+ private initialSla;
45
+ private applyTemplate;
46
+ private afterCreate;
47
+ private ensureChatChannel;
48
+ /** Push one issue into the workspace search index. */
49
+ reindex(issue: Issue): Promise<void>;
50
+ update(tx: Tx, principal: Principal, workspaceId: string, issueId: string, patch: UpdateIssue, opts?: {
51
+ system?: boolean;
52
+ }): Promise<Issue>;
53
+ /** Each issue is updated in its own transaction so one rejection does not undo the rest. */
54
+ bulkUpdate(principal: Principal, workspaceId: string, ids: string[], patch: UpdateIssue): Promise<BulkResult>;
55
+ archive(tx: Tx, principal: Principal, workspaceId: string, issueId: string, archived: boolean): Promise<Issue>;
56
+ delete(tx: Tx, principal: Principal, workspaceId: string, issueId: string): Promise<void>;
57
+ /** Move to another project: the issue is re-keyed and its sub-items follow. */
58
+ move(tx: Tx, principal: Principal, workspaceId: string, issueId: string, targetProjectId: string): Promise<Issue>;
59
+ private matchType;
60
+ rank(tx: Tx, principal: Principal, workspaceId: string, issueId: string, afterId: string | null | undefined, beforeId: string | null | undefined): Promise<{
61
+ id: string;
62
+ rank: string;
63
+ }>;
64
+ setWatcher(tx: Tx, principal: Principal, workspaceId: string, issueId: string, userId: string, watching: boolean): Promise<{
65
+ watcherIds: string[];
66
+ }>;
67
+ history(tx: Tx, principal: Principal, workspaceId: string, issueId: string, limit: number, cursor?: string): Promise<{
68
+ items: IssueHistoryEntry[];
69
+ statusHistory: StatusHistoryEntry[];
70
+ nextCursor: string | null;
71
+ }>;
72
+ listRelations(tx: Tx, principal: Principal, workspaceId: string, issueId: string): Promise<RelationView[]>;
73
+ private relationViews;
74
+ /** Relations are stored as a pair of rows so both issues can list theirs with one indexed lookup. */
75
+ createRelation(tx: Tx, principal: Principal, workspaceId: string, issueId: string, type: RelationType, targetIssueId: string): Promise<RelationView[]>;
76
+ deleteRelation(tx: Tx, principal: Principal, workspaceId: string, relationId: string): Promise<void>;
77
+ listAttachments(tx: Tx, principal: Principal, workspaceId: string, issueId: string): Promise<Attachment[]>;
78
+ attachFiles(tx: Tx, workspaceId: string, issueId: string, fileIds: string[], uploadedBy: string | null): Promise<Attachment[]>;
79
+ addAttachments(tx: Tx, principal: Principal, workspaceId: string, issueId: string, fileIds: string[]): Promise<Attachment[]>;
80
+ removeAttachment(tx: Tx, principal: Principal, workspaceId: string, attachmentId: string): Promise<void>;
81
+ private refreshAttachmentCount;
82
+ listLinks(tx: Tx, principal: Principal, workspaceId: string, issueId: string): Promise<Link[]>;
83
+ addLink(tx: Tx, principal: Principal, workspaceId: string, issueId: string, input: {
84
+ url: string;
85
+ title?: string;
86
+ kind: string;
87
+ }): Promise<Link>;
88
+ removeLink(tx: Tx, principal: Principal, workspaceId: string, linkId: string): Promise<void>;
89
+ listTemplates(tx: Tx, principal: Principal, workspaceId: string, projectId?: string): Promise<IssueTemplate[]>;
90
+ /**
91
+ * Issue templates and recurring rules are project configuration, not content: they decide what
92
+ * everyone else's issues look like. They take the same permission as managing the project, at
93
+ * project scope when they belong to one and at workspace scope when they are shared.
94
+ */
95
+ private recurringRow;
96
+ private templateRow;
97
+ private requireTemplateManage;
98
+ createTemplate(tx: Tx, principal: Principal, workspaceId: string, input: UpsertIssueTemplate): Promise<IssueTemplate>;
99
+ updateTemplate(tx: Tx, principal: Principal, workspaceId: string, id: string, patch: Partial<UpsertIssueTemplate>): Promise<IssueTemplate>;
100
+ deleteTemplate(tx: Tx, principal: Principal, workspaceId: string, id: string): Promise<void>;
101
+ listRecurring(tx: Tx, principal: Principal, workspaceId: string, projectId: string): Promise<RecurringIssue[]>;
102
+ createRecurring(tx: Tx, principal: Principal, workspaceId: string, projectId: string, input: UpsertRecurringIssue): Promise<RecurringIssue>;
103
+ updateRecurring(tx: Tx, principal: Principal, workspaceId: string, id: string, patch: Partial<UpsertRecurringIssue>): Promise<RecurringIssue>;
104
+ deleteRecurring(tx: Tx, principal: Principal, workspaceId: string, id: string): Promise<void>;
105
+ /** Create the issues whose recurrence is due. Called by the `tracker.recurring` job. */
106
+ runDueRecurring(workspaceId: string, now?: Date): Promise<number>;
107
+ /** Issues whose parent is `issueId` (used by the workflow `subtasks.allDone` condition). */
108
+ subItems(tx: Tx, workspaceId: string, issueId: string): Promise<{
109
+ id: string;
110
+ statusCategory: string;
111
+ }[]>;
112
+ /** Everyone who should hear about a change to this issue. */
113
+ watchersOf(row: IssueRow): string[];
114
+ isResolved(category: string): boolean;
115
+ /** Projects table accessor shared with the reports service. */
116
+ projectsTable(): import("drizzle-orm/pg-core").PgTableWithColumns<{
117
+ name: "projects";
118
+ schema: "mod_tracker";
119
+ columns: {
120
+ id: import("drizzle-orm/pg-core").PgColumn<{
121
+ name: "id";
122
+ tableName: "projects";
123
+ dataType: "string";
124
+ columnType: "PgUUID";
125
+ data: string;
126
+ driverParam: string;
127
+ notNull: true;
128
+ hasDefault: true;
129
+ isPrimaryKey: true;
130
+ isAutoincrement: false;
131
+ hasRuntimeDefault: false;
132
+ enumValues: undefined;
133
+ baseColumn: never;
134
+ identity: undefined;
135
+ generated: undefined;
136
+ }, {}, {}>;
137
+ workspaceId: import("drizzle-orm/pg-core").PgColumn<{
138
+ name: "workspace_id";
139
+ tableName: "projects";
140
+ dataType: "string";
141
+ columnType: "PgUUID";
142
+ data: string;
143
+ driverParam: string;
144
+ notNull: true;
145
+ hasDefault: false;
146
+ isPrimaryKey: false;
147
+ isAutoincrement: false;
148
+ hasRuntimeDefault: false;
149
+ enumValues: undefined;
150
+ baseColumn: never;
151
+ identity: undefined;
152
+ generated: undefined;
153
+ }, {}, {}>;
154
+ key: import("drizzle-orm/pg-core").PgColumn<{
155
+ name: "key";
156
+ tableName: "projects";
157
+ dataType: "string";
158
+ columnType: "PgText";
159
+ data: string;
160
+ driverParam: string;
161
+ notNull: true;
162
+ hasDefault: false;
163
+ isPrimaryKey: false;
164
+ isAutoincrement: false;
165
+ hasRuntimeDefault: false;
166
+ enumValues: [string, ...string[]];
167
+ baseColumn: never;
168
+ identity: undefined;
169
+ generated: undefined;
170
+ }, {}, {}>;
171
+ name: import("drizzle-orm/pg-core").PgColumn<{
172
+ name: "name";
173
+ tableName: "projects";
174
+ dataType: "string";
175
+ columnType: "PgText";
176
+ data: string;
177
+ driverParam: string;
178
+ notNull: true;
179
+ hasDefault: false;
180
+ isPrimaryKey: false;
181
+ isAutoincrement: false;
182
+ hasRuntimeDefault: false;
183
+ enumValues: [string, ...string[]];
184
+ baseColumn: never;
185
+ identity: undefined;
186
+ generated: undefined;
187
+ }, {}, {}>;
188
+ description: import("drizzle-orm/pg-core").PgColumn<{
189
+ name: "description";
190
+ tableName: "projects";
191
+ dataType: "string";
192
+ columnType: "PgText";
193
+ data: string;
194
+ driverParam: string;
195
+ notNull: false;
196
+ hasDefault: false;
197
+ isPrimaryKey: false;
198
+ isAutoincrement: false;
199
+ hasRuntimeDefault: false;
200
+ enumValues: [string, ...string[]];
201
+ baseColumn: never;
202
+ identity: undefined;
203
+ generated: undefined;
204
+ }, {}, {}>;
205
+ icon: import("drizzle-orm/pg-core").PgColumn<{
206
+ name: "icon";
207
+ tableName: "projects";
208
+ dataType: "string";
209
+ columnType: "PgText";
210
+ data: string;
211
+ driverParam: string;
212
+ notNull: false;
213
+ hasDefault: false;
214
+ isPrimaryKey: false;
215
+ isAutoincrement: false;
216
+ hasRuntimeDefault: false;
217
+ enumValues: [string, ...string[]];
218
+ baseColumn: never;
219
+ identity: undefined;
220
+ generated: undefined;
221
+ }, {}, {}>;
222
+ color: import("drizzle-orm/pg-core").PgColumn<{
223
+ name: "color";
224
+ tableName: "projects";
225
+ dataType: "string";
226
+ columnType: "PgText";
227
+ data: string;
228
+ driverParam: string;
229
+ notNull: false;
230
+ hasDefault: false;
231
+ isPrimaryKey: false;
232
+ isAutoincrement: false;
233
+ hasRuntimeDefault: false;
234
+ enumValues: [string, ...string[]];
235
+ baseColumn: never;
236
+ identity: undefined;
237
+ generated: undefined;
238
+ }, {}, {}>;
239
+ leadId: import("drizzle-orm/pg-core").PgColumn<{
240
+ name: "lead_id";
241
+ tableName: "projects";
242
+ dataType: "string";
243
+ columnType: "PgUUID";
244
+ data: string;
245
+ driverParam: string;
246
+ notNull: false;
247
+ hasDefault: false;
248
+ isPrimaryKey: false;
249
+ isAutoincrement: false;
250
+ hasRuntimeDefault: false;
251
+ enumValues: undefined;
252
+ baseColumn: never;
253
+ identity: undefined;
254
+ generated: undefined;
255
+ }, {}, {}>;
256
+ visibility: import("drizzle-orm/pg-core").PgColumn<{
257
+ name: "visibility";
258
+ tableName: "projects";
259
+ dataType: "string";
260
+ columnType: "PgText";
261
+ data: string;
262
+ driverParam: string;
263
+ notNull: true;
264
+ hasDefault: true;
265
+ isPrimaryKey: false;
266
+ isAutoincrement: false;
267
+ hasRuntimeDefault: false;
268
+ enumValues: [string, ...string[]];
269
+ baseColumn: never;
270
+ identity: undefined;
271
+ generated: undefined;
272
+ }, {}, {}>;
273
+ defaultAssignee: import("drizzle-orm/pg-core").PgColumn<{
274
+ name: "default_assignee";
275
+ tableName: "projects";
276
+ dataType: "string";
277
+ columnType: "PgText";
278
+ data: string;
279
+ driverParam: string;
280
+ notNull: true;
281
+ hasDefault: true;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: [string, ...string[]];
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ workflowSchemeId: import("drizzle-orm/pg-core").PgColumn<{
291
+ name: "workflow_scheme_id";
292
+ tableName: "projects";
293
+ dataType: "string";
294
+ columnType: "PgUUID";
295
+ data: string;
296
+ driverParam: string;
297
+ notNull: false;
298
+ hasDefault: false;
299
+ isPrimaryKey: false;
300
+ isAutoincrement: false;
301
+ hasRuntimeDefault: false;
302
+ enumValues: undefined;
303
+ baseColumn: never;
304
+ identity: undefined;
305
+ generated: undefined;
306
+ }, {}, {}>;
307
+ typeSchemeId: import("drizzle-orm/pg-core").PgColumn<{
308
+ name: "type_scheme_id";
309
+ tableName: "projects";
310
+ dataType: "string";
311
+ columnType: "PgUUID";
312
+ data: string;
313
+ driverParam: string;
314
+ notNull: false;
315
+ hasDefault: false;
316
+ isPrimaryKey: false;
317
+ isAutoincrement: false;
318
+ hasRuntimeDefault: false;
319
+ enumValues: undefined;
320
+ baseColumn: never;
321
+ identity: undefined;
322
+ generated: undefined;
323
+ }, {}, {}>;
324
+ fieldSchemeId: import("drizzle-orm/pg-core").PgColumn<{
325
+ name: "field_scheme_id";
326
+ tableName: "projects";
327
+ dataType: "string";
328
+ columnType: "PgUUID";
329
+ data: string;
330
+ driverParam: string;
331
+ notNull: false;
332
+ hasDefault: false;
333
+ isPrimaryKey: false;
334
+ isAutoincrement: false;
335
+ hasRuntimeDefault: false;
336
+ enumValues: undefined;
337
+ baseColumn: never;
338
+ identity: undefined;
339
+ generated: undefined;
340
+ }, {}, {}>;
341
+ settings: import("drizzle-orm/pg-core").PgColumn<{
342
+ name: string;
343
+ tableName: "projects";
344
+ dataType: "json";
345
+ columnType: "PgJsonb";
346
+ data: unknown;
347
+ driverParam: unknown;
348
+ notNull: true;
349
+ hasDefault: true;
350
+ isPrimaryKey: false;
351
+ isAutoincrement: false;
352
+ hasRuntimeDefault: false;
353
+ enumValues: undefined;
354
+ baseColumn: never;
355
+ identity: undefined;
356
+ generated: undefined;
357
+ }, {}, {}>;
358
+ intakeToken: import("drizzle-orm/pg-core").PgColumn<{
359
+ name: "intake_token";
360
+ tableName: "projects";
361
+ dataType: "string";
362
+ columnType: "PgText";
363
+ data: string;
364
+ driverParam: string;
365
+ notNull: false;
366
+ hasDefault: false;
367
+ isPrimaryKey: false;
368
+ isAutoincrement: false;
369
+ hasRuntimeDefault: false;
370
+ enumValues: [string, ...string[]];
371
+ baseColumn: never;
372
+ identity: undefined;
373
+ generated: undefined;
374
+ }, {}, {}>;
375
+ memberCount: import("drizzle-orm/pg-core").PgColumn<{
376
+ name: "member_count";
377
+ tableName: "projects";
378
+ dataType: "number";
379
+ columnType: "PgInteger";
380
+ data: number;
381
+ driverParam: string | number;
382
+ notNull: true;
383
+ hasDefault: true;
384
+ isPrimaryKey: false;
385
+ isAutoincrement: false;
386
+ hasRuntimeDefault: false;
387
+ enumValues: undefined;
388
+ baseColumn: never;
389
+ identity: undefined;
390
+ generated: undefined;
391
+ }, {}, {}>;
392
+ archivedAt: import("drizzle-orm/pg-core").PgColumn<{
393
+ name: string;
394
+ tableName: "projects";
395
+ dataType: "date";
396
+ columnType: "PgTimestamp";
397
+ data: Date;
398
+ driverParam: string;
399
+ notNull: false;
400
+ hasDefault: false;
401
+ isPrimaryKey: false;
402
+ isAutoincrement: false;
403
+ hasRuntimeDefault: false;
404
+ enumValues: undefined;
405
+ baseColumn: never;
406
+ identity: undefined;
407
+ generated: undefined;
408
+ }, {}, {}>;
409
+ createdBy: import("drizzle-orm/pg-core").PgColumn<{
410
+ name: "created_by";
411
+ tableName: "projects";
412
+ dataType: "string";
413
+ columnType: "PgUUID";
414
+ data: string;
415
+ driverParam: string;
416
+ notNull: false;
417
+ hasDefault: false;
418
+ isPrimaryKey: false;
419
+ isAutoincrement: false;
420
+ hasRuntimeDefault: false;
421
+ enumValues: undefined;
422
+ baseColumn: never;
423
+ identity: undefined;
424
+ generated: undefined;
425
+ }, {}, {}>;
426
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
427
+ name: string;
428
+ tableName: "projects";
429
+ dataType: "date";
430
+ columnType: "PgTimestamp";
431
+ data: Date;
432
+ driverParam: string;
433
+ notNull: true;
434
+ hasDefault: true;
435
+ isPrimaryKey: false;
436
+ isAutoincrement: false;
437
+ hasRuntimeDefault: false;
438
+ enumValues: undefined;
439
+ baseColumn: never;
440
+ identity: undefined;
441
+ generated: undefined;
442
+ }, {}, {}>;
443
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
444
+ name: string;
445
+ tableName: "projects";
446
+ dataType: "date";
447
+ columnType: "PgTimestamp";
448
+ data: Date;
449
+ driverParam: string;
450
+ notNull: true;
451
+ hasDefault: true;
452
+ isPrimaryKey: false;
453
+ isAutoincrement: false;
454
+ hasRuntimeDefault: false;
455
+ enumValues: undefined;
456
+ baseColumn: never;
457
+ identity: undefined;
458
+ generated: undefined;
459
+ }, {}, {}>;
460
+ };
461
+ dialect: "pg";
462
+ }>;
463
+ typesTable(): import("drizzle-orm/pg-core").PgTableWithColumns<{
464
+ name: "work_item_types";
465
+ schema: "mod_tracker";
466
+ columns: {
467
+ id: import("drizzle-orm/pg-core").PgColumn<{
468
+ name: "id";
469
+ tableName: "work_item_types";
470
+ dataType: "string";
471
+ columnType: "PgUUID";
472
+ data: string;
473
+ driverParam: string;
474
+ notNull: true;
475
+ hasDefault: true;
476
+ isPrimaryKey: true;
477
+ isAutoincrement: false;
478
+ hasRuntimeDefault: false;
479
+ enumValues: undefined;
480
+ baseColumn: never;
481
+ identity: undefined;
482
+ generated: undefined;
483
+ }, {}, {}>;
484
+ workspaceId: import("drizzle-orm/pg-core").PgColumn<{
485
+ name: "workspace_id";
486
+ tableName: "work_item_types";
487
+ dataType: "string";
488
+ columnType: "PgUUID";
489
+ data: string;
490
+ driverParam: string;
491
+ notNull: true;
492
+ hasDefault: false;
493
+ isPrimaryKey: false;
494
+ isAutoincrement: false;
495
+ hasRuntimeDefault: false;
496
+ enumValues: undefined;
497
+ baseColumn: never;
498
+ identity: undefined;
499
+ generated: undefined;
500
+ }, {}, {}>;
501
+ projectId: import("drizzle-orm/pg-core").PgColumn<{
502
+ name: "project_id";
503
+ tableName: "work_item_types";
504
+ dataType: "string";
505
+ columnType: "PgUUID";
506
+ data: string;
507
+ driverParam: string;
508
+ notNull: false;
509
+ hasDefault: false;
510
+ isPrimaryKey: false;
511
+ isAutoincrement: false;
512
+ hasRuntimeDefault: false;
513
+ enumValues: undefined;
514
+ baseColumn: never;
515
+ identity: undefined;
516
+ generated: undefined;
517
+ }, {}, {}>;
518
+ key: import("drizzle-orm/pg-core").PgColumn<{
519
+ name: "key";
520
+ tableName: "work_item_types";
521
+ dataType: "string";
522
+ columnType: "PgText";
523
+ data: string;
524
+ driverParam: string;
525
+ notNull: true;
526
+ hasDefault: false;
527
+ isPrimaryKey: false;
528
+ isAutoincrement: false;
529
+ hasRuntimeDefault: false;
530
+ enumValues: [string, ...string[]];
531
+ baseColumn: never;
532
+ identity: undefined;
533
+ generated: undefined;
534
+ }, {}, {}>;
535
+ name: import("drizzle-orm/pg-core").PgColumn<{
536
+ name: "name";
537
+ tableName: "work_item_types";
538
+ dataType: "string";
539
+ columnType: "PgText";
540
+ data: string;
541
+ driverParam: string;
542
+ notNull: true;
543
+ hasDefault: false;
544
+ isPrimaryKey: false;
545
+ isAutoincrement: false;
546
+ hasRuntimeDefault: false;
547
+ enumValues: [string, ...string[]];
548
+ baseColumn: never;
549
+ identity: undefined;
550
+ generated: undefined;
551
+ }, {}, {}>;
552
+ description: import("drizzle-orm/pg-core").PgColumn<{
553
+ name: "description";
554
+ tableName: "work_item_types";
555
+ dataType: "string";
556
+ columnType: "PgText";
557
+ data: string;
558
+ driverParam: string;
559
+ notNull: false;
560
+ hasDefault: false;
561
+ isPrimaryKey: false;
562
+ isAutoincrement: false;
563
+ hasRuntimeDefault: false;
564
+ enumValues: [string, ...string[]];
565
+ baseColumn: never;
566
+ identity: undefined;
567
+ generated: undefined;
568
+ }, {}, {}>;
569
+ icon: import("drizzle-orm/pg-core").PgColumn<{
570
+ name: "icon";
571
+ tableName: "work_item_types";
572
+ dataType: "string";
573
+ columnType: "PgText";
574
+ data: string;
575
+ driverParam: string;
576
+ notNull: false;
577
+ hasDefault: false;
578
+ isPrimaryKey: false;
579
+ isAutoincrement: false;
580
+ hasRuntimeDefault: false;
581
+ enumValues: [string, ...string[]];
582
+ baseColumn: never;
583
+ identity: undefined;
584
+ generated: undefined;
585
+ }, {}, {}>;
586
+ color: import("drizzle-orm/pg-core").PgColumn<{
587
+ name: "color";
588
+ tableName: "work_item_types";
589
+ dataType: "string";
590
+ columnType: "PgText";
591
+ data: string;
592
+ driverParam: string;
593
+ notNull: false;
594
+ hasDefault: false;
595
+ isPrimaryKey: false;
596
+ isAutoincrement: false;
597
+ hasRuntimeDefault: false;
598
+ enumValues: [string, ...string[]];
599
+ baseColumn: never;
600
+ identity: undefined;
601
+ generated: undefined;
602
+ }, {}, {}>;
603
+ level: import("drizzle-orm/pg-core").PgColumn<{
604
+ name: "level";
605
+ tableName: "work_item_types";
606
+ dataType: "number";
607
+ columnType: "PgInteger";
608
+ data: number;
609
+ driverParam: string | number;
610
+ notNull: true;
611
+ hasDefault: true;
612
+ isPrimaryKey: false;
613
+ isAutoincrement: false;
614
+ hasRuntimeDefault: false;
615
+ enumValues: undefined;
616
+ baseColumn: never;
617
+ identity: undefined;
618
+ generated: undefined;
619
+ }, {}, {}>;
620
+ isDefault: import("drizzle-orm/pg-core").PgColumn<{
621
+ name: "is_default";
622
+ tableName: "work_item_types";
623
+ dataType: "boolean";
624
+ columnType: "PgBoolean";
625
+ data: boolean;
626
+ driverParam: boolean;
627
+ notNull: true;
628
+ hasDefault: true;
629
+ isPrimaryKey: false;
630
+ isAutoincrement: false;
631
+ hasRuntimeDefault: false;
632
+ enumValues: undefined;
633
+ baseColumn: never;
634
+ identity: undefined;
635
+ generated: undefined;
636
+ }, {}, {}>;
637
+ workflowId: import("drizzle-orm/pg-core").PgColumn<{
638
+ name: "workflow_id";
639
+ tableName: "work_item_types";
640
+ dataType: "string";
641
+ columnType: "PgUUID";
642
+ data: string;
643
+ driverParam: string;
644
+ notNull: false;
645
+ hasDefault: false;
646
+ isPrimaryKey: false;
647
+ isAutoincrement: false;
648
+ hasRuntimeDefault: false;
649
+ enumValues: undefined;
650
+ baseColumn: never;
651
+ identity: undefined;
652
+ generated: undefined;
653
+ }, {}, {}>;
654
+ fieldLayout: import("drizzle-orm/pg-core").PgColumn<{
655
+ name: string;
656
+ tableName: "work_item_types";
657
+ dataType: "json";
658
+ columnType: "PgJsonb";
659
+ data: unknown;
660
+ driverParam: unknown;
661
+ notNull: true;
662
+ hasDefault: true;
663
+ isPrimaryKey: false;
664
+ isAutoincrement: false;
665
+ hasRuntimeDefault: false;
666
+ enumValues: undefined;
667
+ baseColumn: never;
668
+ identity: undefined;
669
+ generated: undefined;
670
+ }, {}, {}>;
671
+ templateBody: import("drizzle-orm/pg-core").PgColumn<{
672
+ name: "template_body";
673
+ tableName: "work_item_types";
674
+ dataType: "json";
675
+ columnType: "PgJsonb";
676
+ data: unknown;
677
+ driverParam: unknown;
678
+ notNull: false;
679
+ hasDefault: false;
680
+ isPrimaryKey: false;
681
+ isAutoincrement: false;
682
+ hasRuntimeDefault: false;
683
+ enumValues: undefined;
684
+ baseColumn: never;
685
+ identity: undefined;
686
+ generated: undefined;
687
+ }, {}, {}>;
688
+ order: import("drizzle-orm/pg-core").PgColumn<{
689
+ name: "order";
690
+ tableName: "work_item_types";
691
+ dataType: "number";
692
+ columnType: "PgInteger";
693
+ data: number;
694
+ driverParam: string | number;
695
+ notNull: true;
696
+ hasDefault: true;
697
+ isPrimaryKey: false;
698
+ isAutoincrement: false;
699
+ hasRuntimeDefault: false;
700
+ enumValues: undefined;
701
+ baseColumn: never;
702
+ identity: undefined;
703
+ generated: undefined;
704
+ }, {}, {}>;
705
+ archivedAt: import("drizzle-orm/pg-core").PgColumn<{
706
+ name: string;
707
+ tableName: "work_item_types";
708
+ dataType: "date";
709
+ columnType: "PgTimestamp";
710
+ data: Date;
711
+ driverParam: string;
712
+ notNull: false;
713
+ hasDefault: false;
714
+ isPrimaryKey: false;
715
+ isAutoincrement: false;
716
+ hasRuntimeDefault: false;
717
+ enumValues: undefined;
718
+ baseColumn: never;
719
+ identity: undefined;
720
+ generated: undefined;
721
+ }, {}, {}>;
722
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
723
+ name: string;
724
+ tableName: "work_item_types";
725
+ dataType: "date";
726
+ columnType: "PgTimestamp";
727
+ data: Date;
728
+ driverParam: string;
729
+ notNull: true;
730
+ hasDefault: true;
731
+ isPrimaryKey: false;
732
+ isAutoincrement: false;
733
+ hasRuntimeDefault: false;
734
+ enumValues: undefined;
735
+ baseColumn: never;
736
+ identity: undefined;
737
+ generated: undefined;
738
+ }, {}, {}>;
739
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
740
+ name: string;
741
+ tableName: "work_item_types";
742
+ dataType: "date";
743
+ columnType: "PgTimestamp";
744
+ data: Date;
745
+ driverParam: string;
746
+ notNull: true;
747
+ hasDefault: true;
748
+ isPrimaryKey: false;
749
+ isAutoincrement: false;
750
+ hasRuntimeDefault: false;
751
+ enumValues: undefined;
752
+ baseColumn: never;
753
+ identity: undefined;
754
+ generated: undefined;
755
+ }, {}, {}>;
756
+ };
757
+ dialect: "pg";
758
+ }>;
759
+ }
760
+ /** Next occurrence of a recurrence rule after `from`. */
761
+ export declare function nextRun(rule: RecurringIssue['rule'], from: Date): Date | null;
762
+ export {};
763
+ //# sourceMappingURL=issues.d.ts.map