@happyvertical/smrt-timesheets 0.0.0-stage → 0.53.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 (65) hide show
  1. package/AGENTS.md +105 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +242 -2
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/index.d.ts +20 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +495 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/manifest.json +1412 -0
  12. package/dist/models/index.d.ts +3 -0
  13. package/dist/models/index.d.ts.map +1 -0
  14. package/dist/models/json.d.ts +6 -0
  15. package/dist/models/json.d.ts.map +1 -0
  16. package/dist/models/service-snapshots.d.ts +66 -0
  17. package/dist/models/service-snapshots.d.ts.map +1 -0
  18. package/dist/models/service-time-entry.d.ts +66 -0
  19. package/dist/models/service-time-entry.d.ts.map +1 -0
  20. package/dist/services/index.d.ts +2 -0
  21. package/dist/services/index.d.ts.map +1 -0
  22. package/dist/services/service-evidence-service.d.ts +67 -0
  23. package/dist/services/service-evidence-service.d.ts.map +1 -0
  24. package/dist/smrt-knowledge.json +1016 -0
  25. package/dist/svelte/components/DurationDisplay.svelte +81 -0
  26. package/dist/svelte/components/DurationDisplay.svelte.d.ts +20 -0
  27. package/dist/svelte/components/DurationDisplay.svelte.d.ts.map +1 -0
  28. package/dist/svelte/components/TimeEntryApprovalQueue.svelte +253 -0
  29. package/dist/svelte/components/TimeEntryApprovalQueue.svelte.d.ts +15 -0
  30. package/dist/svelte/components/TimeEntryApprovalQueue.svelte.d.ts.map +1 -0
  31. package/dist/svelte/components/TimeEntryCard.svelte +304 -0
  32. package/dist/svelte/components/TimeEntryCard.svelte.d.ts +25 -0
  33. package/dist/svelte/components/TimeEntryCard.svelte.d.ts.map +1 -0
  34. package/dist/svelte/components/TimeEntryList.svelte +360 -0
  35. package/dist/svelte/components/TimeEntryList.svelte.d.ts +24 -0
  36. package/dist/svelte/components/TimeEntryList.svelte.d.ts.map +1 -0
  37. package/dist/svelte/components/TimeSummary.svelte +176 -0
  38. package/dist/svelte/components/TimeSummary.svelte.d.ts +30 -0
  39. package/dist/svelte/components/TimeSummary.svelte.d.ts.map +1 -0
  40. package/dist/svelte/components/__tests__/DurationDisplay.test.js +57 -0
  41. package/dist/svelte/components/__tests__/TimeEntryApprovalQueue.test.js +114 -0
  42. package/dist/svelte/components/__tests__/TimeEntryCard.test.js +45 -0
  43. package/dist/svelte/components/__tests__/TimeEntryList.test.js +50 -0
  44. package/dist/svelte/components/__tests__/TimeSummary.test.js +39 -0
  45. package/dist/svelte/components/utils.d.ts +51 -0
  46. package/dist/svelte/components/utils.d.ts.map +1 -0
  47. package/dist/svelte/components/utils.js +58 -0
  48. package/dist/svelte/i18n.d.ts +31 -0
  49. package/dist/svelte/i18n.d.ts.map +1 -0
  50. package/dist/svelte/i18n.js +31 -0
  51. package/dist/svelte/index.d.ts +25 -0
  52. package/dist/svelte/index.d.ts.map +1 -0
  53. package/dist/svelte/index.js +27 -0
  54. package/dist/svelte/types.d.ts +41 -0
  55. package/dist/svelte/types.d.ts.map +1 -0
  56. package/dist/svelte/types.js +28 -0
  57. package/dist/types.d.ts +29 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +16 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/ui.d.ts +17 -0
  62. package/dist/ui.d.ts.map +1 -0
  63. package/dist/ui.js +68 -0
  64. package/dist/ui.js.map +1 -0
  65. package/package.json +85 -3
@@ -0,0 +1,1412 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "timestamp": 0,
4
+ "packageName": "@happyvertical/smrt-timesheets",
5
+ "packageVersion": "0.53.0",
6
+ "objects": {
7
+ "@happyvertical/smrt-timesheets:ServiceChargeSnapshot": {
8
+ "name": "servicechargesnapshot",
9
+ "className": "ServiceChargeSnapshot",
10
+ "qualifiedName": "@happyvertical/smrt-timesheets:ServiceChargeSnapshot",
11
+ "collection": "servicechargesnapshots",
12
+ "filePath": "/home/runner/work/smrt/smrt/packages/timesheets/src/models/service-snapshots.ts",
13
+ "packageName": "@happyvertical/smrt-timesheets",
14
+ "fields": {
15
+ "tenantId": {
16
+ "type": "text",
17
+ "required": false,
18
+ "_meta": {
19
+ "sqlType": "UUID",
20
+ "nullable": true,
21
+ "__tenancy": {
22
+ "isTenantIdField": true,
23
+ "autoFilter": true,
24
+ "required": false,
25
+ "autoPopulate": true,
26
+ "nullable": true,
27
+ "mode": "optional",
28
+ "field": "tenantId",
29
+ "allowSuperAdminBypass": false
30
+ }
31
+ }
32
+ },
33
+ "timeEntryId": {
34
+ "type": "foreignKey",
35
+ "required": true,
36
+ "related": "ServiceTimeEntry",
37
+ "_meta": {
38
+ "required": true
39
+ }
40
+ },
41
+ "amount": {
42
+ "type": "integer",
43
+ "required": false,
44
+ "default": 0
45
+ },
46
+ "currency": {
47
+ "type": "text",
48
+ "required": false,
49
+ "_meta": {}
50
+ },
51
+ "pricingVersion": {
52
+ "type": "text",
53
+ "required": false,
54
+ "_meta": {}
55
+ },
56
+ "strategy": {
57
+ "type": "text",
58
+ "required": false,
59
+ "_meta": {}
60
+ },
61
+ "rateSnapshot": {
62
+ "type": "text",
63
+ "required": false,
64
+ "_meta": {}
65
+ },
66
+ "sourceChargeRef": {
67
+ "type": "text",
68
+ "required": false,
69
+ "_meta": {}
70
+ },
71
+ "createdAt": {
72
+ "type": "datetime",
73
+ "required": false
74
+ }
75
+ },
76
+ "methods": {
77
+ "initialize": {
78
+ "name": "initialize",
79
+ "async": true,
80
+ "parameters": [],
81
+ "returnType": "Promise<this>",
82
+ "isStatic": false,
83
+ "isPublic": true
84
+ },
85
+ "save": {
86
+ "name": "save",
87
+ "async": true,
88
+ "parameters": [],
89
+ "returnType": "Promise<this>",
90
+ "isStatic": false,
91
+ "isPublic": true
92
+ }
93
+ },
94
+ "decoratorConfig": {
95
+ "tableName": "service_charge_snapshots",
96
+ "previousQualifiedNames": [
97
+ "@happyvertical/smrt-projects:ServiceChargeSnapshot"
98
+ ],
99
+ "conflictColumns": [
100
+ "time_entry_id"
101
+ ],
102
+ "api": {
103
+ "include": [
104
+ "list",
105
+ "get"
106
+ ]
107
+ },
108
+ "cli": {
109
+ "include": [
110
+ "list",
111
+ "get"
112
+ ]
113
+ },
114
+ "mcp": {
115
+ "include": [
116
+ "list",
117
+ "get"
118
+ ]
119
+ },
120
+ "tenantScoped": {
121
+ "mode": "optional"
122
+ }
123
+ },
124
+ "extends": "SmrtObject",
125
+ "exportName": "ServiceChargeSnapshot",
126
+ "collectionExportName": "ServiceChargeSnapshotCollection",
127
+ "validationRules": [
128
+ {
129
+ "field": "timeEntryId",
130
+ "rule": "required",
131
+ "fieldType": "foreignKey"
132
+ }
133
+ ],
134
+ "schema": {
135
+ "tableName": "service_charge_snapshots",
136
+ "ddl": "CREATE TABLE IF NOT EXISTS \"service_charge_snapshots\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"time_entry_id\" UUID NOT NULL,\n \"amount\" INTEGER DEFAULT 0,\n \"currency\" TEXT,\n \"pricing_version\" TEXT,\n \"strategy\" TEXT,\n \"rate_snapshot\" TEXT,\n \"source_charge_ref\" TEXT\n);",
137
+ "columns": {
138
+ "id": {
139
+ "type": "UUID",
140
+ "primaryKey": true,
141
+ "referenceKind": "id",
142
+ "notNull": true
143
+ },
144
+ "slug": {
145
+ "type": "TEXT",
146
+ "notNull": true
147
+ },
148
+ "context": {
149
+ "type": "TEXT",
150
+ "notNull": true,
151
+ "default": ""
152
+ },
153
+ "created_at": {
154
+ "type": "TIMESTAMP",
155
+ "notNull": true,
156
+ "default": "current_timestamp"
157
+ },
158
+ "updated_at": {
159
+ "type": "TIMESTAMP",
160
+ "notNull": true,
161
+ "default": "current_timestamp"
162
+ },
163
+ "tenant_id": {
164
+ "type": "UUID",
165
+ "referenceKind": "tenantId",
166
+ "notNull": false,
167
+ "unique": false
168
+ },
169
+ "time_entry_id": {
170
+ "type": "UUID",
171
+ "referenceKind": "foreignKey",
172
+ "notNull": true,
173
+ "unique": false,
174
+ "foreignKey": {
175
+ "table": "service_time_entries",
176
+ "column": "id",
177
+ "onDelete": "CASCADE",
178
+ "onUpdate": "CASCADE"
179
+ }
180
+ },
181
+ "amount": {
182
+ "type": "INTEGER",
183
+ "notNull": false,
184
+ "unique": false,
185
+ "default": 0
186
+ },
187
+ "currency": {
188
+ "type": "TEXT",
189
+ "notNull": false,
190
+ "unique": false
191
+ },
192
+ "pricing_version": {
193
+ "type": "TEXT",
194
+ "notNull": false,
195
+ "unique": false
196
+ },
197
+ "strategy": {
198
+ "type": "TEXT",
199
+ "notNull": false,
200
+ "unique": false
201
+ },
202
+ "rate_snapshot": {
203
+ "type": "TEXT",
204
+ "notNull": false,
205
+ "unique": false
206
+ },
207
+ "source_charge_ref": {
208
+ "type": "TEXT",
209
+ "notNull": false,
210
+ "unique": false
211
+ }
212
+ },
213
+ "indexes": [
214
+ {
215
+ "name": "service_charge_snapshots_time_entry_id_idx",
216
+ "columns": [
217
+ "time_entry_id"
218
+ ],
219
+ "unique": true
220
+ },
221
+ {
222
+ "name": "service_charge_snapshots_slug_context_idx",
223
+ "columns": [
224
+ "slug",
225
+ "context"
226
+ ]
227
+ },
228
+ {
229
+ "name": "service_charge_snapshots_tenant_id_created_at_idx",
230
+ "columns": [
231
+ "tenant_id",
232
+ "created_at"
233
+ ]
234
+ }
235
+ ],
236
+ "version": "1393a1e2"
237
+ },
238
+ "importPath": "@happyvertical/smrt-timesheets"
239
+ },
240
+ "@happyvertical/smrt-timesheets:ServiceCompensationSnapshot": {
241
+ "name": "servicecompensationsnapshot",
242
+ "className": "ServiceCompensationSnapshot",
243
+ "qualifiedName": "@happyvertical/smrt-timesheets:ServiceCompensationSnapshot",
244
+ "collection": "servicecompensationsnapshots",
245
+ "filePath": "/home/runner/work/smrt/smrt/packages/timesheets/src/models/service-snapshots.ts",
246
+ "packageName": "@happyvertical/smrt-timesheets",
247
+ "fields": {
248
+ "tenantId": {
249
+ "type": "text",
250
+ "required": false,
251
+ "_meta": {
252
+ "sqlType": "UUID",
253
+ "nullable": true,
254
+ "__tenancy": {
255
+ "isTenantIdField": true,
256
+ "autoFilter": true,
257
+ "required": false,
258
+ "autoPopulate": true,
259
+ "nullable": true,
260
+ "mode": "optional",
261
+ "field": "tenantId",
262
+ "allowSuperAdminBypass": false
263
+ }
264
+ }
265
+ },
266
+ "timeEntryId": {
267
+ "type": "foreignKey",
268
+ "required": true,
269
+ "related": "ServiceTimeEntry",
270
+ "_meta": {
271
+ "required": true
272
+ }
273
+ },
274
+ "amount": {
275
+ "type": "integer",
276
+ "required": false,
277
+ "default": 0
278
+ },
279
+ "currency": {
280
+ "type": "text",
281
+ "required": false,
282
+ "_meta": {}
283
+ },
284
+ "termsVersion": {
285
+ "type": "text",
286
+ "required": false,
287
+ "_meta": {}
288
+ },
289
+ "rateSnapshot": {
290
+ "type": "text",
291
+ "required": false,
292
+ "_meta": {}
293
+ },
294
+ "createdAt": {
295
+ "type": "datetime",
296
+ "required": false
297
+ }
298
+ },
299
+ "methods": {
300
+ "initialize": {
301
+ "name": "initialize",
302
+ "async": true,
303
+ "parameters": [],
304
+ "returnType": "Promise<this>",
305
+ "isStatic": false,
306
+ "isPublic": true
307
+ },
308
+ "save": {
309
+ "name": "save",
310
+ "async": true,
311
+ "parameters": [],
312
+ "returnType": "Promise<this>",
313
+ "isStatic": false,
314
+ "isPublic": true
315
+ }
316
+ },
317
+ "decoratorConfig": {
318
+ "tableName": "service_compensation_snapshots",
319
+ "previousQualifiedNames": [
320
+ "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
321
+ ],
322
+ "conflictColumns": [
323
+ "time_entry_id"
324
+ ],
325
+ "api": {
326
+ "include": [
327
+ "list",
328
+ "get"
329
+ ]
330
+ },
331
+ "cli": {
332
+ "include": [
333
+ "list",
334
+ "get"
335
+ ]
336
+ },
337
+ "mcp": {
338
+ "include": [
339
+ "list",
340
+ "get"
341
+ ]
342
+ },
343
+ "tenantScoped": {
344
+ "mode": "optional"
345
+ }
346
+ },
347
+ "extends": "SmrtObject",
348
+ "exportName": "ServiceCompensationSnapshot",
349
+ "collectionExportName": "ServiceCompensationSnapshotCollection",
350
+ "validationRules": [
351
+ {
352
+ "field": "timeEntryId",
353
+ "rule": "required",
354
+ "fieldType": "foreignKey"
355
+ }
356
+ ],
357
+ "schema": {
358
+ "tableName": "service_compensation_snapshots",
359
+ "ddl": "CREATE TABLE IF NOT EXISTS \"service_compensation_snapshots\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"time_entry_id\" UUID NOT NULL,\n \"amount\" INTEGER DEFAULT 0,\n \"currency\" TEXT,\n \"terms_version\" TEXT,\n \"rate_snapshot\" TEXT\n);",
360
+ "columns": {
361
+ "id": {
362
+ "type": "UUID",
363
+ "primaryKey": true,
364
+ "referenceKind": "id",
365
+ "notNull": true
366
+ },
367
+ "slug": {
368
+ "type": "TEXT",
369
+ "notNull": true
370
+ },
371
+ "context": {
372
+ "type": "TEXT",
373
+ "notNull": true,
374
+ "default": ""
375
+ },
376
+ "created_at": {
377
+ "type": "TIMESTAMP",
378
+ "notNull": true,
379
+ "default": "current_timestamp"
380
+ },
381
+ "updated_at": {
382
+ "type": "TIMESTAMP",
383
+ "notNull": true,
384
+ "default": "current_timestamp"
385
+ },
386
+ "tenant_id": {
387
+ "type": "UUID",
388
+ "referenceKind": "tenantId",
389
+ "notNull": false,
390
+ "unique": false
391
+ },
392
+ "time_entry_id": {
393
+ "type": "UUID",
394
+ "referenceKind": "foreignKey",
395
+ "notNull": true,
396
+ "unique": false,
397
+ "foreignKey": {
398
+ "table": "service_time_entries",
399
+ "column": "id",
400
+ "onDelete": "CASCADE",
401
+ "onUpdate": "CASCADE"
402
+ }
403
+ },
404
+ "amount": {
405
+ "type": "INTEGER",
406
+ "notNull": false,
407
+ "unique": false,
408
+ "default": 0
409
+ },
410
+ "currency": {
411
+ "type": "TEXT",
412
+ "notNull": false,
413
+ "unique": false
414
+ },
415
+ "terms_version": {
416
+ "type": "TEXT",
417
+ "notNull": false,
418
+ "unique": false
419
+ },
420
+ "rate_snapshot": {
421
+ "type": "TEXT",
422
+ "notNull": false,
423
+ "unique": false
424
+ }
425
+ },
426
+ "indexes": [
427
+ {
428
+ "name": "service_compensation_snapshots_time_entry_id_idx",
429
+ "columns": [
430
+ "time_entry_id"
431
+ ],
432
+ "unique": true
433
+ },
434
+ {
435
+ "name": "service_compensation_snapshots_slug_context_idx",
436
+ "columns": [
437
+ "slug",
438
+ "context"
439
+ ]
440
+ },
441
+ {
442
+ "name": "service_compensation_snapshots_tenant_id_created_at_idx",
443
+ "columns": [
444
+ "tenant_id",
445
+ "created_at"
446
+ ]
447
+ }
448
+ ],
449
+ "version": "cd8670e5"
450
+ },
451
+ "importPath": "@happyvertical/smrt-timesheets"
452
+ },
453
+ "@happyvertical/smrt-timesheets:ServiceChargeSnapshotCollection": {
454
+ "name": "servicechargesnapshotcollection",
455
+ "className": "ServiceChargeSnapshotCollection",
456
+ "qualifiedName": "@happyvertical/smrt-timesheets:ServiceChargeSnapshotCollection",
457
+ "collection": "servicechargesnapshots",
458
+ "filePath": "/home/runner/work/smrt/smrt/packages/timesheets/src/models/service-snapshots.ts",
459
+ "packageName": "@happyvertical/smrt-timesheets",
460
+ "fields": {},
461
+ "methods": {},
462
+ "decoratorConfig": {
463
+ "tableName": "service_charge_snapshots"
464
+ },
465
+ "extends": "SmrtCollection",
466
+ "extendsTypeArg": "ServiceChargeSnapshot",
467
+ "exportName": "ServiceChargeSnapshotCollection",
468
+ "collectionExportName": "ServiceChargeSnapshotCollectionCollection",
469
+ "schema": {
470
+ "tableName": "service_charge_snapshots",
471
+ "ddl": "CREATE TABLE IF NOT EXISTS \"service_charge_snapshots\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"time_entry_id\" UUID NOT NULL,\n \"amount\" INTEGER DEFAULT 0,\n \"currency\" TEXT,\n \"pricing_version\" TEXT,\n \"strategy\" TEXT,\n \"rate_snapshot\" TEXT,\n \"source_charge_ref\" TEXT\n);",
472
+ "columns": {
473
+ "id": {
474
+ "type": "UUID",
475
+ "primaryKey": true,
476
+ "referenceKind": "id",
477
+ "notNull": true
478
+ },
479
+ "slug": {
480
+ "type": "TEXT",
481
+ "notNull": true
482
+ },
483
+ "context": {
484
+ "type": "TEXT",
485
+ "notNull": true,
486
+ "default": ""
487
+ },
488
+ "created_at": {
489
+ "type": "TIMESTAMP",
490
+ "notNull": true,
491
+ "default": "current_timestamp"
492
+ },
493
+ "updated_at": {
494
+ "type": "TIMESTAMP",
495
+ "notNull": true,
496
+ "default": "current_timestamp"
497
+ },
498
+ "tenant_id": {
499
+ "type": "UUID",
500
+ "referenceKind": "tenantId",
501
+ "notNull": false,
502
+ "unique": false
503
+ },
504
+ "time_entry_id": {
505
+ "type": "UUID",
506
+ "referenceKind": "foreignKey",
507
+ "notNull": true,
508
+ "unique": false,
509
+ "foreignKey": {
510
+ "table": "service_time_entries",
511
+ "column": "id",
512
+ "onDelete": "CASCADE",
513
+ "onUpdate": "CASCADE"
514
+ }
515
+ },
516
+ "amount": {
517
+ "type": "INTEGER",
518
+ "notNull": false,
519
+ "unique": false,
520
+ "default": 0
521
+ },
522
+ "currency": {
523
+ "type": "TEXT",
524
+ "notNull": false,
525
+ "unique": false
526
+ },
527
+ "pricing_version": {
528
+ "type": "TEXT",
529
+ "notNull": false,
530
+ "unique": false
531
+ },
532
+ "strategy": {
533
+ "type": "TEXT",
534
+ "notNull": false,
535
+ "unique": false
536
+ },
537
+ "rate_snapshot": {
538
+ "type": "TEXT",
539
+ "notNull": false,
540
+ "unique": false
541
+ },
542
+ "source_charge_ref": {
543
+ "type": "TEXT",
544
+ "notNull": false,
545
+ "unique": false
546
+ }
547
+ },
548
+ "indexes": [
549
+ {
550
+ "name": "service_charge_snapshots_time_entry_id_idx",
551
+ "columns": [
552
+ "time_entry_id"
553
+ ],
554
+ "unique": true
555
+ },
556
+ {
557
+ "name": "service_charge_snapshots_slug_context_idx",
558
+ "columns": [
559
+ "slug",
560
+ "context"
561
+ ]
562
+ },
563
+ {
564
+ "name": "service_charge_snapshots_tenant_id_created_at_idx",
565
+ "columns": [
566
+ "tenant_id",
567
+ "created_at"
568
+ ]
569
+ }
570
+ ],
571
+ "version": "1393a1e2"
572
+ },
573
+ "importPath": "@happyvertical/smrt-timesheets"
574
+ },
575
+ "@happyvertical/smrt-timesheets:ServiceCompensationSnapshotCollection": {
576
+ "name": "servicecompensationsnapshotcollection",
577
+ "className": "ServiceCompensationSnapshotCollection",
578
+ "qualifiedName": "@happyvertical/smrt-timesheets:ServiceCompensationSnapshotCollection",
579
+ "collection": "servicecompensationsnapshots",
580
+ "filePath": "/home/runner/work/smrt/smrt/packages/timesheets/src/models/service-snapshots.ts",
581
+ "packageName": "@happyvertical/smrt-timesheets",
582
+ "fields": {},
583
+ "methods": {},
584
+ "decoratorConfig": {
585
+ "tableName": "service_compensation_snapshots"
586
+ },
587
+ "extends": "SmrtCollection",
588
+ "extendsTypeArg": "ServiceCompensationSnapshot",
589
+ "exportName": "ServiceCompensationSnapshotCollection",
590
+ "collectionExportName": "ServiceCompensationSnapshotCollectionCollection",
591
+ "schema": {
592
+ "tableName": "service_compensation_snapshots",
593
+ "ddl": "CREATE TABLE IF NOT EXISTS \"service_compensation_snapshots\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"time_entry_id\" UUID NOT NULL,\n \"amount\" INTEGER DEFAULT 0,\n \"currency\" TEXT,\n \"terms_version\" TEXT,\n \"rate_snapshot\" TEXT\n);",
594
+ "columns": {
595
+ "id": {
596
+ "type": "UUID",
597
+ "primaryKey": true,
598
+ "referenceKind": "id",
599
+ "notNull": true
600
+ },
601
+ "slug": {
602
+ "type": "TEXT",
603
+ "notNull": true
604
+ },
605
+ "context": {
606
+ "type": "TEXT",
607
+ "notNull": true,
608
+ "default": ""
609
+ },
610
+ "created_at": {
611
+ "type": "TIMESTAMP",
612
+ "notNull": true,
613
+ "default": "current_timestamp"
614
+ },
615
+ "updated_at": {
616
+ "type": "TIMESTAMP",
617
+ "notNull": true,
618
+ "default": "current_timestamp"
619
+ },
620
+ "tenant_id": {
621
+ "type": "UUID",
622
+ "referenceKind": "tenantId",
623
+ "notNull": false,
624
+ "unique": false
625
+ },
626
+ "time_entry_id": {
627
+ "type": "UUID",
628
+ "referenceKind": "foreignKey",
629
+ "notNull": true,
630
+ "unique": false,
631
+ "foreignKey": {
632
+ "table": "service_time_entries",
633
+ "column": "id",
634
+ "onDelete": "CASCADE",
635
+ "onUpdate": "CASCADE"
636
+ }
637
+ },
638
+ "amount": {
639
+ "type": "INTEGER",
640
+ "notNull": false,
641
+ "unique": false,
642
+ "default": 0
643
+ },
644
+ "currency": {
645
+ "type": "TEXT",
646
+ "notNull": false,
647
+ "unique": false
648
+ },
649
+ "terms_version": {
650
+ "type": "TEXT",
651
+ "notNull": false,
652
+ "unique": false
653
+ },
654
+ "rate_snapshot": {
655
+ "type": "TEXT",
656
+ "notNull": false,
657
+ "unique": false
658
+ }
659
+ },
660
+ "indexes": [
661
+ {
662
+ "name": "service_compensation_snapshots_time_entry_id_idx",
663
+ "columns": [
664
+ "time_entry_id"
665
+ ],
666
+ "unique": true
667
+ },
668
+ {
669
+ "name": "service_compensation_snapshots_slug_context_idx",
670
+ "columns": [
671
+ "slug",
672
+ "context"
673
+ ]
674
+ },
675
+ {
676
+ "name": "service_compensation_snapshots_tenant_id_created_at_idx",
677
+ "columns": [
678
+ "tenant_id",
679
+ "created_at"
680
+ ]
681
+ }
682
+ ],
683
+ "version": "cd8670e5"
684
+ },
685
+ "importPath": "@happyvertical/smrt-timesheets"
686
+ },
687
+ "@happyvertical/smrt-timesheets:ServiceTimeEntry": {
688
+ "name": "servicetimeentry",
689
+ "className": "ServiceTimeEntry",
690
+ "qualifiedName": "@happyvertical/smrt-timesheets:ServiceTimeEntry",
691
+ "collection": "servicetimeentries",
692
+ "filePath": "/home/runner/work/smrt/smrt/packages/timesheets/src/models/service-time-entry.ts",
693
+ "packageName": "@happyvertical/smrt-timesheets",
694
+ "fields": {
695
+ "tenantId": {
696
+ "type": "text",
697
+ "required": false,
698
+ "_meta": {
699
+ "sqlType": "UUID",
700
+ "nullable": true,
701
+ "__tenancy": {
702
+ "isTenantIdField": true,
703
+ "autoFilter": true,
704
+ "required": false,
705
+ "autoPopulate": true,
706
+ "nullable": true,
707
+ "mode": "optional",
708
+ "field": "tenantId",
709
+ "allowSuperAdminBypass": false
710
+ }
711
+ }
712
+ },
713
+ "workRefType": {
714
+ "type": "text",
715
+ "required": false,
716
+ "_meta": {
717
+ "nullable": true
718
+ }
719
+ },
720
+ "workRefId": {
721
+ "type": "text",
722
+ "required": false,
723
+ "_meta": {
724
+ "nullable": true
725
+ }
726
+ },
727
+ "participantKind": {
728
+ "type": "text",
729
+ "required": false,
730
+ "_meta": {}
731
+ },
732
+ "participantProfileId": {
733
+ "type": "crossPackageRef",
734
+ "required": false,
735
+ "related": "@happyvertical/smrt-profiles:Profile",
736
+ "_meta": {
737
+ "nullable": true
738
+ }
739
+ },
740
+ "agentRef": {
741
+ "type": "text",
742
+ "required": false,
743
+ "_meta": {}
744
+ },
745
+ "source": {
746
+ "type": "text",
747
+ "required": false,
748
+ "_meta": {}
749
+ },
750
+ "description": {
751
+ "type": "text",
752
+ "required": false,
753
+ "_meta": {}
754
+ },
755
+ "startedAt": {
756
+ "type": "datetime",
757
+ "required": false
758
+ },
759
+ "endedAt": {
760
+ "type": "datetime",
761
+ "required": false
762
+ },
763
+ "durationSeconds": {
764
+ "type": "integer",
765
+ "required": false,
766
+ "default": 0
767
+ },
768
+ "evidence": {
769
+ "type": "text",
770
+ "required": false,
771
+ "_meta": {}
772
+ },
773
+ "status": {
774
+ "type": "text",
775
+ "required": false,
776
+ "_meta": {}
777
+ },
778
+ "submittedAt": {
779
+ "type": "datetime",
780
+ "required": false
781
+ },
782
+ "submittedByProfileId": {
783
+ "type": "crossPackageRef",
784
+ "required": false,
785
+ "related": "@happyvertical/smrt-profiles:Profile",
786
+ "_meta": {
787
+ "nullable": true
788
+ }
789
+ },
790
+ "approvedAt": {
791
+ "type": "datetime",
792
+ "required": false
793
+ },
794
+ "approvedByProfileId": {
795
+ "type": "crossPackageRef",
796
+ "required": false,
797
+ "related": "@happyvertical/smrt-profiles:Profile",
798
+ "_meta": {
799
+ "nullable": true
800
+ }
801
+ },
802
+ "approvalPath": {
803
+ "type": "text",
804
+ "required": false,
805
+ "_meta": {}
806
+ },
807
+ "rejectedAt": {
808
+ "type": "datetime",
809
+ "required": false
810
+ },
811
+ "rejectedByProfileId": {
812
+ "type": "crossPackageRef",
813
+ "required": false,
814
+ "related": "@happyvertical/smrt-profiles:Profile",
815
+ "_meta": {
816
+ "nullable": true
817
+ }
818
+ },
819
+ "rejectionReason": {
820
+ "type": "text",
821
+ "required": false,
822
+ "_meta": {}
823
+ },
824
+ "correctionOfId": {
825
+ "type": "foreignKey",
826
+ "required": false,
827
+ "related": "ServiceTimeEntry"
828
+ },
829
+ "metadata": {
830
+ "type": "text",
831
+ "required": false,
832
+ "_meta": {}
833
+ }
834
+ },
835
+ "methods": {
836
+ "getEvidence": {
837
+ "name": "getEvidence",
838
+ "async": false,
839
+ "parameters": [],
840
+ "returnType": "ServiceEvidence[]",
841
+ "isStatic": false,
842
+ "isPublic": true
843
+ },
844
+ "setEvidence": {
845
+ "name": "setEvidence",
846
+ "async": false,
847
+ "parameters": [
848
+ {
849
+ "name": "value",
850
+ "type": "ServiceEvidence[]",
851
+ "optional": false
852
+ }
853
+ ],
854
+ "returnType": "void",
855
+ "isStatic": false,
856
+ "isPublic": true
857
+ },
858
+ "getMetadata": {
859
+ "name": "getMetadata",
860
+ "async": false,
861
+ "parameters": [],
862
+ "returnType": "Record<string, unknown>",
863
+ "isStatic": false,
864
+ "isPublic": true
865
+ },
866
+ "setMetadata": {
867
+ "name": "setMetadata",
868
+ "async": false,
869
+ "parameters": [
870
+ {
871
+ "name": "value",
872
+ "type": "Record<string, unknown>",
873
+ "optional": false
874
+ }
875
+ ],
876
+ "returnType": "void",
877
+ "isStatic": false,
878
+ "isPublic": true
879
+ },
880
+ "durationHours": {
881
+ "name": "durationHours",
882
+ "async": false,
883
+ "parameters": [],
884
+ "returnType": "number",
885
+ "isStatic": false,
886
+ "isPublic": true
887
+ },
888
+ "initialize": {
889
+ "name": "initialize",
890
+ "async": true,
891
+ "parameters": [],
892
+ "returnType": "Promise<this>",
893
+ "isStatic": false,
894
+ "isPublic": true
895
+ },
896
+ "save": {
897
+ "name": "save",
898
+ "async": true,
899
+ "parameters": [],
900
+ "returnType": "Promise<this>",
901
+ "isStatic": false,
902
+ "isPublic": true
903
+ }
904
+ },
905
+ "decoratorConfig": {
906
+ "tableName": "service_time_entries",
907
+ "previousQualifiedNames": [
908
+ "@happyvertical/smrt-projects:ServiceTimeEntry"
909
+ ],
910
+ "api": {
911
+ "include": [
912
+ "list",
913
+ "get"
914
+ ]
915
+ },
916
+ "cli": {
917
+ "include": [
918
+ "list",
919
+ "get"
920
+ ]
921
+ },
922
+ "mcp": {
923
+ "include": [
924
+ "list",
925
+ "get"
926
+ ]
927
+ },
928
+ "tenantScoped": {
929
+ "mode": "optional"
930
+ },
931
+ "conflictColumns": [
932
+ "tenant_id",
933
+ "slug",
934
+ "context"
935
+ ]
936
+ },
937
+ "extends": "SmrtObject",
938
+ "exportName": "ServiceTimeEntry",
939
+ "collectionExportName": "ServiceTimeEntryCollection",
940
+ "schema": {
941
+ "tableName": "service_time_entries",
942
+ "ddl": "CREATE TABLE IF NOT EXISTS \"service_time_entries\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"work_ref_type\" TEXT,\n \"work_ref_id\" TEXT,\n \"participant_kind\" TEXT,\n \"participant_profile_id\" UUID,\n \"agent_ref\" TEXT,\n \"source\" TEXT,\n \"description\" TEXT,\n \"started_at\" TIMESTAMP,\n \"ended_at\" TIMESTAMP,\n \"duration_seconds\" INTEGER DEFAULT 0,\n \"evidence\" TEXT,\n \"status\" TEXT,\n \"submitted_at\" TIMESTAMP,\n \"submitted_by_profile_id\" UUID,\n \"approved_at\" TIMESTAMP,\n \"approved_by_profile_id\" UUID,\n \"approval_path\" TEXT,\n \"rejected_at\" TIMESTAMP,\n \"rejected_by_profile_id\" UUID,\n \"rejection_reason\" TEXT,\n \"correction_of_id\" UUID,\n \"metadata\" TEXT\n);",
943
+ "columns": {
944
+ "id": {
945
+ "type": "UUID",
946
+ "primaryKey": true,
947
+ "referenceKind": "id",
948
+ "notNull": true
949
+ },
950
+ "slug": {
951
+ "type": "TEXT",
952
+ "notNull": true
953
+ },
954
+ "context": {
955
+ "type": "TEXT",
956
+ "notNull": true,
957
+ "default": ""
958
+ },
959
+ "created_at": {
960
+ "type": "TIMESTAMP",
961
+ "notNull": true,
962
+ "default": "current_timestamp"
963
+ },
964
+ "updated_at": {
965
+ "type": "TIMESTAMP",
966
+ "notNull": true,
967
+ "default": "current_timestamp"
968
+ },
969
+ "tenant_id": {
970
+ "type": "UUID",
971
+ "referenceKind": "tenantId",
972
+ "notNull": false,
973
+ "unique": false
974
+ },
975
+ "work_ref_type": {
976
+ "type": "TEXT",
977
+ "notNull": false,
978
+ "unique": false
979
+ },
980
+ "work_ref_id": {
981
+ "type": "TEXT",
982
+ "notNull": false,
983
+ "unique": false
984
+ },
985
+ "participant_kind": {
986
+ "type": "TEXT",
987
+ "notNull": false,
988
+ "unique": false
989
+ },
990
+ "participant_profile_id": {
991
+ "type": "UUID",
992
+ "referenceKind": "crossPackageRef",
993
+ "notNull": false,
994
+ "unique": false
995
+ },
996
+ "agent_ref": {
997
+ "type": "TEXT",
998
+ "notNull": false,
999
+ "unique": false
1000
+ },
1001
+ "source": {
1002
+ "type": "TEXT",
1003
+ "notNull": false,
1004
+ "unique": false
1005
+ },
1006
+ "description": {
1007
+ "type": "TEXT",
1008
+ "notNull": false,
1009
+ "unique": false
1010
+ },
1011
+ "started_at": {
1012
+ "type": "TIMESTAMP",
1013
+ "notNull": false,
1014
+ "unique": false
1015
+ },
1016
+ "ended_at": {
1017
+ "type": "TIMESTAMP",
1018
+ "notNull": false,
1019
+ "unique": false
1020
+ },
1021
+ "duration_seconds": {
1022
+ "type": "INTEGER",
1023
+ "notNull": false,
1024
+ "unique": false,
1025
+ "default": 0
1026
+ },
1027
+ "evidence": {
1028
+ "type": "TEXT",
1029
+ "notNull": false,
1030
+ "unique": false
1031
+ },
1032
+ "status": {
1033
+ "type": "TEXT",
1034
+ "notNull": false,
1035
+ "unique": false
1036
+ },
1037
+ "submitted_at": {
1038
+ "type": "TIMESTAMP",
1039
+ "notNull": false,
1040
+ "unique": false
1041
+ },
1042
+ "submitted_by_profile_id": {
1043
+ "type": "UUID",
1044
+ "referenceKind": "crossPackageRef",
1045
+ "notNull": false,
1046
+ "unique": false
1047
+ },
1048
+ "approved_at": {
1049
+ "type": "TIMESTAMP",
1050
+ "notNull": false,
1051
+ "unique": false
1052
+ },
1053
+ "approved_by_profile_id": {
1054
+ "type": "UUID",
1055
+ "referenceKind": "crossPackageRef",
1056
+ "notNull": false,
1057
+ "unique": false
1058
+ },
1059
+ "approval_path": {
1060
+ "type": "TEXT",
1061
+ "notNull": false,
1062
+ "unique": false
1063
+ },
1064
+ "rejected_at": {
1065
+ "type": "TIMESTAMP",
1066
+ "notNull": false,
1067
+ "unique": false
1068
+ },
1069
+ "rejected_by_profile_id": {
1070
+ "type": "UUID",
1071
+ "referenceKind": "crossPackageRef",
1072
+ "notNull": false,
1073
+ "unique": false
1074
+ },
1075
+ "rejection_reason": {
1076
+ "type": "TEXT",
1077
+ "notNull": false,
1078
+ "unique": false
1079
+ },
1080
+ "correction_of_id": {
1081
+ "type": "UUID",
1082
+ "referenceKind": "foreignKey",
1083
+ "notNull": false,
1084
+ "unique": false,
1085
+ "foreignKey": {
1086
+ "table": "service_time_entries",
1087
+ "column": "id",
1088
+ "onDelete": "NO ACTION",
1089
+ "onUpdate": "CASCADE"
1090
+ }
1091
+ },
1092
+ "metadata": {
1093
+ "type": "TEXT",
1094
+ "notNull": false,
1095
+ "unique": false
1096
+ }
1097
+ },
1098
+ "indexes": [
1099
+ {
1100
+ "name": "service_time_entries_slug_context_idx",
1101
+ "columns": [
1102
+ "tenant_id",
1103
+ "slug",
1104
+ "context"
1105
+ ],
1106
+ "unique": true,
1107
+ "nullsNotDistinct": true
1108
+ },
1109
+ {
1110
+ "name": "service_time_entries_tenant_id_created_at_idx",
1111
+ "columns": [
1112
+ "tenant_id",
1113
+ "created_at"
1114
+ ]
1115
+ },
1116
+ {
1117
+ "name": "service_time_entries_participant_profile_id_idx",
1118
+ "columns": [
1119
+ "participant_profile_id"
1120
+ ]
1121
+ },
1122
+ {
1123
+ "name": "service_time_entries_submitted_by_profile_id_idx",
1124
+ "columns": [
1125
+ "submitted_by_profile_id"
1126
+ ]
1127
+ },
1128
+ {
1129
+ "name": "service_time_entries_approved_by_profile_id_idx",
1130
+ "columns": [
1131
+ "approved_by_profile_id"
1132
+ ]
1133
+ },
1134
+ {
1135
+ "name": "service_time_entries_rejected_by_profile_id_idx",
1136
+ "columns": [
1137
+ "rejected_by_profile_id"
1138
+ ]
1139
+ },
1140
+ {
1141
+ "name": "service_time_entries_correction_of_id_idx",
1142
+ "columns": [
1143
+ "correction_of_id"
1144
+ ]
1145
+ }
1146
+ ],
1147
+ "version": "16c0d6c8"
1148
+ },
1149
+ "importPath": "@happyvertical/smrt-timesheets"
1150
+ },
1151
+ "@happyvertical/smrt-timesheets:ServiceTimeEntryCollection": {
1152
+ "name": "servicetimeentrycollection",
1153
+ "className": "ServiceTimeEntryCollection",
1154
+ "qualifiedName": "@happyvertical/smrt-timesheets:ServiceTimeEntryCollection",
1155
+ "collection": "servicetimeentries",
1156
+ "filePath": "/home/runner/work/smrt/smrt/packages/timesheets/src/models/service-time-entry.ts",
1157
+ "packageName": "@happyvertical/smrt-timesheets",
1158
+ "fields": {},
1159
+ "methods": {
1160
+ "forWork": {
1161
+ "name": "forWork",
1162
+ "async": true,
1163
+ "parameters": [
1164
+ {
1165
+ "name": "workRefType",
1166
+ "type": "string",
1167
+ "optional": false
1168
+ },
1169
+ {
1170
+ "name": "workRefId",
1171
+ "type": "string",
1172
+ "optional": false
1173
+ }
1174
+ ],
1175
+ "returnType": "Promise<ServiceTimeEntry[]>",
1176
+ "isStatic": false,
1177
+ "isPublic": true
1178
+ },
1179
+ "pendingApproval": {
1180
+ "name": "pendingApproval",
1181
+ "async": true,
1182
+ "parameters": [],
1183
+ "returnType": "Promise<ServiceTimeEntry[]>",
1184
+ "isStatic": false,
1185
+ "isPublic": true
1186
+ }
1187
+ },
1188
+ "decoratorConfig": {
1189
+ "tableName": "service_time_entries"
1190
+ },
1191
+ "extends": "SmrtCollection",
1192
+ "extendsTypeArg": "ServiceTimeEntry",
1193
+ "exportName": "ServiceTimeEntryCollection",
1194
+ "collectionExportName": "ServiceTimeEntryCollectionCollection",
1195
+ "schema": {
1196
+ "tableName": "service_time_entries",
1197
+ "ddl": "CREATE TABLE IF NOT EXISTS \"service_time_entries\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"work_ref_type\" TEXT,\n \"work_ref_id\" TEXT,\n \"participant_kind\" TEXT,\n \"participant_profile_id\" UUID,\n \"agent_ref\" TEXT,\n \"source\" TEXT,\n \"description\" TEXT,\n \"started_at\" TIMESTAMP,\n \"ended_at\" TIMESTAMP,\n \"duration_seconds\" INTEGER DEFAULT 0,\n \"evidence\" TEXT,\n \"status\" TEXT,\n \"submitted_at\" TIMESTAMP,\n \"submitted_by_profile_id\" UUID,\n \"approved_at\" TIMESTAMP,\n \"approved_by_profile_id\" UUID,\n \"approval_path\" TEXT,\n \"rejected_at\" TIMESTAMP,\n \"rejected_by_profile_id\" UUID,\n \"rejection_reason\" TEXT,\n \"correction_of_id\" UUID,\n \"metadata\" TEXT\n);",
1198
+ "columns": {
1199
+ "id": {
1200
+ "type": "UUID",
1201
+ "primaryKey": true,
1202
+ "referenceKind": "id",
1203
+ "notNull": true
1204
+ },
1205
+ "slug": {
1206
+ "type": "TEXT",
1207
+ "notNull": true
1208
+ },
1209
+ "context": {
1210
+ "type": "TEXT",
1211
+ "notNull": true,
1212
+ "default": ""
1213
+ },
1214
+ "created_at": {
1215
+ "type": "TIMESTAMP",
1216
+ "notNull": true,
1217
+ "default": "current_timestamp"
1218
+ },
1219
+ "updated_at": {
1220
+ "type": "TIMESTAMP",
1221
+ "notNull": true,
1222
+ "default": "current_timestamp"
1223
+ },
1224
+ "tenant_id": {
1225
+ "type": "UUID",
1226
+ "referenceKind": "tenantId",
1227
+ "notNull": false,
1228
+ "unique": false
1229
+ },
1230
+ "work_ref_type": {
1231
+ "type": "TEXT",
1232
+ "notNull": false,
1233
+ "unique": false
1234
+ },
1235
+ "work_ref_id": {
1236
+ "type": "TEXT",
1237
+ "notNull": false,
1238
+ "unique": false
1239
+ },
1240
+ "participant_kind": {
1241
+ "type": "TEXT",
1242
+ "notNull": false,
1243
+ "unique": false
1244
+ },
1245
+ "participant_profile_id": {
1246
+ "type": "UUID",
1247
+ "referenceKind": "crossPackageRef",
1248
+ "notNull": false,
1249
+ "unique": false
1250
+ },
1251
+ "agent_ref": {
1252
+ "type": "TEXT",
1253
+ "notNull": false,
1254
+ "unique": false
1255
+ },
1256
+ "source": {
1257
+ "type": "TEXT",
1258
+ "notNull": false,
1259
+ "unique": false
1260
+ },
1261
+ "description": {
1262
+ "type": "TEXT",
1263
+ "notNull": false,
1264
+ "unique": false
1265
+ },
1266
+ "started_at": {
1267
+ "type": "TIMESTAMP",
1268
+ "notNull": false,
1269
+ "unique": false
1270
+ },
1271
+ "ended_at": {
1272
+ "type": "TIMESTAMP",
1273
+ "notNull": false,
1274
+ "unique": false
1275
+ },
1276
+ "duration_seconds": {
1277
+ "type": "INTEGER",
1278
+ "notNull": false,
1279
+ "unique": false,
1280
+ "default": 0
1281
+ },
1282
+ "evidence": {
1283
+ "type": "TEXT",
1284
+ "notNull": false,
1285
+ "unique": false
1286
+ },
1287
+ "status": {
1288
+ "type": "TEXT",
1289
+ "notNull": false,
1290
+ "unique": false
1291
+ },
1292
+ "submitted_at": {
1293
+ "type": "TIMESTAMP",
1294
+ "notNull": false,
1295
+ "unique": false
1296
+ },
1297
+ "submitted_by_profile_id": {
1298
+ "type": "UUID",
1299
+ "referenceKind": "crossPackageRef",
1300
+ "notNull": false,
1301
+ "unique": false
1302
+ },
1303
+ "approved_at": {
1304
+ "type": "TIMESTAMP",
1305
+ "notNull": false,
1306
+ "unique": false
1307
+ },
1308
+ "approved_by_profile_id": {
1309
+ "type": "UUID",
1310
+ "referenceKind": "crossPackageRef",
1311
+ "notNull": false,
1312
+ "unique": false
1313
+ },
1314
+ "approval_path": {
1315
+ "type": "TEXT",
1316
+ "notNull": false,
1317
+ "unique": false
1318
+ },
1319
+ "rejected_at": {
1320
+ "type": "TIMESTAMP",
1321
+ "notNull": false,
1322
+ "unique": false
1323
+ },
1324
+ "rejected_by_profile_id": {
1325
+ "type": "UUID",
1326
+ "referenceKind": "crossPackageRef",
1327
+ "notNull": false,
1328
+ "unique": false
1329
+ },
1330
+ "rejection_reason": {
1331
+ "type": "TEXT",
1332
+ "notNull": false,
1333
+ "unique": false
1334
+ },
1335
+ "correction_of_id": {
1336
+ "type": "UUID",
1337
+ "referenceKind": "foreignKey",
1338
+ "notNull": false,
1339
+ "unique": false,
1340
+ "foreignKey": {
1341
+ "table": "service_time_entries",
1342
+ "column": "id",
1343
+ "onDelete": "NO ACTION",
1344
+ "onUpdate": "CASCADE"
1345
+ }
1346
+ },
1347
+ "metadata": {
1348
+ "type": "TEXT",
1349
+ "notNull": false,
1350
+ "unique": false
1351
+ }
1352
+ },
1353
+ "indexes": [
1354
+ {
1355
+ "name": "service_time_entries_slug_context_idx",
1356
+ "columns": [
1357
+ "tenant_id",
1358
+ "slug",
1359
+ "context"
1360
+ ],
1361
+ "unique": true,
1362
+ "nullsNotDistinct": true
1363
+ },
1364
+ {
1365
+ "name": "service_time_entries_tenant_id_created_at_idx",
1366
+ "columns": [
1367
+ "tenant_id",
1368
+ "created_at"
1369
+ ]
1370
+ },
1371
+ {
1372
+ "name": "service_time_entries_participant_profile_id_idx",
1373
+ "columns": [
1374
+ "participant_profile_id"
1375
+ ]
1376
+ },
1377
+ {
1378
+ "name": "service_time_entries_submitted_by_profile_id_idx",
1379
+ "columns": [
1380
+ "submitted_by_profile_id"
1381
+ ]
1382
+ },
1383
+ {
1384
+ "name": "service_time_entries_approved_by_profile_id_idx",
1385
+ "columns": [
1386
+ "approved_by_profile_id"
1387
+ ]
1388
+ },
1389
+ {
1390
+ "name": "service_time_entries_rejected_by_profile_id_idx",
1391
+ "columns": [
1392
+ "rejected_by_profile_id"
1393
+ ]
1394
+ },
1395
+ {
1396
+ "name": "service_time_entries_correction_of_id_idx",
1397
+ "columns": [
1398
+ "correction_of_id"
1399
+ ]
1400
+ }
1401
+ ],
1402
+ "version": "16c0d6c8"
1403
+ },
1404
+ "importPath": "@happyvertical/smrt-timesheets"
1405
+ }
1406
+ },
1407
+ "moduleType": "smrt",
1408
+ "smrtDependencies": [
1409
+ "@happyvertical/smrt-core",
1410
+ "@happyvertical/smrt-tenancy"
1411
+ ]
1412
+ }