@critical-path/core 0.6.0 → 0.8.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 (75) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +6 -0
  3. package/dist/domain/entities.d.ts +4 -0
  4. package/dist/domain/entities.d.ts.map +1 -1
  5. package/dist/domain/entities.js +14 -0
  6. package/dist/domain/entities.js.map +1 -1
  7. package/dist/domain/events.d.ts +32 -4
  8. package/dist/domain/events.d.ts.map +1 -1
  9. package/dist/domain/events.js.map +1 -1
  10. package/dist/engine/index.d.ts +23 -1
  11. package/dist/engine/index.d.ts.map +1 -1
  12. package/dist/engine/index.js +132 -2
  13. package/dist/engine/index.js.map +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.test.js +26 -0
  19. package/dist/index.test.js.map +1 -1
  20. package/dist/storage/file-storage.d.ts +24 -0
  21. package/dist/storage/file-storage.d.ts.map +1 -0
  22. package/dist/storage/file-storage.js +73 -0
  23. package/dist/storage/file-storage.js.map +1 -0
  24. package/dist/storage/firebase-storage.d.ts +48 -0
  25. package/dist/storage/firebase-storage.d.ts.map +1 -0
  26. package/dist/storage/firebase-storage.js +142 -0
  27. package/dist/storage/firebase-storage.js.map +1 -0
  28. package/dist/storage/index.d.ts +4 -0
  29. package/dist/storage/index.d.ts.map +1 -0
  30. package/dist/storage/index.js +4 -0
  31. package/dist/storage/index.js.map +1 -0
  32. package/dist/storage/s3.d.ts +36 -0
  33. package/dist/storage/s3.d.ts.map +1 -0
  34. package/dist/storage/s3.js +135 -0
  35. package/dist/storage/s3.js.map +1 -0
  36. package/dist/storage/storage.test.d.ts +2 -0
  37. package/dist/storage/storage.test.d.ts.map +1 -0
  38. package/dist/storage/storage.test.js +117 -0
  39. package/dist/storage/storage.test.js.map +1 -0
  40. package/dist/store/firebase.d.ts +13 -1
  41. package/dist/store/firebase.d.ts.map +1 -1
  42. package/dist/store/firebase.js +95 -18
  43. package/dist/store/firebase.js.map +1 -1
  44. package/dist/store/firebase.test.js +12 -0
  45. package/dist/store/firebase.test.js.map +1 -1
  46. package/dist/store/index.d.ts +27 -2
  47. package/dist/store/index.d.ts.map +1 -1
  48. package/dist/store/index.js +49 -0
  49. package/dist/store/index.js.map +1 -1
  50. package/dist/store/sqlite.d.ts +12 -1
  51. package/dist/store/sqlite.d.ts.map +1 -1
  52. package/dist/store/sqlite.js +128 -6
  53. package/dist/store/sqlite.js.map +1 -1
  54. package/dist/store/sqlite.test.js +47 -1
  55. package/dist/store/sqlite.test.js.map +1 -1
  56. package/dist/types/index.d.ts +52 -1
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/package.json +1 -1
  59. package/src/domain/entities.ts +19 -0
  60. package/src/domain/events.ts +28 -3
  61. package/src/engine/index.ts +168 -3
  62. package/src/index.test.ts +32 -0
  63. package/src/index.ts +2 -0
  64. package/src/storage/file-storage.ts +96 -0
  65. package/src/storage/firebase-storage.ts +177 -0
  66. package/src/storage/index.ts +3 -0
  67. package/src/storage/s3.ts +165 -0
  68. package/src/storage/storage.test.ts +146 -0
  69. package/src/store/firebase.test.ts +15 -0
  70. package/src/store/firebase.ts +97 -18
  71. package/src/store/index.ts +64 -0
  72. package/src/store/sqlite.test.ts +59 -1
  73. package/src/store/sqlite.ts +172 -6
  74. package/src/types/index.ts +63 -0
  75. package/tsconfig.tsbuildinfo +1 -1
@@ -174,15 +174,73 @@ export interface Iteration {
174
174
  createdAt: string;
175
175
  }
176
176
 
177
+ export type AuthorType = 'user' | 'agent' | 'system';
178
+
177
179
  export interface Comment {
178
180
  id: string;
179
181
  taskId: string;
180
182
  authorId: string;
183
+ authorType?: AuthorType;
184
+ parentId?: string; // Threaded reply support
181
185
  content: string;
186
+ metadata?: Record<string, unknown>;
182
187
  createdAt: string;
183
188
  updatedAt: string;
184
189
  }
185
190
 
191
+ export interface Attachment {
192
+ id: string;
193
+ taskId?: string;
194
+ projectId?: string;
195
+ commentId?: string;
196
+ uploaderId: string;
197
+ uploaderType?: AuthorType;
198
+ filename: string;
199
+ mimeType: string;
200
+ sizeBytes: number;
201
+ url: string;
202
+ storageKey?: string;
203
+ metadata?: Record<string, unknown>;
204
+ createdAt: string;
205
+ updatedAt: string;
206
+ }
207
+
208
+ export type CreateAttachmentInput = Omit<Attachment, 'id' | 'createdAt' | 'updatedAt'>;
209
+
210
+ export interface UploadFileInput {
211
+ filename: string;
212
+ data: Uint8Array | ArrayBuffer | Buffer | Blob | string;
213
+ mimeType?: string;
214
+ pathPrefix?: string;
215
+ }
216
+
217
+ export interface UploadFileResult {
218
+ storageKey: string;
219
+ url: string;
220
+ sizeBytes: number;
221
+ mimeType: string;
222
+ }
223
+
224
+ export interface PresignedUrlOptions {
225
+ storageKey: string;
226
+ expiresInSeconds?: number;
227
+ contentType?: string;
228
+ }
229
+
230
+ export interface PresignedUploadResult {
231
+ uploadUrl: string;
232
+ storageKey: string;
233
+ method?: 'PUT' | 'POST';
234
+ headers?: Record<string, string>;
235
+ }
236
+
237
+ export interface FileStorageAdapter {
238
+ upload(input: UploadFileInput): Promise<UploadFileResult>;
239
+ delete(storageKey: string): Promise<boolean>;
240
+ getDownloadUrl?(storageKey: string): Promise<string>;
241
+ getPresignedUploadUrl?(options: PresignedUrlOptions): Promise<PresignedUploadResult>;
242
+ }
243
+
186
244
  export interface TimeEntry {
187
245
  id: string;
188
246
  taskId: string;
@@ -221,6 +279,10 @@ export type WebhookEvent =
221
279
  | 'task.deleted'
222
280
  | 'task.status_changed'
223
281
  | 'comment.created'
282
+ | 'comment.updated'
283
+ | 'comment.deleted'
284
+ | 'attachment.created'
285
+ | 'attachment.deleted'
224
286
  | 'iteration.started'
225
287
  | 'iteration.completed'
226
288
  | 'team.created'
@@ -250,6 +312,7 @@ export interface CriticalPathPlugin {
250
312
 
251
313
  export interface CriticalPathConfig {
252
314
  store?: 'memory' | 'sqlite' | unknown;
315
+ fileStorage?: FileStorageAdapter;
253
316
  plugins?: CriticalPathPlugin[];
254
317
  webhooks?: Omit<Webhook, 'id' | 'createdAt'>[];
255
318
  initialData?: {
@@ -1 +1 @@
1
- {"root":["./src/index.test.ts","./src/index.ts","./src/use-case-validation.test.ts","./src/domain/custom-fields.ts","./src/domain/ddd.test.ts","./src/domain/entities.ts","./src/domain/events.ts","./src/domain/graph.ts","./src/domain/index.ts","./src/engine/index.ts","./src/plugins/index.ts","./src/store/firebase.test.ts","./src/store/firebase.ts","./src/store/index.ts","./src/store/sqlite.test.ts","./src/store/sqlite.ts","./src/types/index.ts","./src/utils/index.ts","./src/utils/key.test.ts","./src/utils/key.ts","./src/utils/status.ts","./src/utils/workflow.ts"],"version":"5.9.3"}
1
+ {"root":["./src/index.test.ts","./src/index.ts","./src/use-case-validation.test.ts","./src/domain/custom-fields.ts","./src/domain/ddd.test.ts","./src/domain/entities.ts","./src/domain/events.ts","./src/domain/graph.ts","./src/domain/index.ts","./src/engine/index.ts","./src/plugins/index.ts","./src/storage/file-storage.ts","./src/storage/firebase-storage.ts","./src/storage/index.ts","./src/storage/s3.ts","./src/storage/storage.test.ts","./src/store/firebase.test.ts","./src/store/firebase.ts","./src/store/index.ts","./src/store/sqlite.test.ts","./src/store/sqlite.ts","./src/types/index.ts","./src/utils/index.ts","./src/utils/key.test.ts","./src/utils/key.ts","./src/utils/status.ts","./src/utils/workflow.ts"],"version":"5.9.3"}