@critical-path/core 0.15.2 → 0.16.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 (52) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +4 -0
  3. package/dist/domain/cpm.d.ts +10 -0
  4. package/dist/domain/cpm.d.ts.map +1 -0
  5. package/dist/domain/cpm.js +176 -0
  6. package/dist/domain/cpm.js.map +1 -0
  7. package/dist/domain/cpm.test.d.ts +2 -0
  8. package/dist/domain/cpm.test.d.ts.map +1 -0
  9. package/dist/domain/cpm.test.js +113 -0
  10. package/dist/domain/cpm.test.js.map +1 -0
  11. package/dist/domain/index.d.ts +2 -0
  12. package/dist/domain/index.d.ts.map +1 -1
  13. package/dist/domain/index.js +2 -0
  14. package/dist/domain/index.js.map +1 -1
  15. package/dist/domain/ladder.d.ts +16 -0
  16. package/dist/domain/ladder.d.ts.map +1 -0
  17. package/dist/domain/ladder.js +338 -0
  18. package/dist/domain/ladder.js.map +1 -0
  19. package/dist/domain/ladder.test.d.ts +2 -0
  20. package/dist/domain/ladder.test.d.ts.map +1 -0
  21. package/dist/domain/ladder.test.js +213 -0
  22. package/dist/domain/ladder.test.js.map +1 -0
  23. package/dist/engine/index.d.ts +5 -1
  24. package/dist/engine/index.d.ts.map +1 -1
  25. package/dist/engine/index.js +84 -1
  26. package/dist/engine/index.js.map +1 -1
  27. package/dist/store/firebase.d.ts +3 -1
  28. package/dist/store/firebase.d.ts.map +1 -1
  29. package/dist/store/firebase.js +1 -1
  30. package/dist/store/firebase.js.map +1 -1
  31. package/dist/store/index.d.ts +6 -2
  32. package/dist/store/index.d.ts.map +1 -1
  33. package/dist/store/index.js +1 -1
  34. package/dist/store/index.js.map +1 -1
  35. package/dist/store/sqlite.d.ts +3 -1
  36. package/dist/store/sqlite.d.ts.map +1 -1
  37. package/dist/store/sqlite.js +1 -1
  38. package/dist/store/sqlite.js.map +1 -1
  39. package/dist/types/index.d.ts +123 -0
  40. package/dist/types/index.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/src/domain/cpm.test.ts +128 -0
  43. package/src/domain/cpm.ts +215 -0
  44. package/src/domain/index.ts +3 -0
  45. package/src/domain/ladder.test.ts +251 -0
  46. package/src/domain/ladder.ts +437 -0
  47. package/src/engine/index.ts +110 -4
  48. package/src/store/firebase.ts +2 -2
  49. package/src/store/index.ts +3 -3
  50. package/src/store/sqlite.ts +2 -2
  51. package/src/types/index.ts +138 -0
  52. package/tsconfig.tsbuildinfo +1 -1
@@ -424,3 +424,141 @@ export interface CriticalPathConfig {
424
424
  deliverables?: Deliverable[];
425
425
  };
426
426
  }
427
+
428
+ // ==========================================
429
+ // Bret Victor's Ladder of Abstraction Types
430
+ // ==========================================
431
+
432
+ export type AbstractionLevel = 'macro' | 'standard' | 'concrete' | 'all';
433
+
434
+ export type MacroPhaseHealth = 'on_track' | 'at_risk' | 'blocked' | 'overdue' | 'completed';
435
+
436
+ export interface MacroPhaseRollup {
437
+ id: string; // containerId, iterationId, deliverableId, or 'unassigned'
438
+ type: 'container' | 'iteration' | 'deliverable' | 'phase';
439
+ name: string;
440
+ description?: string;
441
+ startDate?: string;
442
+ endDate?: string;
443
+ durationHours: number;
444
+ totalTasks: number;
445
+ completedTasks: number;
446
+ inProgressTasks: number;
447
+ blockedTasks: number;
448
+ progressPercentage: number;
449
+ totalEstimatedHours: number;
450
+ totalLoggedHours: number;
451
+ isCritical: boolean;
452
+ criticalTaskCount: number;
453
+ health: MacroPhaseHealth;
454
+ taskIds: string[];
455
+ }
456
+
457
+ export interface MacroTimelineSummary {
458
+ projectId: string;
459
+ projectName: string;
460
+ overallStartDate?: string;
461
+ overallEndDate?: string;
462
+ projectedFinishDate?: string;
463
+ totalDurationHours: number;
464
+ criticalPathDurationHours: number;
465
+ overallProgressPercentage: number;
466
+ health: MacroPhaseHealth;
467
+ totalTasks: number;
468
+ completedTasks: number;
469
+ inProgressTasks: number;
470
+ blockedTasks: number;
471
+ totalEstimatedHours: number;
472
+ totalLoggedHours: number;
473
+ phases: MacroPhaseRollup[];
474
+ }
475
+
476
+ export interface TaskCriticalPathSchedule {
477
+ taskId: string;
478
+ earlyStart: number;
479
+ earlyFinish: number;
480
+ lateStart: number;
481
+ lateFinish: number;
482
+ totalSlack: number;
483
+ isCritical: boolean;
484
+ }
485
+
486
+ export interface CriticalPathAnalysis {
487
+ projectId: string;
488
+ calculatedAt: string;
489
+ totalDurationHours: number;
490
+ criticalTaskIds: string[];
491
+ tasks: TaskCriticalPathSchedule[];
492
+ }
493
+
494
+ export interface ConcreteEvidenceSummary {
495
+ attachmentCount: number;
496
+ deliverableCount: number;
497
+ todoCount: number;
498
+ completedTodoCount: number;
499
+ timeEntryCount: number;
500
+ totalLoggedHours: number;
501
+ hasVisualAsset: boolean;
502
+ lastActivityAt?: string;
503
+ }
504
+
505
+ export interface StandardTaskTimelineItem extends Task {
506
+ cpm?: TaskCriticalPathSchedule;
507
+ blockingTaskIds: string[];
508
+ dependentTaskIds: string[];
509
+ childTaskIds: string[];
510
+ concreteEvidenceSummary: ConcreteEvidenceSummary;
511
+ }
512
+
513
+ export interface RealityDelta {
514
+ plannedStartDate?: string;
515
+ actualStartDate?: string;
516
+ dueDate?: string;
517
+ actualEndDate?: string;
518
+ estimatedHours: number;
519
+ loggedHours: number;
520
+ varianceHours: number; // loggedHours - estimatedHours
521
+ scheduleVarianceDays?: number; // days difference between planned/due vs actual
522
+ isOverdue: boolean;
523
+ isOverEstimate: boolean;
524
+ }
525
+
526
+ export interface ConcreteTaskEvidence {
527
+ taskId: string;
528
+ attachments: Attachment[];
529
+ deliverables: Deliverable[];
530
+ todos: TaskTodoItem[];
531
+ timeEntries: TimeEntry[];
532
+ dailyEffortDistribution: Array<{ date: string; hours: number }>;
533
+ activities: Activity[];
534
+ realityDelta: RealityDelta;
535
+ evidenceSummary: ConcreteEvidenceSummary;
536
+ }
537
+
538
+ export interface TimelineLadderOptions {
539
+ level?: AbstractionLevel;
540
+ containerId?: string;
541
+ iterationId?: string;
542
+ }
543
+
544
+ export interface TimelineLadder {
545
+ projectId: string;
546
+ generatedAt: string;
547
+ level: AbstractionLevel;
548
+ macro?: MacroTimelineSummary;
549
+ standard?: {
550
+ tasks: StandardTaskTimelineItem[];
551
+ criticalPathTaskIds: string[];
552
+ dependencies: TaskDependency[];
553
+ totalDurationHours: number;
554
+ };
555
+ concrete?: Record<string, ConcreteTaskEvidence>;
556
+ }
557
+
558
+ export interface TaskLadderView {
559
+ taskId: string;
560
+ macroPhase?: MacroPhaseRollup;
561
+ standard: StandardTaskTimelineItem;
562
+ concrete: ConcreteTaskEvidence;
563
+ }
564
+
@@ -1 +1 @@
1
- {"root":["./src/deliverables.test.ts","./src/index.test.ts","./src/index.ts","./src/status.test.ts","./src/task-state.test.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/mentions.test.ts","./src/utils/mentions.ts","./src/utils/status.ts","./src/utils/workflow.ts"],"version":"5.9.3"}
1
+ {"root":["./src/deliverables.test.ts","./src/index.test.ts","./src/index.ts","./src/status.test.ts","./src/task-state.test.ts","./src/use-case-validation.test.ts","./src/domain/cpm.test.ts","./src/domain/cpm.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/domain/ladder.test.ts","./src/domain/ladder.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/mentions.test.ts","./src/utils/mentions.ts","./src/utils/status.ts","./src/utils/workflow.ts"],"version":"5.9.3"}