@aopslab/aops-server 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 (185) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +6 -0
  3. package/README.md +21 -0
  4. package/aops-server-runtime.json +11 -0
  5. package/build/client/_app/immutable/chunks/2_TffmqH.js +1 -0
  6. package/build/client/_app/immutable/chunks/3DOfIKW0.js +1 -0
  7. package/build/client/_app/immutable/chunks/B2EkC-sy.js +1 -0
  8. package/build/client/_app/immutable/chunks/CMkIcmi1.js +2 -0
  9. package/build/client/_app/immutable/chunks/rqnVXeyB.js +1 -0
  10. package/build/client/_app/immutable/chunks/sZYZbj9W.js +1 -0
  11. package/build/client/_app/immutable/chunks/wbPk3Yxo.js +81 -0
  12. package/build/client/_app/immutable/entry/app.C7STLTX8.js +2 -0
  13. package/build/client/_app/immutable/entry/start.BC94hOaC.js +1 -0
  14. package/build/client/_app/immutable/nodes/0.BYBfjxZ5.js +1 -0
  15. package/build/client/_app/immutable/nodes/1.BNXFXajG.js +1 -0
  16. package/build/client/_app/version.json +1 -0
  17. package/build/env.js +70 -0
  18. package/build/env.js.map +1 -0
  19. package/build/handler.js +16 -0
  20. package/build/handler.js.map +1 -0
  21. package/build/index.js +139 -0
  22. package/build/index.js.map +1 -0
  23. package/build/server/chunks/0-RfB6m2nq.js +7 -0
  24. package/build/server/chunks/0-RfB6m2nq.js.map +1 -0
  25. package/build/server/chunks/1-_gg8Q0UT.js +9 -0
  26. package/build/server/chunks/1-_gg8Q0UT.js.map +1 -0
  27. package/build/server/chunks/_server.ts-6276EQIF.js +44 -0
  28. package/build/server/chunks/_server.ts-6276EQIF.js.map +1 -0
  29. package/build/server/chunks/_server.ts-B59WFQzX.js +174 -0
  30. package/build/server/chunks/_server.ts-B59WFQzX.js.map +1 -0
  31. package/build/server/chunks/_server.ts-BauJsLZI.js +40 -0
  32. package/build/server/chunks/_server.ts-BauJsLZI.js.map +1 -0
  33. package/build/server/chunks/_server.ts-BnGzJw2-.js +81 -0
  34. package/build/server/chunks/_server.ts-BnGzJw2-.js.map +1 -0
  35. package/build/server/chunks/_server.ts-CP7qM24V.js +34 -0
  36. package/build/server/chunks/_server.ts-CP7qM24V.js.map +1 -0
  37. package/build/server/chunks/_server.ts-Cbq_u99d.js +9 -0
  38. package/build/server/chunks/_server.ts-Cbq_u99d.js.map +1 -0
  39. package/build/server/chunks/_server.ts-Ch8fPT-o.js +92 -0
  40. package/build/server/chunks/_server.ts-Ch8fPT-o.js.map +1 -0
  41. package/build/server/chunks/_server.ts-Cv-yaXZI.js +7 -0
  42. package/build/server/chunks/_server.ts-Cv-yaXZI.js.map +1 -0
  43. package/build/server/chunks/_server.ts-D6lBwOON.js +34 -0
  44. package/build/server/chunks/_server.ts-D6lBwOON.js.map +1 -0
  45. package/build/server/chunks/_server.ts-D84K3pp9.js +11 -0
  46. package/build/server/chunks/_server.ts-D84K3pp9.js.map +1 -0
  47. package/build/server/chunks/_server.ts-DNzU1ToA.js +277 -0
  48. package/build/server/chunks/_server.ts-DNzU1ToA.js.map +1 -0
  49. package/build/server/chunks/_server.ts-DQQnw77t.js +17 -0
  50. package/build/server/chunks/_server.ts-DQQnw77t.js.map +1 -0
  51. package/build/server/chunks/_server.ts-DSxr5l15.js +18 -0
  52. package/build/server/chunks/_server.ts-DSxr5l15.js.map +1 -0
  53. package/build/server/chunks/_server.ts-DZYokvuR.js +80 -0
  54. package/build/server/chunks/_server.ts-DZYokvuR.js.map +1 -0
  55. package/build/server/chunks/_server.ts-Dcqwpz2t.js +144 -0
  56. package/build/server/chunks/_server.ts-Dcqwpz2t.js.map +1 -0
  57. package/build/server/chunks/_server.ts-Di9VJnF4.js +81 -0
  58. package/build/server/chunks/_server.ts-Di9VJnF4.js.map +1 -0
  59. package/build/server/chunks/_server.ts-FBEHFT8b.js +33 -0
  60. package/build/server/chunks/_server.ts-FBEHFT8b.js.map +1 -0
  61. package/build/server/chunks/_server.ts-gZytCuiJ.js +10 -0
  62. package/build/server/chunks/_server.ts-gZytCuiJ.js.map +1 -0
  63. package/build/server/chunks/_server.ts-tNULLyEO.js +261 -0
  64. package/build/server/chunks/_server.ts-tNULLyEO.js.map +1 -0
  65. package/build/server/chunks/agent-gateway-runtime-DTZ4SxaC.js +2598 -0
  66. package/build/server/chunks/agent-gateway-runtime-DTZ4SxaC.js.map +1 -0
  67. package/build/server/chunks/aops-runtime-config-wpVmg7T-.js +179 -0
  68. package/build/server/chunks/aops-runtime-config-wpVmg7T-.js.map +1 -0
  69. package/build/server/chunks/discovery-D9JnSgfu.js +894 -0
  70. package/build/server/chunks/discovery-D9JnSgfu.js.map +1 -0
  71. package/build/server/chunks/error.svelte-DgUOqi-L.js +45 -0
  72. package/build/server/chunks/error.svelte-DgUOqi-L.js.map +1 -0
  73. package/build/server/chunks/handler-BN3-p5rP.js +1733 -0
  74. package/build/server/chunks/handler-BN3-p5rP.js.map +1 -0
  75. package/build/server/chunks/hooks.server-C4wxiH5m.js +52 -0
  76. package/build/server/chunks/hooks.server-C4wxiH5m.js.map +1 -0
  77. package/build/server/chunks/index.js-nbqdVuWC.js +10698 -0
  78. package/build/server/chunks/index.js-nbqdVuWC.js.map +1 -0
  79. package/build/server/chunks/manifest.js-_Re-Wj-y.js +167 -0
  80. package/build/server/chunks/manifest.js-_Re-Wj-y.js.map +1 -0
  81. package/build/server/chunks/plugin-error-normalize-Bq14Qbz3.js +297 -0
  82. package/build/server/chunks/plugin-error-normalize-Bq14Qbz3.js.map +1 -0
  83. package/build/server/chunks/project-alias-DqE2v58Q.js +29 -0
  84. package/build/server/chunks/project-alias-DqE2v58Q.js.map +1 -0
  85. package/build/server/chunks/registry-5amIZito.js +289 -0
  86. package/build/server/chunks/registry-5amIZito.js.map +1 -0
  87. package/build/server/chunks/request-base-url-BDdrsaga.js +24 -0
  88. package/build/server/chunks/request-base-url-BDdrsaga.js.map +1 -0
  89. package/build/server/chunks/request-context-tNeFQjgb.js +422 -0
  90. package/build/server/chunks/request-context-tNeFQjgb.js.map +1 -0
  91. package/build/server/chunks/xf-result-BRDjvftr.js +17 -0
  92. package/build/server/chunks/xf-result-BRDjvftr.js.map +1 -0
  93. package/build/shims.js +33 -0
  94. package/build/shims.js.map +1 -0
  95. package/cockpit/.vite/manifest.json +198 -0
  96. package/cockpit/assets/dm-sans-latin-400-normal-BwCSEQnW.woff +0 -0
  97. package/cockpit/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2 +0 -0
  98. package/cockpit/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2 +0 -0
  99. package/cockpit/assets/dm-sans-latin-500-normal-Dr3UlScf.woff +0 -0
  100. package/cockpit/assets/dm-sans-latin-700-normal-CUSSCpQX.woff +0 -0
  101. package/cockpit/assets/dm-sans-latin-700-normal-DvUfVpUG.woff2 +0 -0
  102. package/cockpit/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff +0 -0
  103. package/cockpit/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2 +0 -0
  104. package/cockpit/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2 +0 -0
  105. package/cockpit/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff +0 -0
  106. package/cockpit/assets/dm-sans-latin-ext-700-normal-BLI3TTWz.woff +0 -0
  107. package/cockpit/assets/dm-sans-latin-ext-700-normal-CJIcxD6K.woff2 +0 -0
  108. package/cockpit/assets/index-DDswO4B1.css +1 -0
  109. package/cockpit/assets/index-bovtnZ98.js +18 -0
  110. package/cockpit/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  111. package/cockpit/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  112. package/cockpit/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  113. package/cockpit/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  114. package/cockpit/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  115. package/cockpit/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  116. package/cockpit/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  117. package/cockpit/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  118. package/cockpit/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  119. package/cockpit/assets/outfit-latin-400-normal-BGsTXAXT.woff2 +0 -0
  120. package/cockpit/assets/outfit-latin-400-normal-DMwTpYkH.woff +0 -0
  121. package/cockpit/assets/outfit-latin-600-normal-B7SfZ07L.woff2 +0 -0
  122. package/cockpit/assets/outfit-latin-600-normal-BEfTtDA7.woff +0 -0
  123. package/cockpit/assets/outfit-latin-ext-400-normal-5tcqmc2S.woff2 +0 -0
  124. package/cockpit/assets/outfit-latin-ext-400-normal-DHm7mdGe.woff +0 -0
  125. package/cockpit/assets/outfit-latin-ext-600-normal-B85nYjL1.woff2 +0 -0
  126. package/cockpit/assets/outfit-latin-ext-600-normal-CWJcPgd7.woff +0 -0
  127. package/cockpit/assets/unbounded-cyrillic-600-normal-B-s5c2Kn.woff +0 -0
  128. package/cockpit/assets/unbounded-cyrillic-600-normal-DW6uzIMB.woff2 +0 -0
  129. package/cockpit/assets/unbounded-latin-600-normal-BPdB_PEv.woff +0 -0
  130. package/cockpit/assets/unbounded-latin-600-normal-oRSANpZr.woff2 +0 -0
  131. package/cockpit/assets/unbounded-latin-ext-600-normal-0iZLtTDV.woff2 +0 -0
  132. package/cockpit/assets/unbounded-latin-ext-600-normal-ClMPf-bu.woff +0 -0
  133. package/cockpit/assets/unbounded-vietnamese-600-normal-BzfrgZ_C.woff +0 -0
  134. package/cockpit/assets/unbounded-vietnamese-600-normal-Cx2bTSHN.woff2 +0 -0
  135. package/cockpit/community.module-inventory.json +2389 -0
  136. package/cockpit/index.html +14 -0
  137. package/community-postgres.json +13 -0
  138. package/migrations/agentspace/0000_thin_carlie_cooper.sql +764 -0
  139. package/migrations/agentspace/meta/0000_snapshot.json +6885 -0
  140. package/migrations/agentspace/meta/_journal.json +13 -0
  141. package/migrations/chatv3/0000_dry_ego.sql +218 -0
  142. package/migrations/chatv3/0001_nosy_obadiah_stane.sql +35 -0
  143. package/migrations/chatv3/0002_narrow_darkhawk.sql +4 -0
  144. package/migrations/chatv3/0003_damp_zarek.sql +2 -0
  145. package/migrations/chatv3/0004_nervous_martin_li.sql +60 -0
  146. package/migrations/chatv3/0005_chatv3_server_encrypted_mode.sql +1 -0
  147. package/migrations/chatv3/meta/0000_snapshot.json +1887 -0
  148. package/migrations/chatv3/meta/0001_snapshot.json +2175 -0
  149. package/migrations/chatv3/meta/0002_snapshot.json +2229 -0
  150. package/migrations/chatv3/meta/0003_snapshot.json +2241 -0
  151. package/migrations/chatv3/meta/0004_snapshot.json +2746 -0
  152. package/migrations/chatv3/meta/_journal.json +48 -0
  153. package/migrations/docman/0000_curvy_valeria_richards.sql +257 -0
  154. package/migrations/docman/0001_massive_risque.sql +2 -0
  155. package/migrations/docman/0002_simple_logan.sql +50 -0
  156. package/migrations/docman/0003_quick_index.sql +45 -0
  157. package/migrations/docman/0004_known_summary.sql +9 -0
  158. package/migrations/docman/0005_vector_signal.sql +9 -0
  159. package/migrations/docman/0006_document_version_current_invariant.sql +15 -0
  160. package/migrations/docman/meta/_journal.json +55 -0
  161. package/migrations/projectman/0000_smooth_klaw.sql +257 -0
  162. package/migrations/projectman/0001_worthless_zodiak.sql +9 -0
  163. package/migrations/projectman/0002_board_rename.sql +108 -0
  164. package/migrations/projectman/0003_review_request.sql +62 -0
  165. package/migrations/projectman/0004_review_request_idempotency.sql +3 -0
  166. package/migrations/projectman/0005_allow_multi_sprint_per_task.sql +1 -0
  167. package/migrations/projectman/meta/_journal.json +48 -0
  168. package/migrations/sys/0000_loose_praxagora.sql +31 -0
  169. package/migrations/sys/0001_awesome_ronan.sql +2 -0
  170. package/migrations/sys/0002_steady_maximus.sql +2 -0
  171. package/migrations/sys/0003_escalating_rate_limiter.sql +2 -0
  172. package/migrations/sys/0004_rate_limiter_timestamptz.sql +22 -0
  173. package/migrations/sys/0005_sys_counters.sql +21 -0
  174. package/migrations/sys/meta/_journal.json +48 -0
  175. package/npm-shrinkwrap.json +4375 -0
  176. package/package.json +62 -0
  177. package/runtime/agentspace-host-adapter.mjs +64 -0
  178. package/runtime/agentspace-tooling.mjs +389 -0
  179. package/runtime/docman-host-adapter.mjs +177 -0
  180. package/runtime/docman-policy.mjs +450 -0
  181. package/runtime/docman-tooling.mjs +20 -0
  182. package/runtime/projectman-host-adapter.mjs +597 -0
  183. package/runtime/scope-context.mjs +99 -0
  184. package/scripts/community-host.mjs +626 -0
  185. package/scripts/community-migration-policy-v1.json +296 -0
@@ -0,0 +1,257 @@
1
+ CREATE TABLE "projectman_kanban_boards" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "tenantId" text NOT NULL,
4
+ "scopeId" uuid NOT NULL,
5
+ "name" text NOT NULL,
6
+ "slug" text,
7
+ "description" text,
8
+ "position" integer NOT NULL,
9
+ "createdBy" text,
10
+ "updatedBy" text,
11
+ "createdAt" timestamp with time zone DEFAULT now(),
12
+ "updatedAt" timestamp with time zone DEFAULT now()
13
+ );
14
+ --> statement-breakpoint
15
+ CREATE TABLE "projectman_kanban_columns" (
16
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
17
+ "tenantId" text NOT NULL,
18
+ "scopeId" uuid NOT NULL,
19
+ "name" text NOT NULL,
20
+ "statusKey" text,
21
+ "description" text,
22
+ "wipLimit" integer,
23
+ "createdBy" text,
24
+ "updatedBy" text,
25
+ "createdAt" timestamp with time zone DEFAULT now(),
26
+ "updatedAt" timestamp with time zone DEFAULT now()
27
+ );
28
+ --> statement-breakpoint
29
+ CREATE TABLE "projectman_kanban_column_groups" (
30
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
31
+ "tenantId" text NOT NULL,
32
+ "scopeId" uuid NOT NULL,
33
+ "columnId" uuid NOT NULL,
34
+ "name" text NOT NULL,
35
+ "position" integer NOT NULL,
36
+ "wipLimit" integer,
37
+ "createdBy" text,
38
+ "updatedBy" text,
39
+ "createdAt" timestamp with time zone DEFAULT now(),
40
+ "updatedAt" timestamp with time zone DEFAULT now()
41
+ );
42
+ --> statement-breakpoint
43
+ CREATE TABLE "projectman_kanban_board_columns" (
44
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
45
+ "tenantId" text NOT NULL,
46
+ "scopeId" uuid NOT NULL,
47
+ "boardId" uuid NOT NULL,
48
+ "columnId" uuid NOT NULL,
49
+ "position" integer NOT NULL,
50
+ "createdBy" text,
51
+ "updatedBy" text,
52
+ "createdAt" timestamp with time zone DEFAULT now(),
53
+ "updatedAt" timestamp with time zone DEFAULT now()
54
+ );
55
+ --> statement-breakpoint
56
+ CREATE TABLE "projectman_kanban_tasks" (
57
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
58
+ "tenantId" text NOT NULL,
59
+ "scopeId" uuid NOT NULL,
60
+ "boardId" uuid NOT NULL,
61
+ "boardColumnId" uuid NOT NULL,
62
+ "columnGroupId" uuid,
63
+ "sprintId" uuid,
64
+ "title" text NOT NULL,
65
+ "taskCode" text,
66
+ "slug" text,
67
+ "description" text,
68
+ "progress" integer DEFAULT 0 NOT NULL,
69
+ "position" integer NOT NULL,
70
+ "createdBy" text,
71
+ "updatedBy" text,
72
+ "createdAt" timestamp with time zone DEFAULT now(),
73
+ "updatedAt" timestamp with time zone DEFAULT now()
74
+ );
75
+ --> statement-breakpoint
76
+ CREATE TABLE "projectman_kanban_templates" (
77
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
78
+ "tenantId" text NOT NULL,
79
+ "scopeId" uuid NOT NULL,
80
+ "name" text NOT NULL,
81
+ "description" text,
82
+ "definition" jsonb NOT NULL,
83
+ "createdBy" text,
84
+ "updatedBy" text,
85
+ "createdAt" timestamp with time zone DEFAULT now(),
86
+ "updatedAt" timestamp with time zone DEFAULT now()
87
+ );
88
+ --> statement-breakpoint
89
+ CREATE TABLE "projectman_events" (
90
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
91
+ "tenantId" text NOT NULL,
92
+ "scopeId" uuid NOT NULL,
93
+ "entityType" text NOT NULL,
94
+ "entityId" text NOT NULL,
95
+ "action" text NOT NULL,
96
+ "payload" jsonb,
97
+ "actorId" text,
98
+ "createdAt" timestamp with time zone DEFAULT now(),
99
+ "updatedAt" timestamp with time zone DEFAULT now()
100
+ );
101
+ --> statement-breakpoint
102
+ CREATE TABLE "projectman_sprints" (
103
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
104
+ "tenantId" text NOT NULL,
105
+ "scopeId" uuid NOT NULL,
106
+ "kanbanTaskId" uuid NOT NULL,
107
+ "name" text NOT NULL,
108
+ "goal" text NOT NULL,
109
+ "references" jsonb,
110
+ "scope" jsonb,
111
+ "validationPlan" jsonb,
112
+ "notes" text,
113
+ "createdBy" text,
114
+ "updatedBy" text,
115
+ "createdAt" timestamp with time zone DEFAULT now(),
116
+ "updatedAt" timestamp with time zone DEFAULT now()
117
+ );
118
+ --> statement-breakpoint
119
+ CREATE TABLE "projectman_sprint_phases" (
120
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
121
+ "tenantId" text NOT NULL,
122
+ "sprintId" uuid NOT NULL,
123
+ "name" text NOT NULL,
124
+ "description" text,
125
+ "position" integer NOT NULL,
126
+ "createdBy" text,
127
+ "updatedBy" text,
128
+ "createdAt" timestamp with time zone DEFAULT now(),
129
+ "updatedAt" timestamp with time zone DEFAULT now()
130
+ );
131
+ --> statement-breakpoint
132
+ CREATE TABLE "projectman_sprint_microtasks" (
133
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
134
+ "tenantId" text NOT NULL,
135
+ "phaseId" uuid NOT NULL,
136
+ "title" text NOT NULL,
137
+ "status" text NOT NULL,
138
+ "position" integer NOT NULL,
139
+ "notes" text,
140
+ "createdBy" text,
141
+ "updatedBy" text,
142
+ "createdAt" timestamp with time zone DEFAULT now(),
143
+ "updatedAt" timestamp with time zone DEFAULT now()
144
+ );
145
+ --> statement-breakpoint
146
+ CREATE TABLE "projectman_issue_items" (
147
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
148
+ "tenantId" text NOT NULL,
149
+ "scopeId" uuid NOT NULL,
150
+ "sprintId" uuid,
151
+ "kanbanTaskId" uuid,
152
+ "microTaskItemId" uuid,
153
+ "title" text NOT NULL,
154
+ "description" text,
155
+ "status" text NOT NULL,
156
+ "severity" text NOT NULL,
157
+ "source" text NOT NULL,
158
+ "tags" jsonb,
159
+ "notes" text,
160
+ "meta" jsonb,
161
+ "openedAt" timestamp with time zone,
162
+ "resolvedAt" timestamp with time zone,
163
+ "createdBy" text,
164
+ "updatedBy" text,
165
+ "createdAt" timestamp with time zone DEFAULT now(),
166
+ "updatedAt" timestamp with time zone DEFAULT now()
167
+ );
168
+ --> statement-breakpoint
169
+ CREATE TABLE "projectman_feedback_items" (
170
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
171
+ "tenantId" text NOT NULL,
172
+ "scopeId" uuid NOT NULL,
173
+ "sprintId" uuid,
174
+ "kanbanTaskId" uuid,
175
+ "microTaskItemId" uuid,
176
+ "title" text NOT NULL,
177
+ "description" text,
178
+ "status" text NOT NULL,
179
+ "type" text NOT NULL,
180
+ "severity" text NOT NULL,
181
+ "source" text NOT NULL,
182
+ "tags" jsonb,
183
+ "suggestion" text,
184
+ "notes" text,
185
+ "meta" jsonb,
186
+ "recordedAt" timestamp with time zone,
187
+ "handledAt" timestamp with time zone,
188
+ "createdBy" text,
189
+ "updatedBy" text,
190
+ "createdAt" timestamp with time zone DEFAULT now(),
191
+ "updatedAt" timestamp with time zone DEFAULT now()
192
+ );
193
+ --> statement-breakpoint
194
+ CREATE UNIQUE INDEX "kanban_board_scope_name_unique" ON "projectman_kanban_boards" USING btree ("tenantId","scopeId","name");--> statement-breakpoint
195
+ CREATE UNIQUE INDEX "kanban_board_scope_slug_unique" ON "projectman_kanban_boards" USING btree ("tenantId","scopeId","slug");--> statement-breakpoint
196
+ CREATE UNIQUE INDEX "kanban_board_position_unique" ON "projectman_kanban_boards" USING btree ("tenantId","scopeId","position");--> statement-breakpoint
197
+ CREATE INDEX "kanban_board_idx_tenant" ON "projectman_kanban_boards" USING btree ("tenantId");--> statement-breakpoint
198
+ CREATE INDEX "kanban_board_idx_scope" ON "projectman_kanban_boards" USING btree ("tenantId","scopeId");--> statement-breakpoint
199
+ CREATE INDEX "kanban_column_idx_tenant" ON "projectman_kanban_columns" USING btree ("tenantId");--> statement-breakpoint
200
+ CREATE INDEX "kanban_column_idx_scope" ON "projectman_kanban_columns" USING btree ("tenantId","scopeId");--> statement-breakpoint
201
+ CREATE INDEX "kanban_column_idx_status" ON "projectman_kanban_columns" USING btree ("tenantId","statusKey");--> statement-breakpoint
202
+ CREATE UNIQUE INDEX "kanban_column_group_position_unique" ON "projectman_kanban_column_groups" USING btree ("tenantId","columnId","position");--> statement-breakpoint
203
+ CREATE INDEX "kanban_column_group_idx_tenant" ON "projectman_kanban_column_groups" USING btree ("tenantId");--> statement-breakpoint
204
+ CREATE INDEX "kanban_column_group_idx_scope" ON "projectman_kanban_column_groups" USING btree ("tenantId","scopeId");--> statement-breakpoint
205
+ CREATE INDEX "kanban_column_group_idx_column" ON "projectman_kanban_column_groups" USING btree ("tenantId","columnId");--> statement-breakpoint
206
+ CREATE UNIQUE INDEX "kanban_board_column_unique" ON "projectman_kanban_board_columns" USING btree ("tenantId","boardId","columnId");--> statement-breakpoint
207
+ CREATE UNIQUE INDEX "kanban_board_column_position_unique" ON "projectman_kanban_board_columns" USING btree ("tenantId","boardId","position");--> statement-breakpoint
208
+ CREATE INDEX "kanban_board_column_idx_tenant" ON "projectman_kanban_board_columns" USING btree ("tenantId");--> statement-breakpoint
209
+ CREATE INDEX "kanban_board_column_idx_scope" ON "projectman_kanban_board_columns" USING btree ("tenantId","scopeId");--> statement-breakpoint
210
+ CREATE INDEX "kanban_board_column_idx_board" ON "projectman_kanban_board_columns" USING btree ("tenantId","boardId");--> statement-breakpoint
211
+ CREATE INDEX "kanban_board_column_idx_column" ON "projectman_kanban_board_columns" USING btree ("tenantId","columnId");--> statement-breakpoint
212
+ CREATE UNIQUE INDEX "kanban_task_position_unique" ON "projectman_kanban_tasks" USING btree ("tenantId","boardColumnId","columnGroupId","position");--> statement-breakpoint
213
+ CREATE INDEX "kanban_task_idx_tenant" ON "projectman_kanban_tasks" USING btree ("tenantId");--> statement-breakpoint
214
+ CREATE INDEX "kanban_task_idx_scope" ON "projectman_kanban_tasks" USING btree ("tenantId","scopeId");--> statement-breakpoint
215
+ CREATE INDEX "kanban_task_idx_board" ON "projectman_kanban_tasks" USING btree ("tenantId","boardId");--> statement-breakpoint
216
+ CREATE INDEX "kanban_task_idx_board_column" ON "projectman_kanban_tasks" USING btree ("tenantId","boardColumnId");--> statement-breakpoint
217
+ CREATE INDEX "kanban_task_idx_column_group" ON "projectman_kanban_tasks" USING btree ("tenantId","columnGroupId");--> statement-breakpoint
218
+ CREATE INDEX "kanban_task_idx_sprint" ON "projectman_kanban_tasks" USING btree ("tenantId","sprintId");--> statement-breakpoint
219
+ CREATE UNIQUE INDEX "kanban_task_scope_code_unique" ON "projectman_kanban_tasks" USING btree ("tenantId","scopeId","taskCode");--> statement-breakpoint
220
+ CREATE UNIQUE INDEX "kanban_task_scope_slug_unique" ON "projectman_kanban_tasks" USING btree ("tenantId","scopeId","slug");--> statement-breakpoint
221
+ CREATE UNIQUE INDEX "projectman_kanban_template_name_unique" ON "projectman_kanban_templates" USING btree ("tenantId","scopeId","name");--> statement-breakpoint
222
+ CREATE INDEX "projectman_kanban_template_idx_tenant" ON "projectman_kanban_templates" USING btree ("tenantId");--> statement-breakpoint
223
+ CREATE INDEX "projectman_kanban_template_idx_scope" ON "projectman_kanban_templates" USING btree ("tenantId","scopeId");--> statement-breakpoint
224
+ CREATE INDEX "projectman_event_idx_tenant" ON "projectman_events" USING btree ("tenantId");--> statement-breakpoint
225
+ CREATE INDEX "projectman_event_idx_scope" ON "projectman_events" USING btree ("tenantId","scopeId");--> statement-breakpoint
226
+ CREATE INDEX "projectman_event_idx_entity" ON "projectman_events" USING btree ("tenantId","entityType","entityId");--> statement-breakpoint
227
+ CREATE INDEX "projectman_event_idx_action" ON "projectman_events" USING btree ("tenantId","action");--> statement-breakpoint
228
+ CREATE INDEX "projectman_event_idx_created_at" ON "projectman_events" USING btree ("tenantId","createdAt");--> statement-breakpoint
229
+ CREATE INDEX "projectman_sprint_idx_tenant" ON "projectman_sprints" USING btree ("tenantId");--> statement-breakpoint
230
+ CREATE INDEX "projectman_sprint_idx_scope" ON "projectman_sprints" USING btree ("tenantId","scopeId");--> statement-breakpoint
231
+ CREATE INDEX "projectman_sprint_idx_kanban_task" ON "projectman_sprints" USING btree ("tenantId","kanbanTaskId");--> statement-breakpoint
232
+ CREATE UNIQUE INDEX "projectman_sprint_task_unique" ON "projectman_sprints" USING btree ("tenantId","kanbanTaskId");--> statement-breakpoint
233
+ CREATE UNIQUE INDEX "projectman_sprint_phase_position_unique" ON "projectman_sprint_phases" USING btree ("tenantId","sprintId","position");--> statement-breakpoint
234
+ CREATE INDEX "projectman_sprint_phase_idx_tenant" ON "projectman_sprint_phases" USING btree ("tenantId");--> statement-breakpoint
235
+ CREATE INDEX "projectman_sprint_phase_idx_sprint" ON "projectman_sprint_phases" USING btree ("tenantId","sprintId");--> statement-breakpoint
236
+ CREATE UNIQUE INDEX "projectman_sprint_microtask_position_unique" ON "projectman_sprint_microtasks" USING btree ("tenantId","phaseId","position");--> statement-breakpoint
237
+ CREATE INDEX "projectman_sprint_microtask_idx_tenant" ON "projectman_sprint_microtasks" USING btree ("tenantId");--> statement-breakpoint
238
+ CREATE INDEX "projectman_sprint_microtask_idx_phase" ON "projectman_sprint_microtasks" USING btree ("tenantId","phaseId");--> statement-breakpoint
239
+ CREATE INDEX "issue_item_idx_tenant" ON "projectman_issue_items" USING btree ("tenantId");--> statement-breakpoint
240
+ CREATE INDEX "issue_item_idx_scope" ON "projectman_issue_items" USING btree ("tenantId","scopeId");--> statement-breakpoint
241
+ CREATE INDEX "issue_item_idx_status" ON "projectman_issue_items" USING btree ("tenantId","scopeId","status");--> statement-breakpoint
242
+ CREATE INDEX "issue_item_idx_severity" ON "projectman_issue_items" USING btree ("tenantId","scopeId","severity");--> statement-breakpoint
243
+ CREATE INDEX "issue_item_idx_source" ON "projectman_issue_items" USING btree ("tenantId","scopeId","source");--> statement-breakpoint
244
+ CREATE INDEX "issue_item_idx_sprint" ON "projectman_issue_items" USING btree ("tenantId","sprintId");--> statement-breakpoint
245
+ CREATE INDEX "issue_item_idx_kanban_task" ON "projectman_issue_items" USING btree ("tenantId","kanbanTaskId");--> statement-breakpoint
246
+ CREATE INDEX "issue_item_idx_micro_task" ON "projectman_issue_items" USING btree ("tenantId","microTaskItemId");--> statement-breakpoint
247
+ CREATE INDEX "issue_item_idx_created_at" ON "projectman_issue_items" USING btree ("tenantId","createdAt");--> statement-breakpoint
248
+ CREATE INDEX "feedback_item_idx_tenant" ON "projectman_feedback_items" USING btree ("tenantId");--> statement-breakpoint
249
+ CREATE INDEX "feedback_item_idx_scope" ON "projectman_feedback_items" USING btree ("tenantId","scopeId");--> statement-breakpoint
250
+ CREATE INDEX "feedback_item_idx_status" ON "projectman_feedback_items" USING btree ("tenantId","scopeId","status");--> statement-breakpoint
251
+ CREATE INDEX "feedback_item_idx_type" ON "projectman_feedback_items" USING btree ("tenantId","scopeId","type");--> statement-breakpoint
252
+ CREATE INDEX "feedback_item_idx_severity" ON "projectman_feedback_items" USING btree ("tenantId","scopeId","severity");--> statement-breakpoint
253
+ CREATE INDEX "feedback_item_idx_source" ON "projectman_feedback_items" USING btree ("tenantId","scopeId","source");--> statement-breakpoint
254
+ CREATE INDEX "feedback_item_idx_sprint" ON "projectman_feedback_items" USING btree ("tenantId","sprintId");--> statement-breakpoint
255
+ CREATE INDEX "feedback_item_idx_kanban_task" ON "projectman_feedback_items" USING btree ("tenantId","kanbanTaskId");--> statement-breakpoint
256
+ CREATE INDEX "feedback_item_idx_micro_task" ON "projectman_feedback_items" USING btree ("tenantId","microTaskItemId");--> statement-breakpoint
257
+ CREATE INDEX "feedback_item_idx_created_at" ON "projectman_feedback_items" USING btree ("tenantId","createdAt");
@@ -0,0 +1,9 @@
1
+ ALTER TABLE "projectman_kanban_column_groups" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
2
+ DROP TABLE "projectman_kanban_column_groups" CASCADE;--> statement-breakpoint
3
+ ALTER TABLE "projectman_kanban_columns" RENAME COLUMN "statusKey" TO "slug";--> statement-breakpoint
4
+ DROP INDEX "kanban_column_idx_status";--> statement-breakpoint
5
+ DROP INDEX "kanban_task_idx_column_group";--> statement-breakpoint
6
+ DROP INDEX "kanban_task_position_unique";--> statement-breakpoint
7
+ CREATE UNIQUE INDEX "kanban_column_scope_slug_unique" ON "projectman_kanban_columns" USING btree ("tenantId","scopeId","slug");--> statement-breakpoint
8
+ CREATE UNIQUE INDEX "kanban_task_position_unique" ON "projectman_kanban_tasks" USING btree ("tenantId","boardColumnId","position");--> statement-breakpoint
9
+ ALTER TABLE "projectman_kanban_tasks" DROP COLUMN "columnGroupId";
@@ -0,0 +1,108 @@
1
+ DO $$
2
+ BEGIN
3
+ IF EXISTS (
4
+ SELECT 1
5
+ FROM information_schema.tables
6
+ WHERE table_schema = 'public'
7
+ AND table_name = 'projectman_kanban_board_groups'
8
+ ) AND NOT EXISTS (
9
+ SELECT 1
10
+ FROM information_schema.tables
11
+ WHERE table_schema = 'public'
12
+ AND table_name = 'projectman_kanban_boards'
13
+ ) THEN
14
+ ALTER TABLE "projectman_kanban_board_groups" RENAME TO "projectman_kanban_boards";
15
+ END IF;
16
+ END $$;
17
+ --> statement-breakpoint
18
+ DO $$
19
+ BEGIN
20
+ IF EXISTS (
21
+ SELECT 1
22
+ FROM information_schema.columns
23
+ WHERE table_schema = 'public'
24
+ AND table_name = 'projectman_kanban_board_columns'
25
+ AND column_name = 'boardGroupId'
26
+ ) THEN
27
+ ALTER TABLE "projectman_kanban_board_columns" RENAME COLUMN "boardGroupId" TO "boardId";
28
+ END IF;
29
+ END $$;
30
+ --> statement-breakpoint
31
+ DO $$
32
+ BEGIN
33
+ IF EXISTS (
34
+ SELECT 1
35
+ FROM information_schema.columns
36
+ WHERE table_schema = 'public'
37
+ AND table_name = 'projectman_kanban_tasks'
38
+ AND column_name = 'boardGroupId'
39
+ ) THEN
40
+ ALTER TABLE "projectman_kanban_tasks" RENAME COLUMN "boardGroupId" TO "boardId";
41
+ END IF;
42
+ END $$;
43
+ --> statement-breakpoint
44
+ DO $$
45
+ BEGIN
46
+ IF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_scope_name_unique')
47
+ AND NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_scope_name_unique') THEN
48
+ ALTER INDEX "kanban_board_group_scope_name_unique" RENAME TO "kanban_board_scope_name_unique";
49
+ ELSIF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_scope_name_unique')
50
+ AND EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_scope_name_unique') THEN
51
+ DROP INDEX "kanban_board_group_scope_name_unique";
52
+ END IF;
53
+ END $$;
54
+ --> statement-breakpoint
55
+ DO $$
56
+ BEGIN
57
+ IF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_scope_slug_unique')
58
+ AND NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_scope_slug_unique') THEN
59
+ ALTER INDEX "kanban_board_group_scope_slug_unique" RENAME TO "kanban_board_scope_slug_unique";
60
+ ELSIF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_scope_slug_unique')
61
+ AND EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_scope_slug_unique') THEN
62
+ DROP INDEX "kanban_board_group_scope_slug_unique";
63
+ END IF;
64
+ END $$;
65
+ --> statement-breakpoint
66
+ DO $$
67
+ BEGIN
68
+ IF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_position_unique')
69
+ AND NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_position_unique') THEN
70
+ ALTER INDEX "kanban_board_group_position_unique" RENAME TO "kanban_board_position_unique";
71
+ ELSIF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_position_unique')
72
+ AND EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_position_unique') THEN
73
+ DROP INDEX "kanban_board_group_position_unique";
74
+ END IF;
75
+ END $$;
76
+ --> statement-breakpoint
77
+ DO $$
78
+ BEGIN
79
+ IF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_idx_tenant')
80
+ AND NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_idx_tenant') THEN
81
+ ALTER INDEX "kanban_board_group_idx_tenant" RENAME TO "kanban_board_idx_tenant";
82
+ ELSIF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_idx_tenant')
83
+ AND EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_idx_tenant') THEN
84
+ DROP INDEX "kanban_board_group_idx_tenant";
85
+ END IF;
86
+ END $$;
87
+ --> statement-breakpoint
88
+ DO $$
89
+ BEGIN
90
+ IF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_idx_scope')
91
+ AND NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_idx_scope') THEN
92
+ ALTER INDEX "kanban_board_group_idx_scope" RENAME TO "kanban_board_idx_scope";
93
+ ELSIF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_group_idx_scope')
94
+ AND EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_board_idx_scope') THEN
95
+ DROP INDEX "kanban_board_group_idx_scope";
96
+ END IF;
97
+ END $$;
98
+ --> statement-breakpoint
99
+ DO $$
100
+ BEGIN
101
+ IF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_task_idx_board_group')
102
+ AND NOT EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_task_idx_board') THEN
103
+ ALTER INDEX "kanban_task_idx_board_group" RENAME TO "kanban_task_idx_board";
104
+ ELSIF EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_task_idx_board_group')
105
+ AND EXISTS (SELECT 1 FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'kanban_task_idx_board') THEN
106
+ DROP INDEX "kanban_task_idx_board_group";
107
+ END IF;
108
+ END $$;
@@ -0,0 +1,62 @@
1
+ ALTER TABLE "projectman_issue_items" ADD COLUMN IF NOT EXISTS "reviewRequestId" uuid;
2
+ --> statement-breakpoint
3
+ CREATE INDEX IF NOT EXISTS "issue_item_idx_review_request" ON "projectman_issue_items" USING btree ("tenantId","reviewRequestId");
4
+ --> statement-breakpoint
5
+ CREATE TABLE IF NOT EXISTS "projectman_review_requests" (
6
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
7
+ "tenantId" text NOT NULL,
8
+ "scopeId" uuid NOT NULL,
9
+ "sprintId" uuid,
10
+ "kanbanTaskId" uuid,
11
+ "microTaskItemId" uuid,
12
+ "collabSessionId" text,
13
+ "collabRequestEventId" text,
14
+ "collabResultEventIds" jsonb,
15
+ "parentReviewRequestId" uuid,
16
+ "rootReviewRequestId" uuid,
17
+ "title" text NOT NULL,
18
+ "description" text,
19
+ "reviewScope" text,
20
+ "instructions" text,
21
+ "references" jsonb,
22
+ "status" text NOT NULL,
23
+ "priority" text NOT NULL,
24
+ "source" text NOT NULL,
25
+ "tags" jsonb,
26
+ "requestedBy" text,
27
+ "targetAgent" text,
28
+ "targetSlot" text,
29
+ "results" jsonb,
30
+ "notes" text,
31
+ "meta" jsonb,
32
+ "requestedAt" timestamp with time zone,
33
+ "closedAt" timestamp with time zone,
34
+ "createdBy" text,
35
+ "updatedBy" text,
36
+ "createdAt" timestamp with time zone DEFAULT now(),
37
+ "updatedAt" timestamp with time zone DEFAULT now()
38
+ );
39
+ --> statement-breakpoint
40
+ CREATE INDEX IF NOT EXISTS "review_request_idx_tenant" ON "projectman_review_requests" USING btree ("tenantId");
41
+ --> statement-breakpoint
42
+ CREATE INDEX IF NOT EXISTS "review_request_idx_scope" ON "projectman_review_requests" USING btree ("tenantId","scopeId");
43
+ --> statement-breakpoint
44
+ CREATE INDEX IF NOT EXISTS "review_request_idx_status" ON "projectman_review_requests" USING btree ("tenantId","scopeId","status");
45
+ --> statement-breakpoint
46
+ CREATE INDEX IF NOT EXISTS "review_request_idx_priority" ON "projectman_review_requests" USING btree ("tenantId","scopeId","priority");
47
+ --> statement-breakpoint
48
+ CREATE INDEX IF NOT EXISTS "review_request_idx_source" ON "projectman_review_requests" USING btree ("tenantId","scopeId","source");
49
+ --> statement-breakpoint
50
+ CREATE INDEX IF NOT EXISTS "review_request_idx_sprint" ON "projectman_review_requests" USING btree ("tenantId","sprintId");
51
+ --> statement-breakpoint
52
+ CREATE INDEX IF NOT EXISTS "review_request_idx_kanban_task" ON "projectman_review_requests" USING btree ("tenantId","kanbanTaskId");
53
+ --> statement-breakpoint
54
+ CREATE INDEX IF NOT EXISTS "review_request_idx_micro_task" ON "projectman_review_requests" USING btree ("tenantId","microTaskItemId");
55
+ --> statement-breakpoint
56
+ CREATE INDEX IF NOT EXISTS "review_request_idx_target_agent" ON "projectman_review_requests" USING btree ("tenantId","targetAgent");
57
+ --> statement-breakpoint
58
+ CREATE INDEX IF NOT EXISTS "review_request_idx_parent" ON "projectman_review_requests" USING btree ("tenantId","parentReviewRequestId");
59
+ --> statement-breakpoint
60
+ CREATE INDEX IF NOT EXISTS "review_request_idx_root" ON "projectman_review_requests" USING btree ("tenantId","rootReviewRequestId");
61
+ --> statement-breakpoint
62
+ CREATE INDEX IF NOT EXISTS "review_request_idx_created_at" ON "projectman_review_requests" USING btree ("tenantId","createdAt");
@@ -0,0 +1,3 @@
1
+ ALTER TABLE "projectman_review_requests" ADD COLUMN IF NOT EXISTS "idempotencyKey" text;
2
+ --> statement-breakpoint
3
+ CREATE INDEX IF NOT EXISTS "review_request_idx_idempotency" ON "projectman_review_requests" USING btree ("tenantId","scopeId","idempotencyKey");
@@ -0,0 +1 @@
1
+ DROP INDEX IF EXISTS "projectman_sprint_task_unique";
@@ -0,0 +1,48 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1775239515682,
9
+ "tag": "0000_smooth_klaw",
10
+ "breakpoints": true
11
+ },
12
+ {
13
+ "idx": 1,
14
+ "version": "7",
15
+ "when": 1775911985466,
16
+ "tag": "0001_worthless_zodiak",
17
+ "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "7",
22
+ "when": 1775917200000,
23
+ "tag": "0002_board_rename",
24
+ "breakpoints": true
25
+ },
26
+ {
27
+ "idx": 3,
28
+ "version": "7",
29
+ "when": 1775920800000,
30
+ "tag": "0003_review_request",
31
+ "breakpoints": true
32
+ },
33
+ {
34
+ "idx": 4,
35
+ "version": "7",
36
+ "when": 1775924400000,
37
+ "tag": "0004_review_request_idempotency",
38
+ "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "7",
43
+ "when": 1781421600000,
44
+ "tag": "0005_allow_multi_sprint_per_task",
45
+ "breakpoints": false
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,31 @@
1
+ CREATE TABLE "sys_rate_limiters" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "createdAt" timestamp with time zone DEFAULT now(),
4
+ "updatedAt" timestamp with time zone DEFAULT now(),
5
+ "tenantId" uuid NOT NULL,
6
+ "key" text NOT NULL,
7
+ "scope" text NOT NULL,
8
+ "attempts" integer DEFAULT 0 NOT NULL,
9
+ "windowStart" timestamp with time zone,
10
+ "resetAt" timestamp with time zone,
11
+ "blockedAt" timestamp with time zone
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE TABLE "sys_event_stores" (
15
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
16
+ "createdAt" timestamp with time zone DEFAULT now(),
17
+ "updatedAt" timestamp with time zone DEFAULT now(),
18
+ "tenantId" uuid NOT NULL,
19
+ "eventType" text NOT NULL,
20
+ "aggregateId" text NOT NULL,
21
+ "eventData" text NOT NULL,
22
+ "version" integer DEFAULT 1 NOT NULL,
23
+ "occurredAt" timestamp with time zone DEFAULT now() NOT NULL
24
+ );
25
+ --> statement-breakpoint
26
+ CREATE UNIQUE INDEX " rate_limiter_tenant_key_type_idx" ON "sys_rate_limiters" USING btree ("tenantId","key","scope");--> statement-breakpoint
27
+ CREATE INDEX "idxTenantEventType" ON "sys_event_stores" USING btree ("tenantId","eventType");--> statement-breakpoint
28
+ CREATE INDEX "idxTenantAggregate" ON "sys_event_stores" USING btree ("tenantId","aggregateId");--> statement-breakpoint
29
+ CREATE INDEX "idxTenantOccurredAt" ON "sys_event_stores" USING btree ("tenantId","occurredAt");--> statement-breakpoint
30
+ CREATE INDEX "idxEventTypeOccurredAt" ON "sys_event_stores" USING btree ("eventType","occurredAt");--> statement-breakpoint
31
+ CREATE INDEX "idxAggregateVersion" ON "sys_event_stores" USING btree ("aggregateId","version");
@@ -0,0 +1,2 @@
1
+ DROP INDEX IF EXISTS " rate_limiter_tenant_key_type_idx";--> statement-breakpoint
2
+ CREATE UNIQUE INDEX IF NOT EXISTS "rate_limiter_tenant_key_type_idx" ON "sys_rate_limiters" USING btree ("tenantId","key","scope");
@@ -0,0 +1,2 @@
1
+ ALTER TABLE "sys_event_stores" ADD COLUMN IF NOT EXISTS "eventId" uuid DEFAULT gen_random_uuid() NOT NULL;--> statement-breakpoint
2
+ CREATE UNIQUE INDEX IF NOT EXISTS "idxEventIdUnique" ON "sys_event_stores" USING btree ("eventId");
@@ -0,0 +1,2 @@
1
+ ALTER TABLE "sys_rate_limiters" ADD COLUMN IF NOT EXISTS "violationStreak" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
2
+ ALTER TABLE "sys_rate_limiters" ADD COLUMN IF NOT EXISTS "lastViolationAt" timestamp with time zone;
@@ -0,0 +1,22 @@
1
+ DO $$
2
+ DECLARE
3
+ target_column_name text;
4
+ BEGIN
5
+ FOREACH target_column_name IN ARRAY ARRAY['createdAt', 'updatedAt', 'windowStart', 'resetAt', 'blockedAt', 'lastViolationAt']
6
+ LOOP
7
+ IF EXISTS (
8
+ SELECT 1
9
+ FROM information_schema.columns AS c
10
+ WHERE table_schema = 'public'
11
+ AND table_name = 'sys_rate_limiters'
12
+ AND c.column_name = target_column_name
13
+ AND data_type = 'timestamp without time zone'
14
+ ) THEN
15
+ EXECUTE format(
16
+ 'ALTER TABLE "sys_rate_limiters" ALTER COLUMN %I TYPE timestamp with time zone USING %I AT TIME ZONE ''UTC''',
17
+ target_column_name,
18
+ target_column_name
19
+ );
20
+ END IF;
21
+ END LOOP;
22
+ END $$;
@@ -0,0 +1,21 @@
1
+ CREATE TABLE IF NOT EXISTS "sys_counters" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "createdAt" timestamp with time zone DEFAULT now(),
4
+ "updatedAt" timestamp with time zone DEFAULT now(),
5
+ "tenantId" uuid NOT NULL,
6
+ "scopeId" text DEFAULT 'default' NOT NULL,
7
+ "counterKey" text NOT NULL,
8
+ "prefix" text,
9
+ "width" integer DEFAULT 5 NOT NULL,
10
+ "nextValue" integer DEFAULT 1 NOT NULL,
11
+ "step" integer DEFAULT 1 NOT NULL,
12
+ "lastValue" integer,
13
+ "lastFormattedValue" text,
14
+ "metadataJson" jsonb
15
+ );
16
+ --> statement-breakpoint
17
+ ALTER TABLE "sys_counters" ADD COLUMN IF NOT EXISTS "metadataJson" jsonb;
18
+ --> statement-breakpoint
19
+ CREATE UNIQUE INDEX IF NOT EXISTS "sys_counter_tenant_scope_key_uidx" ON "sys_counters" USING btree ("tenantId","scopeId","counterKey");
20
+ --> statement-breakpoint
21
+ CREATE INDEX IF NOT EXISTS "sys_counter_tenant_scope_idx" ON "sys_counters" USING btree ("tenantId","scopeId");
@@ -0,0 +1,48 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1771695753690,
9
+ "tag": "0000_loose_praxagora",
10
+ "breakpoints": true
11
+ },
12
+ {
13
+ "idx": 1,
14
+ "version": "7",
15
+ "when": 1771699083985,
16
+ "tag": "0001_awesome_ronan",
17
+ "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "7",
22
+ "when": 1771706294810,
23
+ "tag": "0002_steady_maximus",
24
+ "breakpoints": true
25
+ },
26
+ {
27
+ "idx": 3,
28
+ "version": "7",
29
+ "when": 1780925199170,
30
+ "tag": "0003_escalating_rate_limiter",
31
+ "breakpoints": true
32
+ },
33
+ {
34
+ "idx": 4,
35
+ "version": "7",
36
+ "when": 1780926140000,
37
+ "tag": "0004_rate_limiter_timestamptz",
38
+ "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "7",
43
+ "when": 1781433600000,
44
+ "tag": "0005_sys_counters",
45
+ "breakpoints": true
46
+ }
47
+ ]
48
+ }