@tangle-network/agent-app 0.27.2 → 0.29.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 (127) hide show
  1. package/dist/DesignCanvas-AOIVN3SJ.js +12 -0
  2. package/dist/DesignCanvasEditor-IB2FMBBD.js +13 -0
  3. package/dist/InviteAcceptPage-EUOGZO2X.js +7 -0
  4. package/dist/MembersPanel-4CGUQRPF.js +8 -0
  5. package/dist/MembersPanel-4CGUQRPF.js.map +1 -0
  6. package/dist/{TimelineEditor-JDG54OBP.js → TimelineEditor-Z7C6BFP5.js} +2 -2
  7. package/dist/TimelineEditor-Z7C6BFP5.js.map +1 -0
  8. package/dist/access-ChAHG4Tp.d.ts +539 -0
  9. package/dist/{apply-Cp8c3K9D.d.ts → apply-Gk4raT2j.d.ts} +3 -1
  10. package/dist/{chunk-AFDROJ64.js → chunk-2QI7XV2T.js} +1 -1
  11. package/dist/chunk-2QI7XV2T.js.map +1 -0
  12. package/dist/chunk-3G334FVA.js +162 -0
  13. package/dist/chunk-3G334FVA.js.map +1 -0
  14. package/dist/chunk-3SVAA3MA.js +41 -0
  15. package/dist/chunk-3SVAA3MA.js.map +1 -0
  16. package/dist/{chunk-LUE4HO5C.js → chunk-4IQMTTNE.js} +10 -10
  17. package/dist/chunk-4IQMTTNE.js.map +1 -0
  18. package/dist/chunk-535V6BH6.js +128 -0
  19. package/dist/chunk-535V6BH6.js.map +1 -0
  20. package/dist/chunk-63CE7FEZ.js +63 -0
  21. package/dist/chunk-63CE7FEZ.js.map +1 -0
  22. package/dist/{chunk-5RT6KY4G.js → chunk-GQRL6VNU.js} +1 -1
  23. package/dist/chunk-GQRL6VNU.js.map +1 -0
  24. package/dist/{chunk-SCG5JJ4C.js → chunk-HFC4BTWJ.js} +32 -4
  25. package/dist/chunk-HFC4BTWJ.js.map +1 -0
  26. package/dist/{chunk-7QCIYDGC.js → chunk-IOREXWLM.js} +2 -2
  27. package/dist/{chunk-6UOE5CTA.js → chunk-JT6HHO5P.js} +5 -10
  28. package/dist/chunk-JT6HHO5P.js.map +1 -0
  29. package/dist/{chunk-JZAJE3JL.js → chunk-M2EBUDZ7.js} +19 -5
  30. package/dist/chunk-M2EBUDZ7.js.map +1 -0
  31. package/dist/{chunk-HABVCJJT.js → chunk-N4ZFKQ5C.js} +271 -404
  32. package/dist/chunk-N4ZFKQ5C.js.map +1 -0
  33. package/dist/chunk-S5CAJX6O.js +14 -0
  34. package/dist/chunk-S5CAJX6O.js.map +1 -0
  35. package/dist/{chunk-RJ2ZHK5D.js → chunk-S6WS2B32.js} +132 -7
  36. package/dist/chunk-S6WS2B32.js.map +1 -0
  37. package/dist/chunk-SQV7NUEM.js +136 -0
  38. package/dist/chunk-SQV7NUEM.js.map +1 -0
  39. package/dist/chunk-UAKFCMWK.js +1 -0
  40. package/dist/chunk-UAKFCMWK.js.map +1 -0
  41. package/dist/chunk-V5XZKHCL.js +296 -0
  42. package/dist/chunk-V5XZKHCL.js.map +1 -0
  43. package/dist/chunk-XWJXZ6WE.js +604 -0
  44. package/dist/chunk-XWJXZ6WE.js.map +1 -0
  45. package/dist/chunk-Y2SZVW35.js +125 -0
  46. package/dist/chunk-Y2SZVW35.js.map +1 -0
  47. package/dist/{chunk-27LQXQSS.js → chunk-YEWTVDDT.js} +224 -767
  48. package/dist/chunk-YEWTVDDT.js.map +1 -0
  49. package/dist/{chunk-UDXMR3AD.js → chunk-YNALYIQ3.js} +56 -18
  50. package/dist/chunk-YNALYIQ3.js.map +1 -0
  51. package/dist/command-stack-CkjelfK_.d.ts +267 -0
  52. package/dist/design-canvas/drizzle.d.ts +2 -2
  53. package/dist/design-canvas/index.d.ts +7 -6
  54. package/dist/design-canvas/index.js +3 -2
  55. package/dist/design-canvas-react/engine.d.ts +349 -0
  56. package/dist/design-canvas-react/engine.js +86 -0
  57. package/dist/design-canvas-react/engine.js.map +1 -0
  58. package/dist/design-canvas-react/index.d.ts +69 -649
  59. package/dist/design-canvas-react/index.js +84 -173
  60. package/dist/design-canvas-react/index.js.map +1 -1
  61. package/dist/design-canvas-react/lazy.d.ts +6 -0
  62. package/dist/design-canvas-react/lazy.js +9 -0
  63. package/dist/design-canvas-react/lazy.js.map +1 -0
  64. package/dist/{export-presets-Dl5Aa5xj.d.ts → export-presets-DAsU5Wal.d.ts} +2 -143
  65. package/dist/flow-types-Cb_AblZs.d.ts +25 -0
  66. package/dist/index.d.ts +11 -8
  67. package/dist/index.js +21 -8
  68. package/dist/lazy-BHHqS8-j.d.ts +72 -0
  69. package/dist/missions/index.d.ts +12 -0
  70. package/dist/missions/index.js +1 -1
  71. package/dist/{model-BHLN208Z.d.ts → model-BBwyOuWG.d.ts} +3 -1
  72. package/dist/operations-DLIvvD00.d.ts +144 -0
  73. package/dist/platform/index.js +1 -1
  74. package/dist/roles-CLtYKHHl.d.ts +49 -0
  75. package/dist/runtime/index.d.ts +33 -33
  76. package/dist/runtime/index.js +1 -1
  77. package/dist/sequences/index.d.ts +1 -1
  78. package/dist/sequences/index.js +2 -1
  79. package/dist/sequences-react/index.d.ts +15 -1
  80. package/dist/sequences-react/index.js +2 -2
  81. package/dist/{store-CUStmtdH.d.ts → store-CFyxgTlD.d.ts} +1 -1
  82. package/dist/teams/drizzle.d.ts +42 -0
  83. package/dist/teams/drizzle.js +194 -0
  84. package/dist/teams/drizzle.js.map +1 -0
  85. package/dist/teams/index.d.ts +44 -0
  86. package/dist/teams/index.js +39 -0
  87. package/dist/teams/index.js.map +1 -0
  88. package/dist/teams/members-api.d.ts +152 -0
  89. package/dist/teams/members-api.js +261 -0
  90. package/dist/teams/members-api.js.map +1 -0
  91. package/dist/teams-react/index.d.ts +81 -0
  92. package/dist/teams-react/index.js +12 -0
  93. package/dist/teams-react/index.js.map +1 -0
  94. package/dist/teams-react/lazy.d.ts +9 -0
  95. package/dist/teams-react/lazy.js +13 -0
  96. package/dist/teams-react/lazy.js.map +1 -0
  97. package/dist/theme/index.d.ts +80 -0
  98. package/dist/theme/index.js +14 -0
  99. package/dist/theme/index.js.map +1 -0
  100. package/dist/theme/tailwind-preset.d.ts +65 -0
  101. package/dist/theme/tailwind-preset.js +33 -0
  102. package/dist/theme/tailwind-preset.js.map +1 -0
  103. package/dist/theme/tokens.css +95 -0
  104. package/dist/trace/index.d.ts +2 -18
  105. package/dist/trace/index.js +2 -2
  106. package/dist/web/index.d.ts +25 -2
  107. package/dist/web/index.js +3 -1
  108. package/dist/web-react/index.d.ts +71 -31
  109. package/dist/web-react/index.js +625 -486
  110. package/dist/web-react/index.js.map +1 -1
  111. package/package.json +53 -3
  112. package/dist/DesignCanvas-73IUJJUP.js +0 -10
  113. package/dist/DesignCanvasEditor-6F2UTOSW.js +0 -9
  114. package/dist/chunk-27LQXQSS.js.map +0 -1
  115. package/dist/chunk-5RT6KY4G.js.map +0 -1
  116. package/dist/chunk-6UOE5CTA.js.map +0 -1
  117. package/dist/chunk-AFDROJ64.js.map +0 -1
  118. package/dist/chunk-HABVCJJT.js.map +0 -1
  119. package/dist/chunk-JZAJE3JL.js.map +0 -1
  120. package/dist/chunk-LUE4HO5C.js.map +0 -1
  121. package/dist/chunk-RJ2ZHK5D.js.map +0 -1
  122. package/dist/chunk-SCG5JJ4C.js.map +0 -1
  123. package/dist/chunk-UDXMR3AD.js.map +0 -1
  124. /package/dist/{DesignCanvas-73IUJJUP.js.map → DesignCanvas-AOIVN3SJ.js.map} +0 -0
  125. /package/dist/{DesignCanvasEditor-6F2UTOSW.js.map → DesignCanvasEditor-IB2FMBBD.js.map} +0 -0
  126. /package/dist/{TimelineEditor-JDG54OBP.js.map → InviteAcceptPage-EUOGZO2X.js.map} +0 -0
  127. /package/dist/{chunk-7QCIYDGC.js.map → chunk-IOREXWLM.js.map} +0 -0
@@ -0,0 +1,12 @@
1
+ import {
2
+ DesignCanvas,
3
+ DesignCanvas_default
4
+ } from "./chunk-YEWTVDDT.js";
5
+ import "./chunk-XWJXZ6WE.js";
6
+ import "./chunk-M2EBUDZ7.js";
7
+ import "./chunk-HFC4BTWJ.js";
8
+ export {
9
+ DesignCanvas,
10
+ DesignCanvas_default as default
11
+ };
12
+ //# sourceMappingURL=DesignCanvas-AOIVN3SJ.js.map
@@ -0,0 +1,13 @@
1
+ import {
2
+ DesignCanvasEditor
3
+ } from "./chunk-N4ZFKQ5C.js";
4
+ import "./chunk-YEWTVDDT.js";
5
+ import "./chunk-V5XZKHCL.js";
6
+ import "./chunk-XWJXZ6WE.js";
7
+ import "./chunk-Y2SZVW35.js";
8
+ import "./chunk-M2EBUDZ7.js";
9
+ import "./chunk-HFC4BTWJ.js";
10
+ export {
11
+ DesignCanvasEditor
12
+ };
13
+ //# sourceMappingURL=DesignCanvasEditor-IB2FMBBD.js.map
@@ -0,0 +1,7 @@
1
+ import {
2
+ InviteAcceptPage
3
+ } from "./chunk-535V6BH6.js";
4
+ export {
5
+ InviteAcceptPage
6
+ };
7
+ //# sourceMappingURL=InviteAcceptPage-EUOGZO2X.js.map
@@ -0,0 +1,8 @@
1
+ import {
2
+ MembersPanel
3
+ } from "./chunk-3G334FVA.js";
4
+ import "./chunk-63CE7FEZ.js";
5
+ export {
6
+ MembersPanel
7
+ };
8
+ //# sourceMappingURL=MembersPanel-4CGUQRPF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -2,11 +2,11 @@ import {
2
2
  SEQUENCE_MEDIA_DRAG_TYPE,
3
3
  TimelineEditor,
4
4
  TimelineEditor_default
5
- } from "./chunk-RJ2ZHK5D.js";
5
+ } from "./chunk-S6WS2B32.js";
6
6
  import "./chunk-ZYBWGSAZ.js";
7
7
  export {
8
8
  SEQUENCE_MEDIA_DRAG_TYPE,
9
9
  TimelineEditor,
10
10
  TimelineEditor_default as default
11
11
  };
12
- //# sourceMappingURL=TimelineEditor-JDG54OBP.js.map
12
+ //# sourceMappingURL=TimelineEditor-Z7C6BFP5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,539 @@
1
+ import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
2
+ import { AnySQLiteTable, AnySQLiteColumn, BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core';
3
+ import { O as OrganizationRole, f as WorkspaceRole } from './roles-CLtYKHHl.js';
4
+
5
+ /** A product table referenced by FK — only the `id` column is touched. */
6
+ type TeamParentTable = AnySQLiteTable & {
7
+ id: AnySQLiteColumn;
8
+ };
9
+ interface CreateTeamTablesOptions {
10
+ /** The product's user table — org/member rows reference `userTable.id`. */
11
+ userTable: TeamParentTable;
12
+ /** The product's workspace table — workspace members reference `workspaceTable.id`. */
13
+ workspaceTable: TeamParentTable;
14
+ }
15
+ declare function createTeamTables(opts: CreateTeamTablesOptions): {
16
+ organizations: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
17
+ name: "organization";
18
+ schema: undefined;
19
+ columns: {
20
+ id: drizzle_orm_sqlite_core.SQLiteColumn<{
21
+ name: "id";
22
+ tableName: "organization";
23
+ dataType: "string";
24
+ columnType: "SQLiteText";
25
+ data: string;
26
+ driverParam: string;
27
+ notNull: true;
28
+ hasDefault: true;
29
+ isPrimaryKey: true;
30
+ isAutoincrement: false;
31
+ hasRuntimeDefault: false;
32
+ enumValues: [string, ...string[]];
33
+ baseColumn: never;
34
+ identity: undefined;
35
+ generated: undefined;
36
+ }, {}, {
37
+ length: number | undefined;
38
+ }>;
39
+ name: drizzle_orm_sqlite_core.SQLiteColumn<{
40
+ name: "name";
41
+ tableName: "organization";
42
+ dataType: "string";
43
+ columnType: "SQLiteText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {
56
+ length: number | undefined;
57
+ }>;
58
+ slug: drizzle_orm_sqlite_core.SQLiteColumn<{
59
+ name: "slug";
60
+ tableName: "organization";
61
+ dataType: "string";
62
+ columnType: "SQLiteText";
63
+ data: string;
64
+ driverParam: string;
65
+ notNull: true;
66
+ hasDefault: false;
67
+ isPrimaryKey: false;
68
+ isAutoincrement: false;
69
+ hasRuntimeDefault: false;
70
+ enumValues: [string, ...string[]];
71
+ baseColumn: never;
72
+ identity: undefined;
73
+ generated: undefined;
74
+ }, {}, {
75
+ length: number | undefined;
76
+ }>;
77
+ kind: drizzle_orm_sqlite_core.SQLiteColumn<{
78
+ name: "kind";
79
+ tableName: "organization";
80
+ dataType: "string";
81
+ columnType: "SQLiteText";
82
+ data: "personal" | "team";
83
+ driverParam: string;
84
+ notNull: true;
85
+ hasDefault: true;
86
+ isPrimaryKey: false;
87
+ isAutoincrement: false;
88
+ hasRuntimeDefault: false;
89
+ enumValues: ["personal", "team"];
90
+ baseColumn: never;
91
+ identity: undefined;
92
+ generated: undefined;
93
+ }, {}, {
94
+ length: number | undefined;
95
+ }>;
96
+ createdBy: drizzle_orm_sqlite_core.SQLiteColumn<{
97
+ name: "created_by";
98
+ tableName: "organization";
99
+ dataType: "string";
100
+ columnType: "SQLiteText";
101
+ data: string;
102
+ driverParam: string;
103
+ notNull: true;
104
+ hasDefault: false;
105
+ isPrimaryKey: false;
106
+ isAutoincrement: false;
107
+ hasRuntimeDefault: false;
108
+ enumValues: [string, ...string[]];
109
+ baseColumn: never;
110
+ identity: undefined;
111
+ generated: undefined;
112
+ }, {}, {
113
+ length: number | undefined;
114
+ }>;
115
+ createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
116
+ name: "created_at";
117
+ tableName: "organization";
118
+ dataType: "date";
119
+ columnType: "SQLiteTimestamp";
120
+ data: Date;
121
+ driverParam: number;
122
+ notNull: true;
123
+ hasDefault: true;
124
+ isPrimaryKey: false;
125
+ isAutoincrement: false;
126
+ hasRuntimeDefault: false;
127
+ enumValues: undefined;
128
+ baseColumn: never;
129
+ identity: undefined;
130
+ generated: undefined;
131
+ }, {}, {}>;
132
+ updatedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
133
+ name: "updated_at";
134
+ tableName: "organization";
135
+ dataType: "date";
136
+ columnType: "SQLiteTimestamp";
137
+ data: Date;
138
+ driverParam: number;
139
+ notNull: true;
140
+ hasDefault: true;
141
+ isPrimaryKey: false;
142
+ isAutoincrement: false;
143
+ hasRuntimeDefault: false;
144
+ enumValues: undefined;
145
+ baseColumn: never;
146
+ identity: undefined;
147
+ generated: undefined;
148
+ }, {}, {}>;
149
+ };
150
+ dialect: "sqlite";
151
+ }>;
152
+ organizationMembers: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
153
+ name: "organization_member";
154
+ schema: undefined;
155
+ columns: {
156
+ id: drizzle_orm_sqlite_core.SQLiteColumn<{
157
+ name: "id";
158
+ tableName: "organization_member";
159
+ dataType: "string";
160
+ columnType: "SQLiteText";
161
+ data: string;
162
+ driverParam: string;
163
+ notNull: true;
164
+ hasDefault: true;
165
+ isPrimaryKey: true;
166
+ isAutoincrement: false;
167
+ hasRuntimeDefault: false;
168
+ enumValues: [string, ...string[]];
169
+ baseColumn: never;
170
+ identity: undefined;
171
+ generated: undefined;
172
+ }, {}, {
173
+ length: number | undefined;
174
+ }>;
175
+ organizationId: drizzle_orm_sqlite_core.SQLiteColumn<{
176
+ name: "organization_id";
177
+ tableName: "organization_member";
178
+ dataType: "string";
179
+ columnType: "SQLiteText";
180
+ data: string;
181
+ driverParam: string;
182
+ notNull: true;
183
+ hasDefault: false;
184
+ isPrimaryKey: false;
185
+ isAutoincrement: false;
186
+ hasRuntimeDefault: false;
187
+ enumValues: [string, ...string[]];
188
+ baseColumn: never;
189
+ identity: undefined;
190
+ generated: undefined;
191
+ }, {}, {
192
+ length: number | undefined;
193
+ }>;
194
+ userId: drizzle_orm_sqlite_core.SQLiteColumn<{
195
+ name: "user_id";
196
+ tableName: "organization_member";
197
+ dataType: "string";
198
+ columnType: "SQLiteText";
199
+ data: string;
200
+ driverParam: string;
201
+ notNull: true;
202
+ hasDefault: false;
203
+ isPrimaryKey: false;
204
+ isAutoincrement: false;
205
+ hasRuntimeDefault: false;
206
+ enumValues: [string, ...string[]];
207
+ baseColumn: never;
208
+ identity: undefined;
209
+ generated: undefined;
210
+ }, {}, {
211
+ length: number | undefined;
212
+ }>;
213
+ role: drizzle_orm_sqlite_core.SQLiteColumn<{
214
+ name: "role";
215
+ tableName: "organization_member";
216
+ dataType: "string";
217
+ columnType: "SQLiteText";
218
+ data: "admin" | "owner" | "member" | "billing";
219
+ driverParam: string;
220
+ notNull: true;
221
+ hasDefault: true;
222
+ isPrimaryKey: false;
223
+ isAutoincrement: false;
224
+ hasRuntimeDefault: false;
225
+ enumValues: ["owner", "admin", "member", "billing"];
226
+ baseColumn: never;
227
+ identity: undefined;
228
+ generated: undefined;
229
+ }, {}, {
230
+ length: number | undefined;
231
+ }>;
232
+ createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
233
+ name: "created_at";
234
+ tableName: "organization_member";
235
+ dataType: "date";
236
+ columnType: "SQLiteTimestamp";
237
+ data: Date;
238
+ driverParam: number;
239
+ notNull: true;
240
+ hasDefault: true;
241
+ isPrimaryKey: false;
242
+ isAutoincrement: false;
243
+ hasRuntimeDefault: false;
244
+ enumValues: undefined;
245
+ baseColumn: never;
246
+ identity: undefined;
247
+ generated: undefined;
248
+ }, {}, {}>;
249
+ updatedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
250
+ name: "updated_at";
251
+ tableName: "organization_member";
252
+ dataType: "date";
253
+ columnType: "SQLiteTimestamp";
254
+ data: Date;
255
+ driverParam: number;
256
+ notNull: true;
257
+ hasDefault: true;
258
+ isPrimaryKey: false;
259
+ isAutoincrement: false;
260
+ hasRuntimeDefault: false;
261
+ enumValues: undefined;
262
+ baseColumn: never;
263
+ identity: undefined;
264
+ generated: undefined;
265
+ }, {}, {}>;
266
+ };
267
+ dialect: "sqlite";
268
+ }>;
269
+ workspaceMembers: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
270
+ name: "workspace_member";
271
+ schema: undefined;
272
+ columns: {
273
+ id: drizzle_orm_sqlite_core.SQLiteColumn<{
274
+ name: "id";
275
+ tableName: "workspace_member";
276
+ dataType: "string";
277
+ columnType: "SQLiteText";
278
+ data: string;
279
+ driverParam: string;
280
+ notNull: true;
281
+ hasDefault: true;
282
+ isPrimaryKey: true;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: [string, ...string[]];
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {
290
+ length: number | undefined;
291
+ }>;
292
+ workspaceId: drizzle_orm_sqlite_core.SQLiteColumn<{
293
+ name: "workspace_id";
294
+ tableName: "workspace_member";
295
+ dataType: "string";
296
+ columnType: "SQLiteText";
297
+ data: string;
298
+ driverParam: string;
299
+ notNull: true;
300
+ hasDefault: false;
301
+ isPrimaryKey: false;
302
+ isAutoincrement: false;
303
+ hasRuntimeDefault: false;
304
+ enumValues: [string, ...string[]];
305
+ baseColumn: never;
306
+ identity: undefined;
307
+ generated: undefined;
308
+ }, {}, {
309
+ length: number | undefined;
310
+ }>;
311
+ organizationMemberId: drizzle_orm_sqlite_core.SQLiteColumn<{
312
+ name: "organization_member_id";
313
+ tableName: "workspace_member";
314
+ dataType: "string";
315
+ columnType: "SQLiteText";
316
+ data: string;
317
+ driverParam: string;
318
+ notNull: false;
319
+ hasDefault: false;
320
+ isPrimaryKey: false;
321
+ isAutoincrement: false;
322
+ hasRuntimeDefault: false;
323
+ enumValues: [string, ...string[]];
324
+ baseColumn: never;
325
+ identity: undefined;
326
+ generated: undefined;
327
+ }, {}, {
328
+ length: number | undefined;
329
+ }>;
330
+ userId: drizzle_orm_sqlite_core.SQLiteColumn<{
331
+ name: "user_id";
332
+ tableName: "workspace_member";
333
+ dataType: "string";
334
+ columnType: "SQLiteText";
335
+ data: string;
336
+ driverParam: string;
337
+ notNull: false;
338
+ hasDefault: false;
339
+ isPrimaryKey: false;
340
+ isAutoincrement: false;
341
+ hasRuntimeDefault: false;
342
+ enumValues: [string, ...string[]];
343
+ baseColumn: never;
344
+ identity: undefined;
345
+ generated: undefined;
346
+ }, {}, {
347
+ length: number | undefined;
348
+ }>;
349
+ role: drizzle_orm_sqlite_core.SQLiteColumn<{
350
+ name: "role";
351
+ tableName: "workspace_member";
352
+ dataType: "string";
353
+ columnType: "SQLiteText";
354
+ data: "viewer" | "editor" | "admin" | "owner";
355
+ driverParam: string;
356
+ notNull: true;
357
+ hasDefault: true;
358
+ isPrimaryKey: false;
359
+ isAutoincrement: false;
360
+ hasRuntimeDefault: false;
361
+ enumValues: ["owner", "admin", "editor", "viewer"];
362
+ baseColumn: never;
363
+ identity: undefined;
364
+ generated: undefined;
365
+ }, {}, {
366
+ length: number | undefined;
367
+ }>;
368
+ invitedBy: drizzle_orm_sqlite_core.SQLiteColumn<{
369
+ name: "invited_by";
370
+ tableName: "workspace_member";
371
+ dataType: "string";
372
+ columnType: "SQLiteText";
373
+ data: string;
374
+ driverParam: string;
375
+ notNull: false;
376
+ hasDefault: false;
377
+ isPrimaryKey: false;
378
+ isAutoincrement: false;
379
+ hasRuntimeDefault: false;
380
+ enumValues: [string, ...string[]];
381
+ baseColumn: never;
382
+ identity: undefined;
383
+ generated: undefined;
384
+ }, {}, {
385
+ length: number | undefined;
386
+ }>;
387
+ inviteEmail: drizzle_orm_sqlite_core.SQLiteColumn<{
388
+ name: "invite_email";
389
+ tableName: "workspace_member";
390
+ dataType: "string";
391
+ columnType: "SQLiteText";
392
+ data: string;
393
+ driverParam: string;
394
+ notNull: false;
395
+ hasDefault: false;
396
+ isPrimaryKey: false;
397
+ isAutoincrement: false;
398
+ hasRuntimeDefault: false;
399
+ enumValues: [string, ...string[]];
400
+ baseColumn: never;
401
+ identity: undefined;
402
+ generated: undefined;
403
+ }, {}, {
404
+ length: number | undefined;
405
+ }>;
406
+ inviteToken: drizzle_orm_sqlite_core.SQLiteColumn<{
407
+ name: "invite_token";
408
+ tableName: "workspace_member";
409
+ dataType: "string";
410
+ columnType: "SQLiteText";
411
+ data: string;
412
+ driverParam: string;
413
+ notNull: false;
414
+ hasDefault: false;
415
+ isPrimaryKey: false;
416
+ isAutoincrement: false;
417
+ hasRuntimeDefault: false;
418
+ enumValues: [string, ...string[]];
419
+ baseColumn: never;
420
+ identity: undefined;
421
+ generated: undefined;
422
+ }, {}, {
423
+ length: number | undefined;
424
+ }>;
425
+ invitedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
426
+ name: "invited_at";
427
+ tableName: "workspace_member";
428
+ dataType: "date";
429
+ columnType: "SQLiteTimestamp";
430
+ data: Date;
431
+ driverParam: number;
432
+ notNull: true;
433
+ hasDefault: true;
434
+ isPrimaryKey: false;
435
+ isAutoincrement: false;
436
+ hasRuntimeDefault: false;
437
+ enumValues: undefined;
438
+ baseColumn: never;
439
+ identity: undefined;
440
+ generated: undefined;
441
+ }, {}, {}>;
442
+ acceptedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
443
+ name: "accepted_at";
444
+ tableName: "workspace_member";
445
+ dataType: "date";
446
+ columnType: "SQLiteTimestamp";
447
+ data: Date;
448
+ driverParam: number;
449
+ notNull: false;
450
+ hasDefault: false;
451
+ isPrimaryKey: false;
452
+ isAutoincrement: false;
453
+ hasRuntimeDefault: false;
454
+ enumValues: undefined;
455
+ baseColumn: never;
456
+ identity: undefined;
457
+ generated: undefined;
458
+ }, {}, {}>;
459
+ };
460
+ dialect: "sqlite";
461
+ }>;
462
+ };
463
+ type TeamTables = ReturnType<typeof createTeamTables>;
464
+ type OrganizationRow = TeamTables['organizations']['$inferSelect'];
465
+ type OrganizationMemberRow = TeamTables['organizationMembers']['$inferSelect'];
466
+ type WorkspaceMemberRow = TeamTables['workspaceMembers']['$inferSelect'];
467
+
468
+ /**
469
+ * RBAC access builders over the teams tables. `createWorkspaceAccess` and
470
+ * `createOrganizationAccess` close over the product's `db`, the tables from
471
+ * `createTeamTables`, and the product's `workspace` table, returning the exact
472
+ * `getWorkspaceAccess` / `requireWorkspaceAccess` / `listUserWorkspaces` /
473
+ * `getOrganizationAccess` / `requireOrganizationAccess` functions a consumer
474
+ * already calls — so adoption is a one-line import swap, every call site stays
475
+ * identical.
476
+ *
477
+ * Defense in depth: org owners/admins are workspace owners across the org;
478
+ * everyone else gets their explicit per-workspace role. Effective role is the
479
+ * fold in `resolveWorkspaceRole` (pure, from `../roles`). Every query pins
480
+ * `userId`, so a leaked id can never read across the tenancy boundary — it
481
+ * surfaces as "not found".
482
+ *
483
+ * Driver-agnostic: builders are awaited, never `.run()`/`.all()`, so
484
+ * better-sqlite3, D1, and libsql handles all behave identically.
485
+ */
486
+
487
+ /** Any SQLite drizzle database — `any` erases driver-specific generics so
488
+ * better-sqlite3, D1, and libsql handles all fit. */
489
+ type TeamDatabase = BaseSQLiteDatabase<'sync' | 'async', any, any>;
490
+ /**
491
+ * The product's workspace table, narrowed to the columns the access joins read.
492
+ * Adopters pass their real drizzle workspace table — it carries these columns
493
+ * (gtm's does); the type only asserts the minimum the joins touch.
494
+ */
495
+ interface WorkspaceAccessTable {
496
+ id: any;
497
+ organizationId: any;
498
+ name: any;
499
+ updatedAt: any;
500
+ }
501
+ interface CreateAccessOptions {
502
+ db: TeamDatabase;
503
+ tables: TeamTables;
504
+ /** The product's workspace table (the FK target passed to createTeamTables). */
505
+ workspaceTable: TeamParentTable & WorkspaceAccessTable;
506
+ }
507
+ interface WorkspaceAccess {
508
+ workspace: Record<string, unknown>;
509
+ organization: OrganizationRow;
510
+ organizationMember: OrganizationMemberRow;
511
+ role: WorkspaceRole;
512
+ }
513
+ interface UserWorkspaceSummary extends Record<string, unknown> {
514
+ organizationId: string;
515
+ organizationName: string;
516
+ role: WorkspaceRole;
517
+ }
518
+ interface WorkspaceAccessApi {
519
+ getWorkspaceAccess(workspaceId: string, userId: string, minRole?: WorkspaceRole): Promise<WorkspaceAccess | null>;
520
+ requireWorkspaceAccess(workspaceId: string, userId: string, minRole?: WorkspaceRole): Promise<WorkspaceAccess>;
521
+ listUserWorkspaces(userId: string): Promise<UserWorkspaceSummary[]>;
522
+ }
523
+ declare function createWorkspaceAccess(opts: CreateAccessOptions): WorkspaceAccessApi;
524
+ interface OrganizationAccess {
525
+ organization: OrganizationRow;
526
+ member: OrganizationMemberRow;
527
+ role: OrganizationRole;
528
+ }
529
+ interface OrganizationAccessApi {
530
+ getOrganizationAccess(organizationId: string, userId: string, minRole?: OrganizationRole): Promise<OrganizationAccess | null>;
531
+ requireOrganizationAccess(organizationId: string, userId: string, minRole?: OrganizationRole): Promise<OrganizationAccess>;
532
+ }
533
+ interface CreateOrganizationAccessOptions {
534
+ db: TeamDatabase;
535
+ tables: TeamTables;
536
+ }
537
+ declare function createOrganizationAccess(opts: CreateOrganizationAccessOptions): OrganizationAccessApi;
538
+
539
+ export { type CreateAccessOptions as C, type OrganizationRow as O, type TeamDatabase as T, type UserWorkspaceSummary as U, type WorkspaceAccess as W, type TeamTables as a, type OrganizationMemberRow as b, type CreateOrganizationAccessOptions as c, type CreateTeamTablesOptions as d, type OrganizationAccess as e, type OrganizationAccessApi as f, type TeamParentTable as g, type WorkspaceAccessApi as h, type WorkspaceAccessTable as i, type WorkspaceMemberRow as j, createOrganizationAccess as k, createTeamTables as l, createWorkspaceAccess as m };
@@ -192,7 +192,9 @@ declare function lastClipEndFrame(timeline: SequenceTimeline): number;
192
192
  /** Media references must be provider URLs or app-served paths. Local sandbox
193
193
  * artifacts (file:, data:, /tmp/, /home/) are rejected because they are
194
194
  * unreachable from the product and signal an agent substituting local ffmpeg
195
- * output for real provider generation. */
195
+ * output for real provider generation. Delegates to the canonical
196
+ * `assertMediaUrl` boundary in `../web` — sequences and design-canvas share ONE
197
+ * rule so the two surfaces cannot drift on what counts as a reachable url. */
196
198
  declare function assertSequenceMediaUrl(url: string): void;
197
199
 
198
200
  /**
@@ -215,4 +215,4 @@ export {
215
215
  stepActivityFlowTrace,
216
216
  composeMissionFlowTrace
217
217
  };
218
- //# sourceMappingURL=chunk-AFDROJ64.js.map
218
+ //# sourceMappingURL=chunk-2QI7XV2T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/trace/mission-flow.ts"],"sourcesContent":["/**\n * Delegation → FlowSpan converters — render what a mission's delegated agent\n * runs actually did as ONE FlowTrace, drawable by the existing\n * `renderWaterfall` (or any viewer that consumes FlowSpans).\n *\n * Two fidelities, one tree:\n * - COARSE: `delegationActivityToFlowSpans` draws one 'tool' span per\n * delegation from the StepAgentActivity snapshot (startedAt/durationMs) —\n * available live, from the step's journaled lane.\n * - FINE: `loopTraceEventsToFlowSpans` reconstructs agent-runtime's\n * loop → round → iteration hierarchy from the LoopTraceEvent journal a\n * delegation persists. FlowSpans carry no parent ids, so nesting rides the\n * span NAME (`loop ▸ round 0 ▸ iter 1 (coder)`), matching how the ASCII\n * waterfall reads.\n *\n * `composeMissionFlowTrace` lays a whole mission out: one 'pipeline' span per\n * step, each step's delegations beneath it. Pure data transforms — the\n * structural `LoopTraceEventLike` keeps this module free of the optional\n * agent-runtime peer.\n */\n\nimport type { StepAgentActivity } from '../missions/agent-activity'\nimport type { FlowSpan, FlowTrace } from './flow-types'\n\n/** Structural mirror of agent-runtime's `LoopTraceEvent` — same fields, no\n * import, so journals parsed from JSON feed straight in. */\nexport interface LoopTraceEventLike {\n kind: string\n runId: string\n /** Epoch ms. */\n timestamp: number\n payload: object\n}\n\nconst num = (v: unknown): number | undefined =>\n typeof v === 'number' && Number.isFinite(v) ? v : undefined\nconst str = (v: unknown): string | undefined =>\n typeof v === 'string' && v.length > 0 ? v : undefined\nconst rec = (v: unknown): Record<string, unknown> =>\n v && typeof v === 'object' ? (v as Record<string, unknown>) : {}\n\n/** Statuses that mean the delegation is still producing wall time. */\nconst LIVE_DELEGATION_STATUSES = new Set(['pending', 'running'])\n\n/**\n * One 'tool' FlowSpan per delegation, positioned relative to `turnStartMs`\n * (the epoch-ms origin of the trace — usually the step or mission start).\n * A row whose `startedAt` does not parse cannot be placed on a timeline and\n * is omitted from the WATERFALL (it stays in the lane itself). A run without\n * `durationMs` is still in flight: its span extends to `opts.nowMs` when\n * given, else renders as a point — `approx` flags both.\n */\nexport function delegationActivityToFlowSpans(\n activity: StepAgentActivity[],\n turnStartMs: number,\n opts?: { nowMs?: number },\n): FlowSpan[] {\n const spans: FlowSpan[] = []\n for (const run of activity) {\n const startedAt = Date.parse(run.startedAt)\n if (!Number.isFinite(startedAt)) continue\n const startMs = startedAt - turnStartMs\n const live = LIVE_DELEGATION_STATUSES.has(run.status)\n const endMs =\n run.durationMs !== undefined\n ? startMs + run.durationMs\n : live && opts?.nowMs !== undefined\n ? opts.nowMs - turnStartMs\n : startMs\n spans.push({\n kind: 'tool',\n name: `${run.tool} — ${run.detail}`,\n startMs,\n endMs: Math.max(endMs, startMs),\n ...(run.durationMs === undefined ? { approx: true } : {}),\n meta: {\n taskId: run.taskId,\n status: run.status,\n ...(run.costUsd !== undefined ? { costUsd: run.costUsd } : {}),\n ...(run.iteration !== undefined ? { iteration: run.iteration } : {}),\n ...(run.phase !== undefined ? { phase: run.phase } : {}),\n ...(run.traceId !== undefined ? { traceId: run.traceId } : {}),\n ...(run.spanId !== undefined ? { spanId: run.spanId } : {}),\n },\n })\n }\n return spans\n}\n\n/**\n * Reconstruct one delegation's loop → round → iteration tree from its\n * journaled LoopTraceEvents, as FlowSpans relative to `loop.started` (or the\n * first event). Mirrors agent-runtime's `buildLoopOtelSpans` topology:\n * rounds open on `loop.plan` and flush on the next plan / `loop.decision` /\n * `loop.ended`; iterations span `loop.iteration.started` → `.ended`.\n */\nexport function loopTraceEventsToFlowSpans(events: LoopTraceEventLike[]): FlowSpan[] {\n if (events.length === 0) return []\n const ordered = [...events].sort((a, b) => a.timestamp - b.timestamp)\n const started = ordered.find((e) => e.kind === 'loop.started')\n const ended = ordered.find((e) => e.kind === 'loop.ended')\n const origin = started?.timestamp ?? ordered[0]!.timestamp\n const rootEnd = ended?.timestamp ?? ordered[ordered.length - 1]!.timestamp\n const t = (epochMs: number) => epochMs - origin\n\n const spans: FlowSpan[] = []\n const sp = rec(started?.payload)\n const ep = rec(ended?.payload)\n spans.push({\n kind: 'pipeline',\n name: 'loop',\n startMs: 0,\n endMs: t(rootEnd),\n meta: {\n runId: ordered[0]!.runId,\n ...(str(sp.driver) !== undefined ? { driver: str(sp.driver) } : {}),\n ...(num(ep.totalCostUsd) !== undefined ? { costUsd: num(ep.totalCostUsd) } : {}),\n ...(num(ep.winnerIterationIndex) !== undefined\n ? { winnerIterationIndex: num(ep.winnerIterationIndex) }\n : {}),\n ...(num(ep.iterations) !== undefined ? { iterations: num(ep.iterations) } : {}),\n },\n })\n\n const iterStart = new Map<number, number>()\n let round: { index: number; startMs: number; meta: Record<string, unknown>; moveKind: string } | undefined\n const flushRound = (endEpochMs: number) => {\n if (!round) return\n spans.push({\n kind: 'pipeline',\n name: `loop ▸ round ${round.index} (${round.moveKind})`,\n startMs: round.startMs,\n endMs: t(endEpochMs),\n meta: round.meta,\n })\n round = undefined\n }\n\n for (const e of ordered) {\n const p = rec(e.payload)\n switch (e.kind) {\n case 'loop.plan': {\n flushRound(e.timestamp)\n const index = num(p.roundIndex) ?? 0\n round = {\n index,\n startMs: t(e.timestamp),\n moveKind: str(p.moveKind) ?? 'unknown',\n meta: {\n roundIndex: index,\n moveKind: str(p.moveKind) ?? 'unknown',\n width: num(p.plannedCount) ?? 0,\n ...(str(p.rationale) !== undefined ? { rationale: str(p.rationale) } : {}),\n ...(num(p.parentIndex) !== undefined ? { parentIndex: num(p.parentIndex) } : {}),\n },\n }\n break\n }\n case 'loop.iteration.started': {\n const idx = num(p.iterationIndex)\n if (idx !== undefined) iterStart.set(idx, e.timestamp)\n break\n }\n case 'loop.iteration.ended': {\n const idx = num(p.iterationIndex) ?? 0\n const startEpoch = iterStart.get(idx) ?? e.timestamp\n const error = str(p.error)\n const verdict = rec(p.verdict)\n const tokens = rec(p.tokenUsage)\n const roundLabel = round ? `round ${round.index} ▸ ` : ''\n spans.push({\n kind: 'model',\n name: `loop ▸ ${roundLabel}iter ${idx} (${str(p.agentRunName) ?? 'agent'})`,\n startMs: t(startEpoch),\n endMs: t(e.timestamp),\n meta: {\n iterationIndex: idx,\n ok: error === undefined,\n ...(error !== undefined ? { error } : {}),\n ...(num(p.costUsd) !== undefined ? { costUsd: num(p.costUsd) } : {}),\n ...(typeof verdict.valid === 'boolean' ? { verdictValid: verdict.valid } : {}),\n ...(num(verdict.score) !== undefined ? { verdictScore: num(verdict.score) } : {}),\n ...(num(tokens.input) !== undefined ? { inputTokens: num(tokens.input) } : {}),\n ...(num(tokens.output) !== undefined ? { outputTokens: num(tokens.output) } : {}),\n },\n })\n break\n }\n case 'loop.decision': {\n if (round) {\n const decision = str(p.decision)\n if (decision !== undefined) round.meta.decision = decision\n flushRound(e.timestamp)\n }\n break\n }\n }\n }\n flushRound(rootEnd)\n return spans\n}\n\n/**\n * A single step's activity lane as its own FlowTrace — what a per-step\n * drill-in renders. Origin defaults to the earliest delegation start so the\n * waterfall begins at the lane's first run.\n */\nexport function stepActivityFlowTrace(\n activity: StepAgentActivity[],\n opts?: { startedAt?: number; nowMs?: number },\n): FlowTrace {\n let origin = opts?.startedAt\n if (origin === undefined) {\n for (const run of activity) {\n const parsed = Date.parse(run.startedAt)\n if (Number.isFinite(parsed) && (origin === undefined || parsed < origin)) origin = parsed\n }\n }\n const spans = delegationActivityToFlowSpans(\n activity,\n origin ?? 0,\n opts?.nowMs !== undefined ? { nowMs: opts.nowMs } : undefined,\n )\n let costUsd: number | undefined\n for (const span of spans) {\n const c = num(rec(span.meta).costUsd)\n if (c !== undefined) costUsd = (costUsd ?? 0) + c\n }\n return {\n spans,\n totalMs: spans.reduce((max, s) => Math.max(max, s.endMs), 0),\n promptTokens: 0,\n completionTokens: 0,\n ...(costUsd !== undefined ? { costUsd } : {}),\n toolCalls: spans.length,\n }\n}\n\nexport interface MissionFlowStep {\n id: string\n intent: string\n status?: string\n /** Epoch ms the step attempt started. Absent → laid out sequentially after\n * the previous step (missions run steps in order), `approx` flagged. */\n startedAt?: number\n durationMs?: number\n}\n\n/**\n * Compose a mission-wide FlowTrace: one 'pipeline' span per step, the step's\n * delegated runs ('tool' spans, from `activity[stepId]`) beneath it. A step\n * span always covers its delegations' extent. Cost is the sum of delegation\n * `costUsd`; token counts are not knowable from the activity lane and stay 0.\n */\nexport function composeMissionFlowTrace(input: {\n steps: MissionFlowStep[]\n /** Delegated-run snapshots keyed by step id (the step's `agentActivity`). */\n activity?: Record<string, StepAgentActivity[]>\n /** Epoch-ms origin. Default: the earliest known step/delegation start. */\n startedAt?: number\n}): FlowTrace {\n const activity = input.activity ?? {}\n\n const startCandidates: number[] = []\n if (input.startedAt !== undefined) startCandidates.push(input.startedAt)\n else {\n for (const step of input.steps) {\n if (step.startedAt !== undefined) startCandidates.push(step.startedAt)\n }\n for (const runs of Object.values(activity)) {\n for (const run of runs) {\n const parsed = Date.parse(run.startedAt)\n if (Number.isFinite(parsed)) startCandidates.push(parsed)\n }\n }\n }\n const origin = startCandidates.length > 0 ? Math.min(...startCandidates) : 0\n\n const spans: FlowSpan[] = []\n let costUsd: number | undefined\n let toolCalls = 0\n let cursorMs = 0\n\n for (const step of input.steps) {\n const inferred = step.startedAt === undefined\n const startMs = inferred ? cursorMs : step.startedAt! - origin\n const runSpans = delegationActivityToFlowSpans(activity[step.id] ?? [], origin)\n const runExtent = runSpans.reduce((max, s) => Math.max(max, s.endMs), startMs)\n const endMs = Math.max(step.durationMs !== undefined ? startMs + step.durationMs : startMs, runExtent)\n\n spans.push({\n kind: 'pipeline',\n name: step.intent,\n startMs,\n endMs,\n ...(inferred || step.durationMs === undefined ? { approx: true } : {}),\n meta: { stepId: step.id, ...(step.status !== undefined ? { status: step.status } : {}) },\n })\n for (const span of runSpans) {\n spans.push({ ...span, name: `${step.intent} ▸ ${span.name}` })\n toolCalls++\n const c = num(rec(span.meta).costUsd)\n if (c !== undefined) costUsd = (costUsd ?? 0) + c\n }\n cursorMs = endMs\n }\n\n return {\n spans,\n totalMs: spans.reduce((max, s) => Math.max(max, s.endMs), 0),\n promptTokens: 0,\n completionTokens: 0,\n ...(costUsd !== undefined ? { costUsd } : {}),\n toolCalls,\n }\n}\n"],"mappings":"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","names":[]}