@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,259 @@
1
+ -- Row level security for every tenant table of the tracker module.
2
+ -- Generated from `TENANT_TABLES` in src/server/schema.ts with `rlsPolicySql()` from @kernhq/kernel:
3
+ -- each table is readable and writable only while `app.workspace_id` (set by
4
+ -- `kernel.database.withWorkspace`) matches the row. There is no cross-workspace escape hatch.
5
+ alter table "mod_tracker"."projects" enable row level security;
6
+ --> statement-breakpoint
7
+ alter table "mod_tracker"."projects" force row level security;
8
+ --> statement-breakpoint
9
+ create policy "projects_ws_isolation" on "mod_tracker"."projects"
10
+ using (workspace_id::text = current_setting('app.workspace_id', true))
11
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
12
+ --> statement-breakpoint
13
+ alter table "mod_tracker"."issue_counters" enable row level security;
14
+ --> statement-breakpoint
15
+ alter table "mod_tracker"."issue_counters" force row level security;
16
+ --> statement-breakpoint
17
+ create policy "issue_counters_ws_isolation" on "mod_tracker"."issue_counters"
18
+ using (workspace_id::text = current_setting('app.workspace_id', true))
19
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
20
+ --> statement-breakpoint
21
+ alter table "mod_tracker"."project_members" enable row level security;
22
+ --> statement-breakpoint
23
+ alter table "mod_tracker"."project_members" force row level security;
24
+ --> statement-breakpoint
25
+ create policy "project_members_ws_isolation" on "mod_tracker"."project_members"
26
+ using (workspace_id::text = current_setting('app.workspace_id', true))
27
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
28
+ --> statement-breakpoint
29
+ alter table "mod_tracker"."project_templates" enable row level security;
30
+ --> statement-breakpoint
31
+ alter table "mod_tracker"."project_templates" force row level security;
32
+ --> statement-breakpoint
33
+ create policy "project_templates_ws_isolation" on "mod_tracker"."project_templates"
34
+ using (workspace_id::text = current_setting('app.workspace_id', true))
35
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
36
+ --> statement-breakpoint
37
+ alter table "mod_tracker"."work_item_types" enable row level security;
38
+ --> statement-breakpoint
39
+ alter table "mod_tracker"."work_item_types" force row level security;
40
+ --> statement-breakpoint
41
+ create policy "work_item_types_ws_isolation" on "mod_tracker"."work_item_types"
42
+ using (workspace_id::text = current_setting('app.workspace_id', true))
43
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
44
+ --> statement-breakpoint
45
+ alter table "mod_tracker"."type_schemes" enable row level security;
46
+ --> statement-breakpoint
47
+ alter table "mod_tracker"."type_schemes" force row level security;
48
+ --> statement-breakpoint
49
+ create policy "type_schemes_ws_isolation" on "mod_tracker"."type_schemes"
50
+ using (workspace_id::text = current_setting('app.workspace_id', true))
51
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
52
+ --> statement-breakpoint
53
+ alter table "mod_tracker"."hierarchy_rules" enable row level security;
54
+ --> statement-breakpoint
55
+ alter table "mod_tracker"."hierarchy_rules" force row level security;
56
+ --> statement-breakpoint
57
+ create policy "hierarchy_rules_ws_isolation" on "mod_tracker"."hierarchy_rules"
58
+ using (workspace_id::text = current_setting('app.workspace_id', true))
59
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
60
+ --> statement-breakpoint
61
+ alter table "mod_tracker"."field_defs" enable row level security;
62
+ --> statement-breakpoint
63
+ alter table "mod_tracker"."field_defs" force row level security;
64
+ --> statement-breakpoint
65
+ create policy "field_defs_ws_isolation" on "mod_tracker"."field_defs"
66
+ using (workspace_id::text = current_setting('app.workspace_id', true))
67
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
68
+ --> statement-breakpoint
69
+ alter table "mod_tracker"."field_schemes" enable row level security;
70
+ --> statement-breakpoint
71
+ alter table "mod_tracker"."field_schemes" force row level security;
72
+ --> statement-breakpoint
73
+ create policy "field_schemes_ws_isolation" on "mod_tracker"."field_schemes"
74
+ using (workspace_id::text = current_setting('app.workspace_id', true))
75
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
76
+ --> statement-breakpoint
77
+ alter table "mod_tracker"."workflows" enable row level security;
78
+ --> statement-breakpoint
79
+ alter table "mod_tracker"."workflows" force row level security;
80
+ --> statement-breakpoint
81
+ create policy "workflows_ws_isolation" on "mod_tracker"."workflows"
82
+ using (workspace_id::text = current_setting('app.workspace_id', true))
83
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
84
+ --> statement-breakpoint
85
+ alter table "mod_tracker"."workflow_schemes" enable row level security;
86
+ --> statement-breakpoint
87
+ alter table "mod_tracker"."workflow_schemes" force row level security;
88
+ --> statement-breakpoint
89
+ create policy "workflow_schemes_ws_isolation" on "mod_tracker"."workflow_schemes"
90
+ using (workspace_id::text = current_setting('app.workspace_id', true))
91
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
92
+ --> statement-breakpoint
93
+ alter table "mod_tracker"."issues" enable row level security;
94
+ --> statement-breakpoint
95
+ alter table "mod_tracker"."issues" force row level security;
96
+ --> statement-breakpoint
97
+ create policy "issues_ws_isolation" on "mod_tracker"."issues"
98
+ using (workspace_id::text = current_setting('app.workspace_id', true))
99
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
100
+ --> statement-breakpoint
101
+ alter table "mod_tracker"."comments" enable row level security;
102
+ --> statement-breakpoint
103
+ alter table "mod_tracker"."comments" force row level security;
104
+ --> statement-breakpoint
105
+ create policy "comments_ws_isolation" on "mod_tracker"."comments"
106
+ using (workspace_id::text = current_setting('app.workspace_id', true))
107
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
108
+ --> statement-breakpoint
109
+ alter table "mod_tracker"."comment_reactions" enable row level security;
110
+ --> statement-breakpoint
111
+ alter table "mod_tracker"."comment_reactions" force row level security;
112
+ --> statement-breakpoint
113
+ create policy "comment_reactions_ws_isolation" on "mod_tracker"."comment_reactions"
114
+ using (workspace_id::text = current_setting('app.workspace_id', true))
115
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
116
+ --> statement-breakpoint
117
+ alter table "mod_tracker"."relations" enable row level security;
118
+ --> statement-breakpoint
119
+ alter table "mod_tracker"."relations" force row level security;
120
+ --> statement-breakpoint
121
+ create policy "relations_ws_isolation" on "mod_tracker"."relations"
122
+ using (workspace_id::text = current_setting('app.workspace_id', true))
123
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
124
+ --> statement-breakpoint
125
+ alter table "mod_tracker"."attachments" enable row level security;
126
+ --> statement-breakpoint
127
+ alter table "mod_tracker"."attachments" force row level security;
128
+ --> statement-breakpoint
129
+ create policy "attachments_ws_isolation" on "mod_tracker"."attachments"
130
+ using (workspace_id::text = current_setting('app.workspace_id', true))
131
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
132
+ --> statement-breakpoint
133
+ alter table "mod_tracker"."links" enable row level security;
134
+ --> statement-breakpoint
135
+ alter table "mod_tracker"."links" force row level security;
136
+ --> statement-breakpoint
137
+ create policy "links_ws_isolation" on "mod_tracker"."links"
138
+ using (workspace_id::text = current_setting('app.workspace_id', true))
139
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
140
+ --> statement-breakpoint
141
+ alter table "mod_tracker"."issue_history" enable row level security;
142
+ --> statement-breakpoint
143
+ alter table "mod_tracker"."issue_history" force row level security;
144
+ --> statement-breakpoint
145
+ create policy "issue_history_ws_isolation" on "mod_tracker"."issue_history"
146
+ using (workspace_id::text = current_setting('app.workspace_id', true))
147
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
148
+ --> statement-breakpoint
149
+ alter table "mod_tracker"."issue_status_history" enable row level security;
150
+ --> statement-breakpoint
151
+ alter table "mod_tracker"."issue_status_history" force row level security;
152
+ --> statement-breakpoint
153
+ create policy "issue_status_history_ws_isolation" on "mod_tracker"."issue_status_history"
154
+ using (workspace_id::text = current_setting('app.workspace_id', true))
155
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
156
+ --> statement-breakpoint
157
+ alter table "mod_tracker"."issue_approvals" enable row level security;
158
+ --> statement-breakpoint
159
+ alter table "mod_tracker"."issue_approvals" force row level security;
160
+ --> statement-breakpoint
161
+ create policy "issue_approvals_ws_isolation" on "mod_tracker"."issue_approvals"
162
+ using (workspace_id::text = current_setting('app.workspace_id', true))
163
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
164
+ --> statement-breakpoint
165
+ alter table "mod_tracker"."issue_templates" enable row level security;
166
+ --> statement-breakpoint
167
+ alter table "mod_tracker"."issue_templates" force row level security;
168
+ --> statement-breakpoint
169
+ create policy "issue_templates_ws_isolation" on "mod_tracker"."issue_templates"
170
+ using (workspace_id::text = current_setting('app.workspace_id', true))
171
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
172
+ --> statement-breakpoint
173
+ alter table "mod_tracker"."recurring_issues" enable row level security;
174
+ --> statement-breakpoint
175
+ alter table "mod_tracker"."recurring_issues" force row level security;
176
+ --> statement-breakpoint
177
+ create policy "recurring_issues_ws_isolation" on "mod_tracker"."recurring_issues"
178
+ using (workspace_id::text = current_setting('app.workspace_id', true))
179
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
180
+ --> statement-breakpoint
181
+ alter table "mod_tracker"."cycles" enable row level security;
182
+ --> statement-breakpoint
183
+ alter table "mod_tracker"."cycles" force row level security;
184
+ --> statement-breakpoint
185
+ create policy "cycles_ws_isolation" on "mod_tracker"."cycles"
186
+ using (workspace_id::text = current_setting('app.workspace_id', true))
187
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
188
+ --> statement-breakpoint
189
+ alter table "mod_tracker"."milestones" enable row level security;
190
+ --> statement-breakpoint
191
+ alter table "mod_tracker"."milestones" force row level security;
192
+ --> statement-breakpoint
193
+ create policy "milestones_ws_isolation" on "mod_tracker"."milestones"
194
+ using (workspace_id::text = current_setting('app.workspace_id', true))
195
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
196
+ --> statement-breakpoint
197
+ alter table "mod_tracker"."versions" enable row level security;
198
+ --> statement-breakpoint
199
+ alter table "mod_tracker"."versions" force row level security;
200
+ --> statement-breakpoint
201
+ create policy "versions_ws_isolation" on "mod_tracker"."versions"
202
+ using (workspace_id::text = current_setting('app.workspace_id', true))
203
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
204
+ --> statement-breakpoint
205
+ alter table "mod_tracker"."components" enable row level security;
206
+ --> statement-breakpoint
207
+ alter table "mod_tracker"."components" force row level security;
208
+ --> statement-breakpoint
209
+ create policy "components_ws_isolation" on "mod_tracker"."components"
210
+ using (workspace_id::text = current_setting('app.workspace_id', true))
211
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
212
+ --> statement-breakpoint
213
+ alter table "mod_tracker"."labels" enable row level security;
214
+ --> statement-breakpoint
215
+ alter table "mod_tracker"."labels" force row level security;
216
+ --> statement-breakpoint
217
+ create policy "labels_ws_isolation" on "mod_tracker"."labels"
218
+ using (workspace_id::text = current_setting('app.workspace_id', true))
219
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
220
+ --> statement-breakpoint
221
+ alter table "mod_tracker"."views" enable row level security;
222
+ --> statement-breakpoint
223
+ alter table "mod_tracker"."views" force row level security;
224
+ --> statement-breakpoint
225
+ create policy "views_ws_isolation" on "mod_tracker"."views"
226
+ using (workspace_id::text = current_setting('app.workspace_id', true))
227
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
228
+ --> statement-breakpoint
229
+ alter table "mod_tracker"."view_pins" enable row level security;
230
+ --> statement-breakpoint
231
+ alter table "mod_tracker"."view_pins" force row level security;
232
+ --> statement-breakpoint
233
+ create policy "view_pins_ws_isolation" on "mod_tracker"."view_pins"
234
+ using (workspace_id::text = current_setting('app.workspace_id', true))
235
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
236
+ --> statement-breakpoint
237
+ alter table "mod_tracker"."worklogs" enable row level security;
238
+ --> statement-breakpoint
239
+ alter table "mod_tracker"."worklogs" force row level security;
240
+ --> statement-breakpoint
241
+ create policy "worklogs_ws_isolation" on "mod_tracker"."worklogs"
242
+ using (workspace_id::text = current_setting('app.workspace_id', true))
243
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
244
+ --> statement-breakpoint
245
+ alter table "mod_tracker"."timers" enable row level security;
246
+ --> statement-breakpoint
247
+ alter table "mod_tracker"."timers" force row level security;
248
+ --> statement-breakpoint
249
+ create policy "timers_ws_isolation" on "mod_tracker"."timers"
250
+ using (workspace_id::text = current_setting('app.workspace_id', true))
251
+ with check (workspace_id::text = current_setting('app.workspace_id', true));
252
+ --> statement-breakpoint
253
+ alter table "mod_tracker"."import_jobs" enable row level security;
254
+ --> statement-breakpoint
255
+ alter table "mod_tracker"."import_jobs" force row level security;
256
+ --> statement-breakpoint
257
+ create policy "import_jobs_ws_isolation" on "mod_tracker"."import_jobs"
258
+ using (workspace_id::text = current_setting('app.workspace_id', true))
259
+ with check (workspace_id::text = current_setting('app.workspace_id', true));