@thanh01.pmt/domain-kit 0.3.0 → 0.5.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 (46) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -11
  3. package/dist/{chunk-MSRKUZLY.mjs → chunk-E4GCCWJO.mjs} +32 -2
  4. package/dist/chunk-E4GCCWJO.mjs.map +1 -0
  5. package/dist/{chunk-MCHHEBH3.mjs → chunk-G7HLFMD2.mjs} +5 -5
  6. package/dist/{chunk-MCHHEBH3.mjs.map → chunk-G7HLFMD2.mjs.map} +1 -1
  7. package/dist/{chunk-LKSVTRQE.mjs → chunk-TWKIVUTQ.mjs} +33 -3
  8. package/dist/chunk-TWKIVUTQ.mjs.map +1 -0
  9. package/dist/{chunk-Y7MRFFDJ.mjs → chunk-TYXSJUQU.mjs} +100 -9
  10. package/dist/chunk-TYXSJUQU.mjs.map +1 -0
  11. package/dist/curriculumFeedEmitter-T7NUBLAM.mjs +4 -0
  12. package/dist/{curriculumFeedEmitter-FYAWMPE6.mjs.map → curriculumFeedEmitter-T7NUBLAM.mjs.map} +1 -1
  13. package/dist/{curriculumFeedSchema-C8ZP3XMi.d.ts → curriculumFeedSchema-DUFwFyr2.d.cts} +196 -0
  14. package/dist/{curriculumFeedSchema-C8ZP3XMi.d.cts → curriculumFeedSchema-DUFwFyr2.d.ts} +196 -0
  15. package/dist/feed/index.cjs +60 -0
  16. package/dist/feed/index.cjs.map +1 -1
  17. package/dist/feed/index.d.cts +1 -1
  18. package/dist/feed/index.d.ts +1 -1
  19. package/dist/feed/index.mjs +2 -2
  20. package/dist/graph/index.cjs +98 -6
  21. package/dist/graph/index.cjs.map +1 -1
  22. package/dist/graph/index.d.cts +1 -1
  23. package/dist/graph/index.d.ts +1 -1
  24. package/dist/graph/index.mjs +1 -1
  25. package/dist/{hybridGraphPipeline-NZAWAPt_.d.ts → hybridGraphPipeline-DXQDbBEj.d.ts} +14 -2
  26. package/dist/{hybridGraphPipeline-BhFyh3cm.d.cts → hybridGraphPipeline-dT-bio-3.d.cts} +14 -2
  27. package/dist/index.cjs +158 -6
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +2 -2
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.mjs +4 -4
  32. package/dist/pipeline/index.cjs +157 -6
  33. package/dist/pipeline/index.cjs.map +1 -1
  34. package/dist/pipeline/index.d.cts +2 -2
  35. package/dist/pipeline/index.d.ts +2 -2
  36. package/dist/pipeline/index.mjs +4 -4
  37. package/dist/schemas/index.cjs +30 -0
  38. package/dist/schemas/index.cjs.map +1 -1
  39. package/dist/schemas/index.d.cts +1 -1
  40. package/dist/schemas/index.d.ts +1 -1
  41. package/dist/schemas/index.mjs +1 -1
  42. package/package.json +9 -10
  43. package/dist/chunk-LKSVTRQE.mjs.map +0 -1
  44. package/dist/chunk-MSRKUZLY.mjs.map +0 -1
  45. package/dist/chunk-Y7MRFFDJ.mjs.map +0 -1
  46. package/dist/curriculumFeedEmitter-FYAWMPE6.mjs +0 -4
@@ -0,0 +1,4 @@
1
+ export { emitCurriculumFeed } from './chunk-TWKIVUTQ.mjs';
2
+ import './chunk-E4GCCWJO.mjs';
3
+ //# sourceMappingURL=curriculumFeedEmitter-T7NUBLAM.mjs.map
4
+ //# sourceMappingURL=curriculumFeedEmitter-T7NUBLAM.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"curriculumFeedEmitter-FYAWMPE6.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"curriculumFeedEmitter-T7NUBLAM.mjs"}
@@ -105,6 +105,50 @@ declare const FeedNodeSchema: z.ZodObject<{
105
105
  }>, "many">>;
106
106
  feature_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
107
107
  concept_ref: z.ZodDefault<z.ZodNullable<z.ZodString>>;
108
+ user_visible_deliverable: z.ZodDefault<z.ZodString>;
109
+ depth_variants: z.ZodOptional<z.ZodObject<{
110
+ ulo: z.ZodNumber;
111
+ cio: z.ZodNumber;
112
+ sio: z.ZodNumber;
113
+ }, "strip", z.ZodTypeAny, {
114
+ ulo: number;
115
+ cio: number;
116
+ sio: number;
117
+ }, {
118
+ ulo: number;
119
+ cio: number;
120
+ sio: number;
121
+ }>>;
122
+ depth_scaffold_candidates: z.ZodOptional<z.ZodArray<z.ZodObject<{
123
+ from_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
124
+ to_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
125
+ minutes_saved: z.ZodNumber;
126
+ reason: z.ZodDefault<z.ZodString>;
127
+ }, "strip", z.ZodTypeAny, {
128
+ reason: string;
129
+ minutes_saved: number;
130
+ from_depth: "ulo" | "cio" | "sio";
131
+ to_depth: "ulo" | "cio" | "sio";
132
+ }, {
133
+ minutes_saved: number;
134
+ from_depth: "ulo" | "cio" | "sio";
135
+ to_depth: "ulo" | "cio" | "sio";
136
+ reason?: string | undefined;
137
+ }>, "many">>;
138
+ is_core: z.ZodDefault<z.ZodBoolean>;
139
+ depth_context: z.ZodOptional<z.ZodObject<{
140
+ ulo: z.ZodDefault<z.ZodString>;
141
+ cio: z.ZodDefault<z.ZodString>;
142
+ sio: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ ulo: string;
145
+ cio: string;
146
+ sio: string[];
147
+ }, {
148
+ ulo?: string | undefined;
149
+ cio?: string | undefined;
150
+ sio?: string[] | undefined;
151
+ }>>;
108
152
  phase_id: z.ZodDefault<z.ZodString>;
109
153
  introduce_aspect: z.ZodDefault<z.ZodNullable<z.ZodEnum<["new", "advanced", "preview"]>>>;
110
154
  }, "strip", z.ZodTypeAny, {
@@ -137,7 +181,25 @@ declare const FeedNodeSchema: z.ZodObject<{
137
181
  file: string;
138
182
  }[];
139
183
  concept_ref: string | null;
184
+ user_visible_deliverable: string;
185
+ is_core: boolean;
140
186
  introduce_aspect: "new" | "advanced" | "preview" | null;
187
+ depth_variants?: {
188
+ ulo: number;
189
+ cio: number;
190
+ sio: number;
191
+ } | undefined;
192
+ depth_scaffold_candidates?: {
193
+ reason: string;
194
+ minutes_saved: number;
195
+ from_depth: "ulo" | "cio" | "sio";
196
+ to_depth: "ulo" | "cio" | "sio";
197
+ }[] | undefined;
198
+ depth_context?: {
199
+ ulo: string;
200
+ cio: string;
201
+ sio: string[];
202
+ } | undefined;
141
203
  }, {
142
204
  estimated_minutes: number;
143
205
  id: string;
@@ -168,6 +230,24 @@ declare const FeedNodeSchema: z.ZodObject<{
168
230
  evidence?: string | undefined;
169
231
  }[] | undefined;
170
232
  concept_ref?: string | null | undefined;
233
+ user_visible_deliverable?: string | undefined;
234
+ depth_variants?: {
235
+ ulo: number;
236
+ cio: number;
237
+ sio: number;
238
+ } | undefined;
239
+ depth_scaffold_candidates?: {
240
+ minutes_saved: number;
241
+ from_depth: "ulo" | "cio" | "sio";
242
+ to_depth: "ulo" | "cio" | "sio";
243
+ reason?: string | undefined;
244
+ }[] | undefined;
245
+ is_core?: boolean | undefined;
246
+ depth_context?: {
247
+ ulo?: string | undefined;
248
+ cio?: string | undefined;
249
+ sio?: string[] | undefined;
250
+ } | undefined;
171
251
  introduce_aspect?: "new" | "advanced" | "preview" | null | undefined;
172
252
  }>;
173
253
  declare const FeedEdgeSchema: z.ZodObject<{
@@ -306,6 +386,50 @@ declare const CurriculumFeedSchema: z.ZodObject<{
306
386
  }>, "many">>;
307
387
  feature_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
308
388
  concept_ref: z.ZodDefault<z.ZodNullable<z.ZodString>>;
389
+ user_visible_deliverable: z.ZodDefault<z.ZodString>;
390
+ depth_variants: z.ZodOptional<z.ZodObject<{
391
+ ulo: z.ZodNumber;
392
+ cio: z.ZodNumber;
393
+ sio: z.ZodNumber;
394
+ }, "strip", z.ZodTypeAny, {
395
+ ulo: number;
396
+ cio: number;
397
+ sio: number;
398
+ }, {
399
+ ulo: number;
400
+ cio: number;
401
+ sio: number;
402
+ }>>;
403
+ depth_scaffold_candidates: z.ZodOptional<z.ZodArray<z.ZodObject<{
404
+ from_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
405
+ to_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
406
+ minutes_saved: z.ZodNumber;
407
+ reason: z.ZodDefault<z.ZodString>;
408
+ }, "strip", z.ZodTypeAny, {
409
+ reason: string;
410
+ minutes_saved: number;
411
+ from_depth: "ulo" | "cio" | "sio";
412
+ to_depth: "ulo" | "cio" | "sio";
413
+ }, {
414
+ minutes_saved: number;
415
+ from_depth: "ulo" | "cio" | "sio";
416
+ to_depth: "ulo" | "cio" | "sio";
417
+ reason?: string | undefined;
418
+ }>, "many">>;
419
+ is_core: z.ZodDefault<z.ZodBoolean>;
420
+ depth_context: z.ZodOptional<z.ZodObject<{
421
+ ulo: z.ZodDefault<z.ZodString>;
422
+ cio: z.ZodDefault<z.ZodString>;
423
+ sio: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
424
+ }, "strip", z.ZodTypeAny, {
425
+ ulo: string;
426
+ cio: string;
427
+ sio: string[];
428
+ }, {
429
+ ulo?: string | undefined;
430
+ cio?: string | undefined;
431
+ sio?: string[] | undefined;
432
+ }>>;
309
433
  phase_id: z.ZodDefault<z.ZodString>;
310
434
  introduce_aspect: z.ZodDefault<z.ZodNullable<z.ZodEnum<["new", "advanced", "preview"]>>>;
311
435
  }, "strip", z.ZodTypeAny, {
@@ -338,7 +462,25 @@ declare const CurriculumFeedSchema: z.ZodObject<{
338
462
  file: string;
339
463
  }[];
340
464
  concept_ref: string | null;
465
+ user_visible_deliverable: string;
466
+ is_core: boolean;
341
467
  introduce_aspect: "new" | "advanced" | "preview" | null;
468
+ depth_variants?: {
469
+ ulo: number;
470
+ cio: number;
471
+ sio: number;
472
+ } | undefined;
473
+ depth_scaffold_candidates?: {
474
+ reason: string;
475
+ minutes_saved: number;
476
+ from_depth: "ulo" | "cio" | "sio";
477
+ to_depth: "ulo" | "cio" | "sio";
478
+ }[] | undefined;
479
+ depth_context?: {
480
+ ulo: string;
481
+ cio: string;
482
+ sio: string[];
483
+ } | undefined;
342
484
  }, {
343
485
  estimated_minutes: number;
344
486
  id: string;
@@ -369,6 +511,24 @@ declare const CurriculumFeedSchema: z.ZodObject<{
369
511
  evidence?: string | undefined;
370
512
  }[] | undefined;
371
513
  concept_ref?: string | null | undefined;
514
+ user_visible_deliverable?: string | undefined;
515
+ depth_variants?: {
516
+ ulo: number;
517
+ cio: number;
518
+ sio: number;
519
+ } | undefined;
520
+ depth_scaffold_candidates?: {
521
+ minutes_saved: number;
522
+ from_depth: "ulo" | "cio" | "sio";
523
+ to_depth: "ulo" | "cio" | "sio";
524
+ reason?: string | undefined;
525
+ }[] | undefined;
526
+ is_core?: boolean | undefined;
527
+ depth_context?: {
528
+ ulo?: string | undefined;
529
+ cio?: string | undefined;
530
+ sio?: string[] | undefined;
531
+ } | undefined;
372
532
  introduce_aspect?: "new" | "advanced" | "preview" | null | undefined;
373
533
  }>, "many">;
374
534
  dependency_edges: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -466,7 +626,25 @@ declare const CurriculumFeedSchema: z.ZodObject<{
466
626
  file: string;
467
627
  }[];
468
628
  concept_ref: string | null;
629
+ user_visible_deliverable: string;
630
+ is_core: boolean;
469
631
  introduce_aspect: "new" | "advanced" | "preview" | null;
632
+ depth_variants?: {
633
+ ulo: number;
634
+ cio: number;
635
+ sio: number;
636
+ } | undefined;
637
+ depth_scaffold_candidates?: {
638
+ reason: string;
639
+ minutes_saved: number;
640
+ from_depth: "ulo" | "cio" | "sio";
641
+ to_depth: "ulo" | "cio" | "sio";
642
+ }[] | undefined;
643
+ depth_context?: {
644
+ ulo: string;
645
+ cio: string;
646
+ sio: string[];
647
+ } | undefined;
470
648
  }[];
471
649
  dependency_edges: {
472
650
  from: string;
@@ -517,6 +695,24 @@ declare const CurriculumFeedSchema: z.ZodObject<{
517
695
  evidence?: string | undefined;
518
696
  }[] | undefined;
519
697
  concept_ref?: string | null | undefined;
698
+ user_visible_deliverable?: string | undefined;
699
+ depth_variants?: {
700
+ ulo: number;
701
+ cio: number;
702
+ sio: number;
703
+ } | undefined;
704
+ depth_scaffold_candidates?: {
705
+ minutes_saved: number;
706
+ from_depth: "ulo" | "cio" | "sio";
707
+ to_depth: "ulo" | "cio" | "sio";
708
+ reason?: string | undefined;
709
+ }[] | undefined;
710
+ is_core?: boolean | undefined;
711
+ depth_context?: {
712
+ ulo?: string | undefined;
713
+ cio?: string | undefined;
714
+ sio?: string[] | undefined;
715
+ } | undefined;
520
716
  introduce_aspect?: "new" | "advanced" | "preview" | null | undefined;
521
717
  }[];
522
718
  phases?: {
@@ -105,6 +105,50 @@ declare const FeedNodeSchema: z.ZodObject<{
105
105
  }>, "many">>;
106
106
  feature_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
107
107
  concept_ref: z.ZodDefault<z.ZodNullable<z.ZodString>>;
108
+ user_visible_deliverable: z.ZodDefault<z.ZodString>;
109
+ depth_variants: z.ZodOptional<z.ZodObject<{
110
+ ulo: z.ZodNumber;
111
+ cio: z.ZodNumber;
112
+ sio: z.ZodNumber;
113
+ }, "strip", z.ZodTypeAny, {
114
+ ulo: number;
115
+ cio: number;
116
+ sio: number;
117
+ }, {
118
+ ulo: number;
119
+ cio: number;
120
+ sio: number;
121
+ }>>;
122
+ depth_scaffold_candidates: z.ZodOptional<z.ZodArray<z.ZodObject<{
123
+ from_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
124
+ to_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
125
+ minutes_saved: z.ZodNumber;
126
+ reason: z.ZodDefault<z.ZodString>;
127
+ }, "strip", z.ZodTypeAny, {
128
+ reason: string;
129
+ minutes_saved: number;
130
+ from_depth: "ulo" | "cio" | "sio";
131
+ to_depth: "ulo" | "cio" | "sio";
132
+ }, {
133
+ minutes_saved: number;
134
+ from_depth: "ulo" | "cio" | "sio";
135
+ to_depth: "ulo" | "cio" | "sio";
136
+ reason?: string | undefined;
137
+ }>, "many">>;
138
+ is_core: z.ZodDefault<z.ZodBoolean>;
139
+ depth_context: z.ZodOptional<z.ZodObject<{
140
+ ulo: z.ZodDefault<z.ZodString>;
141
+ cio: z.ZodDefault<z.ZodString>;
142
+ sio: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ ulo: string;
145
+ cio: string;
146
+ sio: string[];
147
+ }, {
148
+ ulo?: string | undefined;
149
+ cio?: string | undefined;
150
+ sio?: string[] | undefined;
151
+ }>>;
108
152
  phase_id: z.ZodDefault<z.ZodString>;
109
153
  introduce_aspect: z.ZodDefault<z.ZodNullable<z.ZodEnum<["new", "advanced", "preview"]>>>;
110
154
  }, "strip", z.ZodTypeAny, {
@@ -137,7 +181,25 @@ declare const FeedNodeSchema: z.ZodObject<{
137
181
  file: string;
138
182
  }[];
139
183
  concept_ref: string | null;
184
+ user_visible_deliverable: string;
185
+ is_core: boolean;
140
186
  introduce_aspect: "new" | "advanced" | "preview" | null;
187
+ depth_variants?: {
188
+ ulo: number;
189
+ cio: number;
190
+ sio: number;
191
+ } | undefined;
192
+ depth_scaffold_candidates?: {
193
+ reason: string;
194
+ minutes_saved: number;
195
+ from_depth: "ulo" | "cio" | "sio";
196
+ to_depth: "ulo" | "cio" | "sio";
197
+ }[] | undefined;
198
+ depth_context?: {
199
+ ulo: string;
200
+ cio: string;
201
+ sio: string[];
202
+ } | undefined;
141
203
  }, {
142
204
  estimated_minutes: number;
143
205
  id: string;
@@ -168,6 +230,24 @@ declare const FeedNodeSchema: z.ZodObject<{
168
230
  evidence?: string | undefined;
169
231
  }[] | undefined;
170
232
  concept_ref?: string | null | undefined;
233
+ user_visible_deliverable?: string | undefined;
234
+ depth_variants?: {
235
+ ulo: number;
236
+ cio: number;
237
+ sio: number;
238
+ } | undefined;
239
+ depth_scaffold_candidates?: {
240
+ minutes_saved: number;
241
+ from_depth: "ulo" | "cio" | "sio";
242
+ to_depth: "ulo" | "cio" | "sio";
243
+ reason?: string | undefined;
244
+ }[] | undefined;
245
+ is_core?: boolean | undefined;
246
+ depth_context?: {
247
+ ulo?: string | undefined;
248
+ cio?: string | undefined;
249
+ sio?: string[] | undefined;
250
+ } | undefined;
171
251
  introduce_aspect?: "new" | "advanced" | "preview" | null | undefined;
172
252
  }>;
173
253
  declare const FeedEdgeSchema: z.ZodObject<{
@@ -306,6 +386,50 @@ declare const CurriculumFeedSchema: z.ZodObject<{
306
386
  }>, "many">>;
307
387
  feature_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
308
388
  concept_ref: z.ZodDefault<z.ZodNullable<z.ZodString>>;
389
+ user_visible_deliverable: z.ZodDefault<z.ZodString>;
390
+ depth_variants: z.ZodOptional<z.ZodObject<{
391
+ ulo: z.ZodNumber;
392
+ cio: z.ZodNumber;
393
+ sio: z.ZodNumber;
394
+ }, "strip", z.ZodTypeAny, {
395
+ ulo: number;
396
+ cio: number;
397
+ sio: number;
398
+ }, {
399
+ ulo: number;
400
+ cio: number;
401
+ sio: number;
402
+ }>>;
403
+ depth_scaffold_candidates: z.ZodOptional<z.ZodArray<z.ZodObject<{
404
+ from_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
405
+ to_depth: z.ZodEnum<["ulo", "cio", "sio"]>;
406
+ minutes_saved: z.ZodNumber;
407
+ reason: z.ZodDefault<z.ZodString>;
408
+ }, "strip", z.ZodTypeAny, {
409
+ reason: string;
410
+ minutes_saved: number;
411
+ from_depth: "ulo" | "cio" | "sio";
412
+ to_depth: "ulo" | "cio" | "sio";
413
+ }, {
414
+ minutes_saved: number;
415
+ from_depth: "ulo" | "cio" | "sio";
416
+ to_depth: "ulo" | "cio" | "sio";
417
+ reason?: string | undefined;
418
+ }>, "many">>;
419
+ is_core: z.ZodDefault<z.ZodBoolean>;
420
+ depth_context: z.ZodOptional<z.ZodObject<{
421
+ ulo: z.ZodDefault<z.ZodString>;
422
+ cio: z.ZodDefault<z.ZodString>;
423
+ sio: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
424
+ }, "strip", z.ZodTypeAny, {
425
+ ulo: string;
426
+ cio: string;
427
+ sio: string[];
428
+ }, {
429
+ ulo?: string | undefined;
430
+ cio?: string | undefined;
431
+ sio?: string[] | undefined;
432
+ }>>;
309
433
  phase_id: z.ZodDefault<z.ZodString>;
310
434
  introduce_aspect: z.ZodDefault<z.ZodNullable<z.ZodEnum<["new", "advanced", "preview"]>>>;
311
435
  }, "strip", z.ZodTypeAny, {
@@ -338,7 +462,25 @@ declare const CurriculumFeedSchema: z.ZodObject<{
338
462
  file: string;
339
463
  }[];
340
464
  concept_ref: string | null;
465
+ user_visible_deliverable: string;
466
+ is_core: boolean;
341
467
  introduce_aspect: "new" | "advanced" | "preview" | null;
468
+ depth_variants?: {
469
+ ulo: number;
470
+ cio: number;
471
+ sio: number;
472
+ } | undefined;
473
+ depth_scaffold_candidates?: {
474
+ reason: string;
475
+ minutes_saved: number;
476
+ from_depth: "ulo" | "cio" | "sio";
477
+ to_depth: "ulo" | "cio" | "sio";
478
+ }[] | undefined;
479
+ depth_context?: {
480
+ ulo: string;
481
+ cio: string;
482
+ sio: string[];
483
+ } | undefined;
342
484
  }, {
343
485
  estimated_minutes: number;
344
486
  id: string;
@@ -369,6 +511,24 @@ declare const CurriculumFeedSchema: z.ZodObject<{
369
511
  evidence?: string | undefined;
370
512
  }[] | undefined;
371
513
  concept_ref?: string | null | undefined;
514
+ user_visible_deliverable?: string | undefined;
515
+ depth_variants?: {
516
+ ulo: number;
517
+ cio: number;
518
+ sio: number;
519
+ } | undefined;
520
+ depth_scaffold_candidates?: {
521
+ minutes_saved: number;
522
+ from_depth: "ulo" | "cio" | "sio";
523
+ to_depth: "ulo" | "cio" | "sio";
524
+ reason?: string | undefined;
525
+ }[] | undefined;
526
+ is_core?: boolean | undefined;
527
+ depth_context?: {
528
+ ulo?: string | undefined;
529
+ cio?: string | undefined;
530
+ sio?: string[] | undefined;
531
+ } | undefined;
372
532
  introduce_aspect?: "new" | "advanced" | "preview" | null | undefined;
373
533
  }>, "many">;
374
534
  dependency_edges: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -466,7 +626,25 @@ declare const CurriculumFeedSchema: z.ZodObject<{
466
626
  file: string;
467
627
  }[];
468
628
  concept_ref: string | null;
629
+ user_visible_deliverable: string;
630
+ is_core: boolean;
469
631
  introduce_aspect: "new" | "advanced" | "preview" | null;
632
+ depth_variants?: {
633
+ ulo: number;
634
+ cio: number;
635
+ sio: number;
636
+ } | undefined;
637
+ depth_scaffold_candidates?: {
638
+ reason: string;
639
+ minutes_saved: number;
640
+ from_depth: "ulo" | "cio" | "sio";
641
+ to_depth: "ulo" | "cio" | "sio";
642
+ }[] | undefined;
643
+ depth_context?: {
644
+ ulo: string;
645
+ cio: string;
646
+ sio: string[];
647
+ } | undefined;
470
648
  }[];
471
649
  dependency_edges: {
472
650
  from: string;
@@ -517,6 +695,24 @@ declare const CurriculumFeedSchema: z.ZodObject<{
517
695
  evidence?: string | undefined;
518
696
  }[] | undefined;
519
697
  concept_ref?: string | null | undefined;
698
+ user_visible_deliverable?: string | undefined;
699
+ depth_variants?: {
700
+ ulo: number;
701
+ cio: number;
702
+ sio: number;
703
+ } | undefined;
704
+ depth_scaffold_candidates?: {
705
+ minutes_saved: number;
706
+ from_depth: "ulo" | "cio" | "sio";
707
+ to_depth: "ulo" | "cio" | "sio";
708
+ reason?: string | undefined;
709
+ }[] | undefined;
710
+ is_core?: boolean | undefined;
711
+ depth_context?: {
712
+ ulo?: string | undefined;
713
+ cio?: string | undefined;
714
+ sio?: string[] | undefined;
715
+ } | undefined;
520
716
  introduce_aspect?: "new" | "advanced" | "preview" | null | undefined;
521
717
  }[];
522
718
  phases?: {
@@ -31,6 +31,36 @@ var FeedNodeSchema = zod.z.object({
31
31
  references: zod.z.array(zod.z.object({ file: zod.z.string().min(1), evidence: zod.z.string().default("") })).default([]),
32
32
  feature_id: zod.z.string().nullable().default(null),
33
33
  concept_ref: zod.z.string().nullable().default(null),
34
+ // P52/T2.1: outcome.user_visible projected from the ProjectGraph step — the
35
+ // tangible checkpoint the session-cutting planner aims for (empty when the
36
+ // step declares no user-visible result). Concepts carry '' by default.
37
+ user_visible_deliverable: zod.z.string().default(""),
38
+ // P52/T3.1 — depth-reconcile inputs (optional/defaulted so old feeds
39
+ // validate unchanged):
40
+ // • depth_variants: minutes to teach this node at each depth level.
41
+ // ULO (know-it-exists) ≤ CIO (mechanism) ≤ SIO (implementation). All 3
42
+ // required so a downgrade never turns an anchor teach into a zero.
43
+ // • depth_scaffold_candidates: parallel to scaffold_candidates but
44
+ // acts on DEPTH (e.g. SIO→CIO) instead of lesson time.
45
+ // • is_core: concept is a Master-Tree core concept — reconciler must
46
+ // never downgrade it; escalate instead.
47
+ depth_variants: zod.z.object({ ulo: zod.z.number().int().nonnegative(), cio: zod.z.number().int().nonnegative(), sio: zod.z.number().int().nonnegative() }).optional(),
48
+ depth_scaffold_candidates: zod.z.array(zod.z.object({
49
+ from_depth: zod.z.enum(["ulo", "cio", "sio"]),
50
+ to_depth: zod.z.enum(["ulo", "cio", "sio"]),
51
+ minutes_saved: zod.z.number().int().nonnegative(),
52
+ reason: zod.z.string().default("")
53
+ })).optional(),
54
+ is_core: zod.z.boolean().default(false),
55
+ // Depth layer text (optional, additive — old feeds validate unchanged).
56
+ // Carries the ULO/CIO/SIO authored text from the KnowledgeGraph concept
57
+ // so downstream consumers (KX generator) can inject depth-appropriate
58
+ // material into their prompts without a second LLM call.
59
+ depth_context: zod.z.object({
60
+ ulo: zod.z.string().default(""),
61
+ cio: zod.z.string().default(""),
62
+ sio: zod.z.array(zod.z.string()).default([])
63
+ }).optional(),
34
64
  // Progressive-completion bookkeeping (feed v2, additive):
35
65
  // phase_id = development phase that introduces/uses this node;
36
66
  // introduce_aspect = how the phase teaches a concept node (first intro, advanced
@@ -157,6 +187,10 @@ function feedNodeFromStep(step, featureId) {
157
187
  references: arr(step.files).map((f) => ({ file: str(f), evidence: "step file" })).filter((f) => f.file),
158
188
  feature_id: featureId,
159
189
  concept_ref: null,
190
+ // P52/T2.1: carry the step's tangible outcome so the planner can cut
191
+ // sessions at user-visible checkpoints instead of raw minute counts.
192
+ user_visible_deliverable: str(step.outcome?.user_visible),
193
+ is_core: false,
160
194
  phase_id: "",
161
195
  introduce_aspect: null
162
196
  };
@@ -175,6 +209,20 @@ function deriveConceptDepthHint(concept) {
175
209
  if (str(concept.cio) || prereqs.length >= 1) return "cio";
176
210
  return "ulo";
177
211
  }
212
+ function deriveDepthInputs(minutes, depth) {
213
+ const ulo = Math.max(5, Math.round(minutes * 0.35));
214
+ const cio = Math.max(ulo + 5, Math.round(minutes * 0.65));
215
+ const sio = Math.max(cio + 5, minutes);
216
+ const variants = { ulo, cio, sio };
217
+ const candidates = [];
218
+ if (depth === "sio") {
219
+ candidates.push({ from_depth: "sio", to_depth: "cio", minutes_saved: sio - cio, reason: "SIO implementation practice deferred \u2014 CIO mechanism suffices for downstream consumers" });
220
+ }
221
+ if (depth === "cio" || depth === "sio") {
222
+ candidates.push({ from_depth: depth, to_depth: "ulo", minutes_saved: (depth === "sio" ? sio : cio) - ulo, reason: "Mechanism deferred \u2014 ULO awareness suffices (know-it-exists); never below the ULO floor" });
223
+ }
224
+ return { depth_variants: variants, depth_scaffold_candidates: candidates };
225
+ }
178
226
  function feedNodeFromConcept(concept) {
179
227
  const id = str(concept.id);
180
228
  const pts = arr(concept.problem_types).map((p) => str(p.bloom_level, "Understand")).filter((b) => b in BLOOM_RANK).sort((a, b) => BLOOM_RANK[a] - BLOOM_RANK[b]);
@@ -204,6 +252,15 @@ function feedNodeFromConcept(concept) {
204
252
  references,
205
253
  feature_id: null,
206
254
  concept_ref: id,
255
+ user_visible_deliverable: "",
256
+ // concepts are taught, not shipped — checkpoints live on product steps
257
+ ...deriveDepthInputs(Math.max(0, Math.round(num(concept.estimated_minutes, 15))), deriveConceptDepthHint(concept)),
258
+ is_core: false,
259
+ depth_context: {
260
+ ulo: str(concept.ulo),
261
+ cio: str(concept.cio),
262
+ sio: strs(concept.sio)
263
+ },
207
264
  phase_id: "",
208
265
  introduce_aspect: null
209
266
  };
@@ -310,6 +367,8 @@ function emitFromHybrid(hybrid, opts) {
310
367
  prevNode.concept_codes = [str(c.code) || cid];
311
368
  prevNode.keywords = { all: strs(c.keywords), new: [], prerequisite: [] };
312
369
  prevNode.scaffolding = { scaffold_candidates: [], core_value_minutes: 0 };
370
+ prevNode.depth_variants = { ulo: prevNode.estimated_minutes, cio: prevNode.estimated_minutes, sio: prevNode.estimated_minutes };
371
+ prevNode.depth_scaffold_candidates = [];
313
372
  nodes.push(prevNode);
314
373
  conceptOrder.push(prevNode.id);
315
374
  continue;
@@ -334,6 +393,7 @@ function emitFromHybrid(hybrid, opts) {
334
393
  node.name = str(c.name, cid) + " (advanced)";
335
394
  node.phase_id = pid;
336
395
  node.introduce_aspect = "advanced";
396
+ node.depth_scaffold_candidates = [{ from_depth: "sio", to_depth: "cio", minutes_saved: Math.round(node.estimated_minutes * 0.3), reason: "advanced revisit may drop to CIO recap without breaking first-teach chain" }];
337
397
  node.estimated_minutes = Math.max(15, Math.round(node.estimated_minutes * 0.5));
338
398
  node.concept_codes = [str(c.code) || cid];
339
399
  edges.push({ from: cid, to: revisitId, kind: "knowledge", reason: "advanced revisit of " + cid + " at phase " + pid });