@thanh01.pmt/domain-kit 0.5.0 → 0.6.1

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 (101) hide show
  1. package/README.md +682 -168
  2. package/dist/assembly/index.d.cts +3 -2
  3. package/dist/assembly/index.d.ts +3 -2
  4. package/dist/{chunk-TYXSJUQU.mjs → chunk-4UCXYRM3.mjs} +208 -310
  5. package/dist/chunk-4UCXYRM3.mjs.map +1 -0
  6. package/dist/chunk-7A2SG466.mjs +325 -0
  7. package/dist/chunk-7A2SG466.mjs.map +1 -0
  8. package/dist/{chunk-E4GCCWJO.mjs → chunk-CGNXGVHV.mjs} +37 -4
  9. package/dist/chunk-CGNXGVHV.mjs.map +1 -0
  10. package/dist/{chunk-DRVOV5ZD.mjs → chunk-DSEJLTUO.mjs} +2 -2
  11. package/dist/chunk-DSEJLTUO.mjs.map +1 -0
  12. package/dist/{chunk-VCPIWJ7R.mjs → chunk-H4W3YJLK.mjs} +29 -4
  13. package/dist/chunk-H4W3YJLK.mjs.map +1 -0
  14. package/dist/chunk-IBVXXVGE.mjs +14 -0
  15. package/dist/chunk-IBVXXVGE.mjs.map +1 -0
  16. package/dist/{chunk-G7HLFMD2.mjs → chunk-KHCZYLKM.mjs} +68 -33
  17. package/dist/chunk-KHCZYLKM.mjs.map +1 -0
  18. package/dist/chunk-OYSZQVPY.mjs +10 -0
  19. package/dist/chunk-OYSZQVPY.mjs.map +1 -0
  20. package/dist/{chunk-BL5NBKPH.mjs → chunk-WD3P5V3B.mjs} +19 -8
  21. package/dist/chunk-WD3P5V3B.mjs.map +1 -0
  22. package/dist/{chunk-TWKIVUTQ.mjs → chunk-WKTH3JPA.mjs} +197 -36
  23. package/dist/chunk-WKTH3JPA.mjs.map +1 -0
  24. package/dist/{conceptEscalator-ltRLtPhf.d.cts → conceptEscalator-BmMJD8C5.d.cts} +10 -1
  25. package/dist/{conceptEscalator-YfMKIKCZ.d.ts → conceptEscalator-DMsehscs.d.ts} +10 -1
  26. package/dist/concepts/index.d.cts +4 -3
  27. package/dist/concepts/index.d.ts +4 -3
  28. package/dist/{cpp-CZUPqJt9.d.cts → cpp-vlDl6pCL.d.cts} +4 -4
  29. package/dist/{cpp-CZUPqJt9.d.ts → cpp-vlDl6pCL.d.ts} +4 -4
  30. package/dist/{curriculumFeedSchema-DUFwFyr2.d.ts → curriculumFeedSchema-DK-TUAJZ.d.cts} +164 -9
  31. package/dist/{curriculumFeedSchema-DUFwFyr2.d.cts → curriculumFeedSchema-DK-TUAJZ.d.ts} +164 -9
  32. package/dist/detector/index.cjs +22 -6
  33. package/dist/detector/index.cjs.map +1 -1
  34. package/dist/detector/index.d.cts +2 -2
  35. package/dist/detector/index.d.ts +2 -2
  36. package/dist/detector/index.mjs +2 -1
  37. package/dist/{domainProfileDetector-DHb1T0zB.d.ts → domainProfileDetector-6pjgL-6_.d.ts} +1 -1
  38. package/dist/{domainProfileDetector-bzugdQmS.d.cts → domainProfileDetector-BsADsuRV.d.cts} +1 -1
  39. package/dist/{domainProfileSchema-CwT3Ffsw.d.ts → domainProfileSchema-779FGk14.d.cts} +38 -1
  40. package/dist/{domainProfileSchema-CwT3Ffsw.d.cts → domainProfileSchema-779FGk14.d.ts} +38 -1
  41. package/dist/extractors/index.d.cts +3 -3
  42. package/dist/extractors/index.d.ts +3 -3
  43. package/dist/feed/index.cjs +229 -33
  44. package/dist/feed/index.cjs.map +1 -1
  45. package/dist/feed/index.d.cts +32 -2
  46. package/dist/feed/index.d.ts +32 -2
  47. package/dist/feed/index.mjs +2 -2
  48. package/dist/graph/index.cjs +308 -86
  49. package/dist/graph/index.cjs.map +1 -1
  50. package/dist/graph/index.d.cts +20 -8
  51. package/dist/graph/index.d.ts +20 -8
  52. package/dist/graph/index.mjs +4 -1
  53. package/dist/{hybridGraphPipeline-dT-bio-3.d.cts → hybridGraphPipeline-B4mamLim.d.cts} +6 -2
  54. package/dist/{hybridGraphPipeline-DXQDbBEj.d.ts → hybridGraphPipeline-D2_1GUva.d.ts} +6 -2
  55. package/dist/{hybridGraphSchema-nrUeSwpU.d.ts → hybridGraphSchema-C37qxdTM.d.cts} +16 -3
  56. package/dist/{hybridGraphSchema-nrUeSwpU.d.cts → hybridGraphSchema-C37qxdTM.d.ts} +16 -3
  57. package/dist/index.cjs +3948 -3464
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.d.cts +11 -10
  60. package/dist/index.d.ts +11 -10
  61. package/dist/index.mjs +14 -11
  62. package/dist/{keywordExtractor-BxlGRMHC.d.cts → keywordExtractor-1YAFntsn.d.cts} +1 -1
  63. package/dist/{keywordExtractor-DU5XRN8-.d.ts → keywordExtractor-DWw8z_AF.d.ts} +1 -1
  64. package/dist/parsers/index.cjs.map +1 -1
  65. package/dist/parsers/index.d.cts +1 -1
  66. package/dist/parsers/index.d.ts +1 -1
  67. package/dist/parsers/index.mjs +1 -1
  68. package/dist/pipeline/index.cjs +2436 -1994
  69. package/dist/pipeline/index.cjs.map +1 -1
  70. package/dist/pipeline/index.d.cts +19 -10
  71. package/dist/pipeline/index.d.ts +19 -10
  72. package/dist/pipeline/index.mjs +11 -8
  73. package/dist/schemas/index.cjs +63 -2
  74. package/dist/schemas/index.cjs.map +1 -1
  75. package/dist/schemas/index.d.cts +3 -3
  76. package/dist/schemas/index.d.ts +3 -3
  77. package/dist/schemas/index.mjs +2 -2
  78. package/dist/utils/llmClient.cjs +344 -0
  79. package/dist/utils/llmClient.cjs.map +1 -0
  80. package/dist/utils/llmClient.d.cts +118 -0
  81. package/dist/utils/llmClient.d.ts +118 -0
  82. package/dist/utils/llmClient.mjs +4 -0
  83. package/dist/utils/llmClient.mjs.map +1 -0
  84. package/dist/utils/llmTransportResult.cjs +16 -0
  85. package/dist/utils/llmTransportResult.cjs.map +1 -0
  86. package/dist/utils/llmTransportResult.d.cts +36 -0
  87. package/dist/utils/llmTransportResult.d.ts +36 -0
  88. package/dist/utils/llmTransportResult.mjs +3 -0
  89. package/dist/utils/llmTransportResult.mjs.map +1 -0
  90. package/package.json +1 -1
  91. package/dist/chunk-BL5NBKPH.mjs.map +0 -1
  92. package/dist/chunk-DRVOV5ZD.mjs.map +0 -1
  93. package/dist/chunk-E4GCCWJO.mjs.map +0 -1
  94. package/dist/chunk-G7HLFMD2.mjs.map +0 -1
  95. package/dist/chunk-TWKIVUTQ.mjs.map +0 -1
  96. package/dist/chunk-TYXSJUQU.mjs.map +0 -1
  97. package/dist/chunk-VCPIWJ7R.mjs.map +0 -1
  98. package/dist/curriculumFeedEmitter-T7NUBLAM.mjs +0 -4
  99. package/dist/curriculumFeedEmitter-T7NUBLAM.mjs.map +0 -1
  100. package/dist/llmClient-ysPhLjcH.d.cts +0 -16
  101. package/dist/llmClient-ysPhLjcH.d.ts +0 -16
@@ -475,9 +475,27 @@ var HybridGraphSchema = z.object({
475
475
  phases: z.array(DevelopmentPhaseSchema).optional().default([]),
476
476
  // Metadata
477
477
  description: z.string().optional().default(""),
478
+ // ── Minute totals (HG-1, 2026-10-05) ────────────────────────────────────
479
+ // These three used to sit side by side with near-identical names and NO
480
+ // documentation. Two measured DIFFERENT quantities, which is why the field
481
+ // below was renamed: it does not measure "the total". Read before trusting
482
+ // any of them.
483
+ /** Minutes of PRODUCT work: sum over every feature step. */
478
484
  total_project_minutes: z.number().optional().default(0),
485
+ /** Minutes of CONCEPT work: sum over EVERY concept in the graph. */
479
486
  total_concept_minutes: z.number().optional().default(0),
480
- estimated_total_minutes: z.number().optional().default(0)
487
+ /**
488
+ * Renamed from `estimated_total_minutes` (2026-10-05) — the old name read
489
+ * like "the course total" but the number is narrower:
490
+ * total_project_minutes + (minutes of concepts that HAVE a feature link)
491
+ * unlinked concepts are deliberately excluded, and per concept the MAXIMUM
492
+ * link estimate wins, not the sum. Expect this to sit well BELOW
493
+ * total_project_minutes + total_concept_minutes.
494
+ *
495
+ * The figure the phase planner actually commits to is
496
+ * total_project_minutes + total_concept_minutes (see decomposePhases).
497
+ */
498
+ linked_prereq_minutes: z.number().optional().default(0)
481
499
  });
482
500
  var InputTypeSchema = z.enum([
483
501
  "repository",
@@ -533,6 +551,11 @@ var DetectionConfidenceSchema = z.object({
533
551
  domainCategory: z.number().min(0).max(1).optional().default(0.5),
534
552
  learningMode: z.number().min(0).max(1).optional().default(0.5)
535
553
  });
554
+ var AmbiguousDomainSchema = z.object({
555
+ domain1: DomainCategorySchema,
556
+ domain2: DomainCategorySchema,
557
+ reason: z.string()
558
+ });
536
559
  var DomainProfileSchema = z.object({
537
560
  // Detection results
538
561
  inputType: InputTypeSchema,
@@ -541,6 +564,8 @@ var DomainProfileSchema = z.object({
541
564
  graphType: GraphTypeSchema,
542
565
  // Confidence scores
543
566
  confidence: DetectionConfidenceSchema.optional(),
567
+ // Ambiguity flag when detection is borderline or context-conflicted
568
+ ambiguous: AmbiguousDomainSchema.optional(),
544
569
  // Evidence for detection decisions
545
570
  evidence: z.array(z.string()).optional().default([]),
546
571
  // Detected metadata (optional, populated during detection)
@@ -556,6 +581,6 @@ var DomainProfileSchema = z.object({
556
581
  syllabusText: z.string().optional().default("")
557
582
  });
558
583
 
559
- export { ArchEdgeSchema, ArchNodeSchema, ArchitectureDetailSchema, CapabilitySchema, ConceptCategorySchema, ConceptIntroductionSchema, ConceptSchema, DataIntegrationSchema, DecompositionSchema, DetectionConfidenceSchema, DevelopmentPhaseSchema, DevelopmentStageSchema, DomainCategorySchema, DomainProfileSchema, ExperienceComponentSchema, ExperienceSchema, ExperimentProcedureSchema, FeatureSchema, GrammarRuleSchema, GraphTypeSchema, HardwareFeatureExtensionSchema, HardwareStepSchema, HardwareTaskExtensionSchema, HardwareTechStackExtensionSchema, HybridGraphSchema, ImplementationSchema, InputTypeSchema, JourneySchema, JourneyStepSchema, KnowledgeGraphSchema, LanguageConceptExtensionSchema, LearningModeSchema, LearningPathStepSchema, MathConceptExtensionSchema, MathTheoremSchema, MilestoneDecompositionSchema, MissingGapSchema, NavigationSchema, ProblemTypeSchema, ProductGoalSchema, ProductSchema, ProductUserSchema, ProjectConceptLinkSchema, ProjectGraphSchema, ProjectInfoSchema, RequirementSchema, ScienceConceptExtensionSchema, ScreenSchema, ShapeSchema, StepEffortSchema, StepOutcomeSchema, StepSchema, SubjectInfoSchema, TaskEffortSchema, TaskOutcomeSchema, TaskSchema, TechDebtSchema, TechStackSchema, ThreeDesignFeatureExtensionSchema, ThreeDesignTaskExtensionSchema, ThreeDesignTechStackExtensionSchema, UiStateSchema, WiringSchema };
560
- //# sourceMappingURL=chunk-VCPIWJ7R.mjs.map
561
- //# sourceMappingURL=chunk-VCPIWJ7R.mjs.map
584
+ export { AmbiguousDomainSchema, ArchEdgeSchema, ArchNodeSchema, ArchitectureDetailSchema, CapabilitySchema, ConceptCategorySchema, ConceptIntroductionSchema, ConceptSchema, DataIntegrationSchema, DecompositionSchema, DetectionConfidenceSchema, DevelopmentPhaseSchema, DevelopmentStageSchema, DomainCategorySchema, DomainProfileSchema, ExperienceComponentSchema, ExperienceSchema, ExperimentProcedureSchema, FeatureSchema, GrammarRuleSchema, GraphTypeSchema, HardwareFeatureExtensionSchema, HardwareStepSchema, HardwareTaskExtensionSchema, HardwareTechStackExtensionSchema, HybridGraphSchema, ImplementationSchema, InputTypeSchema, JourneySchema, JourneyStepSchema, KnowledgeGraphSchema, LanguageConceptExtensionSchema, LearningModeSchema, LearningPathStepSchema, MathConceptExtensionSchema, MathTheoremSchema, MilestoneDecompositionSchema, MissingGapSchema, NavigationSchema, ProblemTypeSchema, ProductGoalSchema, ProductSchema, ProductUserSchema, ProjectConceptLinkSchema, ProjectGraphSchema, ProjectInfoSchema, RequirementSchema, ScienceConceptExtensionSchema, ScreenSchema, ShapeSchema, StepEffortSchema, StepOutcomeSchema, StepSchema, SubjectInfoSchema, TaskEffortSchema, TaskOutcomeSchema, TaskSchema, TechDebtSchema, TechStackSchema, ThreeDesignFeatureExtensionSchema, ThreeDesignTaskExtensionSchema, ThreeDesignTechStackExtensionSchema, UiStateSchema, WiringSchema };
585
+ //# sourceMappingURL=chunk-H4W3YJLK.mjs.map
586
+ //# sourceMappingURL=chunk-H4W3YJLK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schemas/projectGraphSchema.ts","../src/schemas/knowledgeGraphSchema.ts","../src/schemas/domainExtensions.ts","../src/schemas/hybridGraphSchema.ts","../src/schemas/domainProfileSchema.ts"],"names":["z"],"mappings":"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","file":"chunk-H4W3YJLK.mjs","sourcesContent":["import { z } from 'zod';\n\n// ─── Step (trong Feature) ────────────────────────────────────────────────────\nexport const StepEffortSchema = z.object({\n estimated_minutes: z.number().optional(),\n complexity: z.enum(['low', 'medium', 'high']).optional(),\n concepts_count: z.number().optional(),\n files_touched: z.number().optional(),\n});\n\nexport const StepOutcomeSchema = z.object({\n user_visible: z.string().optional(),\n technical: z.union([z.string(), z.array(z.string())]).optional(),\n});\n\nexport const StepSchema = z.object({\n id: z.string(),\n sequence: z.number(),\n name: z.string(),\n description: z.string().optional().default(''),\n files: z.array(z.string()).optional().default([]),\n api_usage: z.array(z.string()).optional().default([]),\n keywords: z.array(z.string()).optional().default([]),\n completion_level: z.enum(['base', 'mvp', 'extend', 'polish']).optional().default('mvp'),\n platform: z.string().optional().default('app'),\n intent: z.string().optional().default(''),\n outcome: StepOutcomeSchema.optional(),\n acceptance: z.array(z.string()).optional().default([]),\n effort: StepEffortSchema.optional(),\n requirement_ids: z.array(z.string()).optional().default([]),\n concept_codes: z.array(z.string()).optional().default([]),\n});\nexport type Step = z.infer<typeof StepSchema>;\n\n// ─── Feature ─────────────────────────────────────────────────────────────────\nexport const FeatureSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional().default(''),\n purpose: z.string().optional().default(''),\n priority: z.enum(['core', 'supporting', 'polish']).optional().default('core'),\n status: z.enum(['PLANNED', 'IMPLEMENTED', 'IN_PROGRESS']).optional().default('PLANNED'),\n platform: z.string().optional().default('app'),\n requirement_ids: z.array(z.string()).optional().default([]),\n journey_ids: z.array(z.string()).optional().default([]),\n depends_on: z.array(z.string()).optional().default([]),\n api_usage: z.array(z.string()).optional().default([]),\n steps: z.array(StepSchema).optional().default([]),\n});\nexport type Feature = z.infer<typeof FeatureSchema>;\n\n// ─── Journey ─────────────────────────────────────────────────────────────────\nexport const JourneyStepSchema = z.object({\n id: z.string(),\n name: z.string(),\n steps: z.array(z.string()).optional().default([]),\n requirement_ids: z.array(z.string()).optional().default([]),\n});\n\nexport const JourneySchema = z.object({\n id: z.string(),\n name: z.string(),\n steps: z.array(z.string()).optional().default([]),\n feature_ids: z.array(z.string()).optional().default([]),\n requirement_ids: z.array(z.string()).optional().default([]),\n});\n\n// ─── Requirement ─────────────────────────────────────────────────────────────\nexport const RequirementSchema = z.object({\n id: z.string(),\n statement: z.string(),\n priority: z.enum(['core', 'supporting', 'polish']).optional().default('core'),\n acceptance: z.array(z.string()).optional().default([]),\n completion_level: z.string().optional().default('base'),\n});\n\n// ─── Development Stage ───────────────────────────────────────────────────────\nexport const DevelopmentStageSchema = z.object({\n stage: z.string(),\n product_state: z.string().optional().default(''),\n need: z.array(z.string()).optional().default([]),\n learn: z.array(z.string()).optional().default([]),\n validation: z.string().optional().default(''),\n cross_feature_value: z.string().optional().default(''),\n temporary_approach: z.string().optional().default(''),\n});\n\n// ─── Product ─────────────────────────────────────────────────────────────────\nexport const ProductGoalSchema = z.object({\n id: z.string(),\n description: z.string(),\n});\n\nexport const ProductUserSchema = z.object({\n id: z.string(),\n goals: z.array(z.string()),\n});\n\nexport const ProductSchema = z.object({\n goals: z.array(ProductGoalSchema).optional().default([]),\n users: z.array(ProductUserSchema).optional().default([]),\n journeys: z.array(JourneySchema).optional().default([]),\n requirements: z.array(RequirementSchema).optional().default([]),\n development_stages: z.array(DevelopmentStageSchema).optional().default([]),\n purpose: z.string().optional().default(''),\n problem_statement: z.string().optional().default(''),\n primary_users: z.array(z.string()).optional().default([]),\n});\n\n// ─── Project ─────────────────────────────────────────────────────────────────\nexport const TechStackSchema = z.record(z.string(), z.array(z.string()));\n\nexport const ProjectInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n version: z.string().optional().default('0.1.0'),\n purpose: z.string().optional().default(''),\n project_type: z.string().optional().default('app'),\n platform: z.array(z.string()).optional().default([]),\n tech_stack: TechStackSchema.optional(),\n architecture: z.array(z.string()).optional().default([]),\n source: z.object({\n repository: z.string().optional().default(''),\n commit: z.string().optional().default(''),\n scan_dir: z.string().optional().default(''),\n }).optional(),\n});\n\n// ─── Capability ──────────────────────────────────────────────────────────────\nexport const CapabilitySchema = z.object({\n id: z.string(),\n feature_id: z.string(),\n purpose: z.string().optional().default(''),\n depends_on: z.array(z.string()).optional().default([]),\n produces: z.array(z.string()).optional().default([]),\n});\n\n// ─── Architecture ────────────────────────────────────────────────────────────\nexport const ArchNodeSchema = z.object({\n id: z.string(),\n type: z.string().optional().default('component'),\n custom_type: z.string().optional(),\n layer: z.string().optional().default('presentation'),\n responsibility: z.string().optional().default(''),\n depends_on: z.array(z.string()).optional().default([]),\n used_by: z.array(z.string()).optional().default([]),\n evidence_type: z.string().optional().default('INFERRED'),\n confidence: z.number().optional().default(0.5),\n});\n\nexport const ArchEdgeSchema = z.object({\n from: z.string(),\n to: z.string(),\n type: z.string().optional().default('USES'),\n});\n\nexport const ArchitectureDetailSchema = z.object({\n pattern: z.array(z.string()).optional().default([]),\n confidence: z.number().optional().default(0.5),\n evidence: z.array(z.string()).optional().default([]),\n nodes: z.array(ArchNodeSchema).optional().default([]),\n edges: z.array(ArchEdgeSchema).optional().default([]),\n});\n\n// ─── Experience ──────────────────────────────────────────────────────────────\nexport const ScreenSchema = z.object({\n id: z.string(),\n name: z.string().optional().default(''),\n purpose: z.string().optional().default(''),\n entry_point: z.boolean().optional().default(false),\n components: z.array(z.string()).optional().default([]),\n states: z.array(z.string()).optional().default([]),\n navigates_to: z.array(z.string()).optional().default([]),\n keywords: z.array(z.string()).optional().default([]),\n});\n\nexport const ExperienceComponentSchema = z.object({\n id: z.string(),\n type: z.string().optional().default('component'),\n purpose: z.string().optional().default(''),\n inputs: z.array(z.string()).optional().default([]),\n outputs: z.array(z.string()).optional().default([]),\n state: z.array(z.string()).optional().default([]),\n});\n\nexport const UiStateSchema = z.object({\n id: z.string(),\n owner: z.string().optional().default(''),\n triggered_by: z.array(z.string()).optional().default([]),\n transitions_to: z.array(z.string()).optional().default([]),\n});\n\nexport const NavigationSchema = z.object({\n from: z.string(),\n to: z.string(),\n trigger: z.string().optional().default(''),\n presentation: z.string().optional().default('push'),\n});\n\nexport const ExperienceSchema = z.object({\n screens: z.array(ScreenSchema).optional().default([]),\n components: z.array(ExperienceComponentSchema).optional().default([]),\n ui_states: z.array(UiStateSchema).optional().default([]),\n navigation: z.array(NavigationSchema).optional().default([]),\n});\n\n// ─── Data Integration ────────────────────────────────────────────────────────\nexport const DataIntegrationSchema = z.object({\n data_flows: z.array(z.any()).optional().default([]),\n models: z.array(z.any()).optional().default([]),\n integrations: z.array(z.any()).optional().default([]),\n persistence: z.array(z.any()).optional().default([]),\n});\n\n// ─── Implementation ──────────────────────────────────────────────────────────\nexport const TaskEffortSchema = z.object({\n concepts_count: z.number().optional().default(0),\n files_touched: z.number().optional().default(0),\n estimated_minutes: z.number().optional().default(0),\n});\n\nexport const TaskOutcomeSchema = z.object({\n user_visible: z.string().optional().default(''),\n technical: z.array(z.string()).optional().default([]),\n});\n\nexport const TaskSchema = z.object({\n id: z.string(),\n capability_id: z.string().optional().default(''),\n action: z.string(),\n modifies: z.array(z.string()).optional().default([]),\n creates: z.array(z.string()).optional().default([]),\n depends_on: z.array(z.string()).optional().default([]),\n acceptance: z.array(z.string()).optional().default([]),\n intent: z.string().optional().default(''),\n outcome: TaskOutcomeSchema.optional(),\n source_evidence: z.array(z.string()).optional().default([]),\n keywords: z.array(z.string()).optional().default([]),\n concurrency: z.array(z.string()).optional().default([]),\n effort: TaskEffortSchema.optional(),\n requirement_ids: z.array(z.string()).optional().default([]),\n});\n\nexport const ImplementationSchema = z.object({\n tasks: z.array(TaskSchema).optional().default([]),\n});\n\n// ─── Missing Gap & Tech Debt ─────────────────────────────────────────────────\nexport const MissingGapSchema = z.object({\n gap: z.string(),\n location: z.string().optional().default(''),\n suggested_lo: z.string().optional().default(''),\n});\n\nexport const TechDebtSchema = z.object({\n issue: z.string(),\n location: z.string().optional().default(''),\n severity: z.enum(['low', 'medium', 'high']).optional().default('medium'),\n});\n\n// ─── Decomposition ───────────────────────────────────────────────────────────\nexport const MilestoneDecompositionSchema = z.object({\n id: z.string(),\n phase: z.string().optional().default(''),\n name: z.string().optional().default(''),\n goal: z.string().optional().default(''),\n feature_ids: z.array(z.string()).optional().default([]),\n});\n\nexport const DecompositionSchema = z.object({\n milestones: z.array(MilestoneDecompositionSchema).optional().default([]),\n});\n\n// ─── Project Graph (Root) ────────────────────────────────────────────────────\nexport const ProjectGraphSchema = z.object({\n schema_version: z.literal(3).optional().default(3),\n project: ProjectInfoSchema,\n product: ProductSchema,\n features: z.array(FeatureSchema).optional().default([]),\n capabilities: z.array(CapabilitySchema).optional().default([]),\n architecture_detail: ArchitectureDetailSchema.optional(),\n experience: ExperienceSchema.optional(),\n data_integration: DataIntegrationSchema.optional(),\n implementation: ImplementationSchema,\n decomposition: DecompositionSchema.optional(),\n missing_gaps: z.array(MissingGapSchema).optional().default([]),\n tech_debt: z.array(TechDebtSchema).optional().default([]),\n});\n\nexport type ProjectGraph = z.infer<typeof ProjectGraphSchema>;\nexport type Product = z.infer<typeof ProductSchema>;\nexport type Capability = z.infer<typeof CapabilitySchema>;\nexport type ArchitectureDetail = z.infer<typeof ArchitectureDetailSchema>;\nexport type Experience = z.infer<typeof ExperienceSchema>;\nexport type DataIntegration = z.infer<typeof DataIntegrationSchema>;\nexport type Implementation = z.infer<typeof ImplementationSchema>;\nexport type Decomposition = z.infer<typeof DecompositionSchema>;\n","/**\n * Knowledge Graph Schema — for concept-driven learning domains\n * (Math, Science, Language, Arts, Research)\n *\n * Unlike ProjectGraph (product decomposition), KnowledgeGraph represents\n * concept decomposition with ULO/CIO/SIO levels and prerequisite chains.\n */\n\nimport { z } from 'zod';\n\n// ─── Problem Type ────────────────────────────────────────────────────────────\nexport const ProblemTypeSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional().default(''),\n bloom_level: z.enum(['Remember', 'Understand', 'Apply', 'Analyze', 'Evaluate', 'Create']).optional().default('Understand'),\n difficulty: z.enum(['easy', 'medium', 'hard']).optional().default('medium'),\n estimated_minutes: z.number().optional().default(10),\n examples: z.array(z.string()).optional().default([]),\n common_mistakes: z.array(z.string()).optional().default([]),\n});\nexport type ProblemType = z.infer<typeof ProblemTypeSchema>;\n\n// ─── Concept ─────────────────────────────────────────────────────────────────\nexport const ConceptSchema = z.object({\n id: z.string(),\n // Production-standard neutral code (UPPER_SNAKE_CASE, Naming Conventions v2.2).\n // After STEP_2_5 standardization this is either a knowledge-tree code\n // (standardized) or a provisional proposed code (tracked in the proposals\n // artifact for later merge).\n code: z.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),\n // Knowledge-tree provenance (STEP_2_5): standardized | proposed_new | unset\n standardization: z.enum(['standardized', 'proposed_new']).optional(),\n tree_code: z.string().optional().describe('Exact knowledge-tree CONCEPT code when standardization=standardized'),\n tree_prerequisites: z.array(z.string()).optional().default([]).describe('Knowledge-tree prerequisite concept codes (seed for prereq edges)'),\n name: z.string(),\n description: z.string().optional().default(''),\n category: z.string().optional().default(''),\n\n // ULO/CIO/SIO — technology-independent knowledge levels.\n // Text fields use the production clause \"The learner will be able to ...\".\n ulo: z.string().optional().default('').describe('WHAT + WHY: What is this concept? Why does it exist? What problem does it solve?'),\n ulo_code: z.string().optional().describe('ULO-[CONCEPT]-NN per Naming Conventions v2.2'),\n cio: z.string().optional().default('').describe('HOW: How does it solve the problem? What is the mechanism?'),\n cio_code: z.string().optional().describe('CIO-[CONCEPT]-NN-ACTION per Naming Conventions v2.2'),\n sio: z.array(z.string()).optional().default([]).describe('IMPLEMENTATION: Specific implementations in concrete technologies'),\n sio_codes: z.array(z.string()).optional().describe('SIO-[TECH]-[CONCEPT]-NN, one per sio item'),\n\n // Prerequisites and timing\n prerequisites: z.array(z.string()).optional().default([]).describe('Concept IDs that must be learned first'),\n estimated_minutes: z.number().optional().default(30),\n\n // Problem types associated with this concept\n problem_types: z.array(ProblemTypeSchema).optional().default([]),\n\n // Supporting materials\n techniques: z.array(z.string()).optional().default([]).describe('Methods, formulas, tools, procedures'),\n materials: z.array(z.string()).optional().default([]).describe('Physical materials needed (lab equipment, instruments)'),\n visual_aids: z.array(z.string()).optional().default([]).describe('Diagrams, images, animations needed'),\n common_mistakes: z.array(z.string()).optional().default([]).describe('Frequently confused ideas or errors'),\n\n // Metadata\n keywords: z.array(z.string()).optional().default([]).describe('Technology-specific keywords (SIO level)'),\n tech_stack: z.array(z.string()).optional().default([]).describe('Specific technologies if applicable'),\n});\nexport type Concept = z.infer<typeof ConceptSchema>;\n\n// ─── Category ────────────────────────────────────────────────────────────────\nexport const ConceptCategorySchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional().default(''),\n concept_ids: z.array(z.string()).optional().default([]),\n order: z.number().optional().default(0).describe('Teaching order within the subject'),\n});\nexport type ConceptCategory = z.infer<typeof ConceptCategorySchema>;\n\n// ─── Subject ─────────────────────────────────────────────────────────────────\nexport const SubjectInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional().default(''),\n domain: z.enum(['math', 'science', 'language', 'arts', 'research', 'business', 'other']).optional().default('other'),\n grade_band: z.tuple([z.number().int(), z.number().int()]).optional(),\n estimated_hours: z.number().optional().default(0),\n estimated_weeks: z.number().optional().default(0),\n syllabus_ref: z.string().optional().default('').describe('Reference to original syllabus/curriculum'),\n});\nexport type SubjectInfo = z.infer<typeof SubjectInfoSchema>;\n\n// ─── Learning Path ───────────────────────────────────────────────────────────\nexport const LearningPathStepSchema = z.object({\n concept_id: z.string(),\n order: z.number(),\n depends_on: z.array(z.string()).optional().default([]),\n milestone_name: z.string().optional().default(''),\n});\nexport type LearningPathStep = z.infer<typeof LearningPathStepSchema>;\n\n// ─── Knowledge Graph (Root) ──────────────────────────────────────────────────\nexport const KnowledgeGraphSchema = z.object({\n schema_version: z.literal(1).optional().default(1),\n type: z.literal('knowledge_graph').optional().default('knowledge_graph'),\n subject: SubjectInfoSchema,\n concepts: z.array(ConceptSchema).optional().default([]),\n categories: z.array(ConceptCategorySchema).optional().default([]),\n learning_path: z.array(LearningPathStepSchema).optional().default([]).describe('Recommended teaching order'),\n});\nexport type KnowledgeGraph = z.infer<typeof KnowledgeGraphSchema>;\n","/**\n * Domain-specific extensions for ProjectGraph and KnowledgeGraph.\n * These are overlay schemas that add domain-specific fields to the base graphs.\n */\n\nimport { z } from 'zod';\n\n// ─── Hardware/IoT Extension (Product-Driven) ─────────────────────────────────\n\nexport const WiringSchema = z.object({\n component: z.string(),\n pin: z.string(),\n connection: z.string(),\n wire_color: z.string().optional(),\n notes: z.string().optional(),\n});\n\nexport const HardwareStepSchema = z.object({\n action: z.string(),\n tool: z.string().optional(),\n safety_note: z.string().optional(),\n estimated_minutes: z.number().optional(),\n});\n\nexport const HardwareFeatureExtensionSchema = z.object({\n wiring: z.array(WiringSchema).optional().default([]),\n components_used: z.array(z.string()).optional().default([]),\n circuit_diagram_ref: z.string().optional(),\n});\n\nexport const HardwareTaskExtensionSchema = z.object({\n techniques: z.array(z.string()).optional().default([]).describe('soldering, breadboarding, debugging'),\n hardware_steps: z.array(HardwareStepSchema).optional().default([]),\n safety_notes: z.array(z.string()).optional().default([]),\n multimeter_readings: z.boolean().optional().default(false),\n});\n\nexport const HardwareTechStackExtensionSchema = z.object({\n materials: z.array(z.string()).optional().default([]).describe('Physical components: Arduino Uno, LED, Servo'),\n tools: z.array(z.string()).optional().default([]).describe('Arduino IDE, USB cable, Multimeter'),\n protocols: z.array(z.string()).optional().default([]).describe('I2C, PWM, SPI, UART'),\n pin_config: z.record(z.string(), z.string()).optional().default({}).describe('Pin assignments'),\n power_requirements: z.string().optional(),\n});\n\n// ─── 3D Design Extension (Product-Driven) ─────────────────────────────────────\n\nexport const ShapeSchema = z.object({\n id: z.string(),\n type: z.string().describe('Box, Cylinder, Sphere, Roof, Torus, Hole, etc.'),\n dimensions: z.string().describe('e.g. \"200x150x5mm\"'),\n position: z.string().describe('e.g. \"0,0,0\"'),\n color: z.string().optional(),\n rotation: z.string().optional(),\n});\n\nexport const ThreeDesignFeatureExtensionSchema = z.object({\n shapes: z.array(ShapeSchema).optional().default([]),\n assembly_order: z.array(z.string()).optional().default([]).describe('Shape IDs in assembly order'),\n group_operations: z.array(z.string()).optional().default([]).describe('Group/hole operations'),\n});\n\nexport const ThreeDesignTaskExtensionSchema = z.object({\n operations: z.array(z.string()).optional().default([]).describe('create, resize, position, group, align, hole'),\n dimensions: z.record(z.string(), z.string()).optional().default({}),\n shape_type: z.string().optional(),\n constraints: z.array(z.string()).optional().default([]),\n});\n\nexport const ThreeDesignTechStackExtensionSchema = z.object({\n design_software: z.string().optional().describe('Tinkercad, Fusion360, Blender'),\n units: z.string().optional().default('mm'),\n canvas_size: z.string().optional(),\n export_formats: z.array(z.string()).optional().default([]).describe('STL, OBJ, STEP'),\n});\n\n// ─── Math Extension (Concept-Driven) ──────────────────────────────────────────\n\nexport const MathTheoremSchema = z.object({\n name: z.string(),\n statement: z.string(),\n proof_outline: z.string().optional(),\n converse_statement: z.string().optional(),\n});\n\nexport const MathConceptExtensionSchema = z.object({\n formulas: z.array(z.string()).optional().default([]).describe('Mathematical formulas, e.g. a^2 + b^2 = c^2'),\n theorems: z.array(MathTheoremSchema).optional().default([]),\n constructions: z.array(z.string()).optional().default([]).describe('Compass and ruler constructions, auxiliary lines'),\n visual_aids: z.array(z.string()).optional().default([]).describe('Geometric figures, function graphs'),\n common_mistakes: z.array(z.string()).optional().default([]).describe('False intuitions or algebraic traps'),\n});\nexport type MathConceptExtension = z.infer<typeof MathConceptExtensionSchema>;\n\n// ─── Science Extension (Concept-Driven) ───────────────────────────────────────\n\nexport const ExperimentProcedureSchema = z.object({\n name: z.string(),\n apparatus: z.array(z.string()).optional().default([]),\n steps: z.array(z.string()).optional().default([]),\n safety_warnings: z.array(z.string()).optional().default([]),\n expected_observation: z.string().optional(),\n});\n\nexport const ScienceConceptExtensionSchema = z.object({\n experiments: z.array(ExperimentProcedureSchema).optional().default([]),\n instruments: z.array(z.string()).optional().default([]).describe('Lab equipment: microscope, beaker, sensor'),\n variables: z.object({\n independent: z.string().optional(),\n dependent: z.string().optional(),\n controlled: z.array(z.string()).optional().default([]),\n }).optional(),\n hypotheses: z.array(z.string()).optional().default([]),\n laws_and_theories: z.array(z.string()).optional().default([]),\n});\nexport type ScienceConceptExtension = z.infer<typeof ScienceConceptExtensionSchema>;\n\n// ─── Language & Humanities Extension (Concept-Driven) ─────────────────────────\n\nexport const GrammarRuleSchema = z.object({\n rule_name: z.string(),\n pattern: z.string(),\n example_correct: z.string(),\n example_incorrect: z.string().optional(),\n exceptions: z.array(z.string()).optional().default([]),\n});\n\nexport const LanguageConceptExtensionSchema = z.object({\n reading_genres: z.array(z.string()).optional().default([]).describe('argumentative, narrative, expository'),\n grammar_rules: z.array(GrammarRuleSchema).optional().default([]),\n writing_tasks: z.array(z.string()).optional().default([]),\n lexicon_keywords: z.array(z.string()).optional().default([]),\n rhetorical_devices: z.array(z.string()).optional().default([]),\n});\nexport type LanguageConceptExtension = z.infer<typeof LanguageConceptExtensionSchema>;\n","/**\n * Hybrid Graph Schema — for projects that combine product-driven and concept-driven learning.\n *\n * Example: \"Build an Arduino robot but need to understand electronics theory first\"\n * Links project_graph (what to build) with knowledge_graph (what to understand).\n */\n\nimport { z } from 'zod';\nimport { ProjectGraphSchema } from './projectGraphSchema';\nimport { KnowledgeGraphSchema } from './knowledgeGraphSchema';\n\n// ─── Link between Project and Knowledge ──────────────────────────────────────\nexport const ProjectConceptLinkSchema = z.object({\n feature_id: z.string().describe('Feature ID from project_graph'),\n concept_id: z.string().describe('Concept ID from knowledge_graph'),\n relationship: z.enum([\n 'requires', // Feature requires understanding this concept\n 'demonstrates', // Feature demonstrates this concept in practice\n 'applies', // Feature applies this concept\n 'extends', // Feature extends this concept to new context\n ]).optional().default('requires'),\n depth: z.enum([\n 'ulo', // Feature only needs WHAT+WHY understanding\n 'cio', // Feature needs HOW understanding\n 'sio', // Feature needs specific implementation knowledge\n ]).optional().default('cio'),\n description: z.string().optional().default(''),\n estimated_prereq_minutes: z.number().optional().default(0).describe('How many minutes of concept learning before this feature'),\n phase_id: z.string().optional().default('').describe('Development phase this link belongs to'),\n});\n\n// ─── Development Phase (progressive completion) ──────────────────────────────\nexport const ConceptIntroductionSchema = z.object({\n concept_id: z.string().describe('Concept ID from knowledge_graph'),\n aspect: z.enum(['new', 'advanced', 'preview']).default('new').describe(\n \"new = concept introduced for the first time; advanced = previously introduced concept revisited at higher depth; preview = light ULO awareness pass ('know it exists') placed at the consuming phase BEFORE the full introduction — the anchor phase still owns the full 'new' teach\"\n ),\n note: z.string().optional().default('').describe('Which advanced aspect of the concept this phase develops'),\n});\n\nexport const DevelopmentPhaseSchema = z.object({\n id: z.string().describe('Phase id, e.g. PH1'),\n order: z.number().int().positive().describe('1-based phase execution order'),\n name: z.string().min(1).describe('Short phase name'),\n product_completion: z.string().min(1).describe(\n 'What the product can demonstrably DO once this phase is complete (completion level description)'\n ),\n feature_ids: z.array(z.string()).default([]).describe('Every feature built during this phase (each feature in EXACTLY one phase)'),\n introduces: z.array(ConceptIntroductionSchema).default([]).describe(\n 'Concepts introduced (new) or revisited at advanced depth (advanced) at the start of this phase'\n ),\n});\n\n// ─── Hybrid Graph (Root) ─────────────────────────────────────────────────────\nexport const HybridGraphSchema = z.object({\n schema_version: z.literal(1).optional().default(1),\n type: z.literal('hybrid_graph').optional().default('hybrid_graph'),\n\n // Product decomposition (what to build)\n project_graph: ProjectGraphSchema,\n\n // Concept decomposition (what to understand)\n knowledge_graph: KnowledgeGraphSchema,\n\n // Links between features and concepts\n links: z.array(ProjectConceptLinkSchema).optional().default([]),\n\n // Progressive completion phases (cross-feature decomposition). Empty for\n // pre-phase legacy graphs — emitters fall back to feature ordering.\n phases: z.array(DevelopmentPhaseSchema).optional().default([]),\n\n // Metadata\n description: z.string().optional().default(''),\n // ── Minute totals (HG-1, 2026-10-05) ────────────────────────────────────\n // These three used to sit side by side with near-identical names and NO\n // documentation. Two measured DIFFERENT quantities, which is why the field\n // below was renamed: it does not measure \"the total\". Read before trusting\n // any of them.\n /** Minutes of PRODUCT work: sum over every feature step. */\n total_project_minutes: z.number().optional().default(0),\n /** Minutes of CONCEPT work: sum over EVERY concept in the graph. */\n total_concept_minutes: z.number().optional().default(0),\n /**\n * Renamed from `estimated_total_minutes` (2026-10-05) — the old name read\n * like \"the course total\" but the number is narrower:\n * total_project_minutes + (minutes of concepts that HAVE a feature link)\n * unlinked concepts are deliberately excluded, and per concept the MAXIMUM\n * link estimate wins, not the sum. Expect this to sit well BELOW\n * total_project_minutes + total_concept_minutes.\n *\n * The figure the phase planner actually commits to is\n * total_project_minutes + total_concept_minutes (see decomposePhases).\n */\n linked_prereq_minutes: z.number().optional().default(0),\n});\nexport type HybridGraph = z.infer<typeof HybridGraphSchema>;\nexport type ProjectConceptLink = z.infer<typeof ProjectConceptLinkSchema>;\nexport type DevelopmentPhase = z.infer<typeof DevelopmentPhaseSchema>;\nexport type ConceptIntroduction = z.infer<typeof ConceptIntroductionSchema>;\n","/**\n * Domain Profile Schema — output of domain detection.\n *\n * Determines:\n * 1. Input type (repository, description, syllabus, files, mixed)\n * 2. Domain category (software, hardware, math, science, etc.)\n * 3. Learning mode (product, concept, hybrid)\n * 4. Which graph type and pipeline to use\n */\n\nimport { z } from 'zod';\n\n// ─── Input Type ──────────────────────────────────────────────────────────────\nexport const InputTypeSchema = z.enum([\n 'repository', // Source code repo (git URL or local dir)\n 'description', // Text description of subject/project\n 'syllabus', // Syllabus, curriculum framework, textbook outline\n 'files', // Non-code files (3D models, images, documents)\n 'mixed', // Combination of the above\n]);\n\n// ─── Domain Category ─────────────────────────────────────────────────────────\nexport const DomainCategorySchema = z.enum([\n 'software', // App, web, API, CLI, library\n 'hardware_iot', // Arduino, robotics, ESP32, Raspberry Pi\n '3d_design', // Tinkercad, Fusion360, Blender, CAD\n 'math', // Hình học, đại số, giải tích, xác suất\n 'science', // Lý, hóa, sinh, địa lý\n 'language', // Tiếng Việt, English, writing, grammar\n 'arts', // Âm nhạc, hội họa, thiết kế, nhiếp ảnh\n 'research', // Nghiên cứu, thống kê, phân tích dữ liệu\n 'business', // Kinh doanh, tài chính, quản lý\n 'other',\n]);\n\n// ─── Learning Mode ───────────────────────────────────────────────────────────\nexport const LearningModeSchema = z.enum([\n 'product', // Build a product (project-driven)\n 'concept', // Understand concepts (knowledge-driven)\n 'hybrid', // Both: build product while understanding concepts\n]);\n\n// ─── Graph Type ──────────────────────────────────────────────────────────────\nexport const GraphTypeSchema = z.enum([\n 'project_graph', // Product decomposition (software, hardware, 3d_design)\n 'knowledge_graph', // Concept decomposition (math, science, language, etc.)\n 'hybrid_graph', // Both linked together\n]);\n\n// ─── Confidence ──────────────────────────────────────────────────────────────\nexport const DetectionConfidenceSchema = z.object({\n inputType: z.number().min(0).max(1).optional().default(0.5),\n domainCategory: z.number().min(0).max(1).optional().default(0.5),\n learningMode: z.number().min(0).max(1).optional().default(0.5),\n});\n\n// ─── Ambiguous Detection ─────────────────────────────────────────────────────\nexport const AmbiguousDomainSchema = z.object({\n domain1: DomainCategorySchema,\n domain2: DomainCategorySchema,\n reason: z.string(),\n});\nexport type AmbiguousDomain = z.infer<typeof AmbiguousDomainSchema>;\n\n// ─── Domain Profile (Root) ───────────────────────────────────────────────────\nexport const DomainProfileSchema = z.object({\n // Detection results\n inputType: InputTypeSchema,\n domainCategory: DomainCategorySchema,\n learningMode: LearningModeSchema,\n graphType: GraphTypeSchema,\n\n // Confidence scores\n confidence: DetectionConfidenceSchema.optional(),\n\n // Ambiguity flag when detection is borderline or context-conflicted\n ambiguous: AmbiguousDomainSchema.optional(),\n\n // Evidence for detection decisions\n evidence: z.array(z.string()).optional().default([]),\n\n // Detected metadata (optional, populated during detection)\n detectedTechStack: z.array(z.string()).optional().default([]),\n detectedSubject: z.string().optional().default(''),\n detectedGradeBand: z.tuple([z.number().int(), z.number().int()]).optional(),\n detectedDomain: z.string().optional().default(''),\n\n // User-provided context (pass-through)\n goal: z.string().optional().default(''),\n description: z.string().optional().default(''),\n repoUrl: z.string().optional().default(''),\n repoDir: z.string().optional().default(''),\n syllabusText: z.string().optional().default(''),\n});\nexport type DomainProfile = z.infer<typeof DomainProfileSchema>;\nexport type InputType = z.infer<typeof InputTypeSchema>;\nexport type DomainCategory = z.infer<typeof DomainCategorySchema>;\nexport type LearningMode = z.infer<typeof LearningModeSchema>;\nexport type GraphType = z.infer<typeof GraphTypeSchema>;\n"]}
@@ -0,0 +1,14 @@
1
+ // src/utils/llmTransportResult.ts
2
+ function transportResultFrom(provider, model, options) {
3
+ return {
4
+ provider,
5
+ model,
6
+ framingStripped: !!options?.framingStripped,
7
+ upstreamError: options?.upstreamError,
8
+ usage: options?.usage
9
+ };
10
+ }
11
+
12
+ export { transportResultFrom };
13
+ //# sourceMappingURL=chunk-IBVXXVGE.mjs.map
14
+ //# sourceMappingURL=chunk-IBVXXVGE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/llmTransportResult.ts"],"names":[],"mappings":";AA8BO,SAAS,mBAAA,CACd,QAAA,EACA,KAAA,EACA,OAAA,EAKoB;AACpB,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA,EAAiB,CAAC,CAAC,OAAA,EAAS,eAAA;AAAA,IAC5B,eAAe,OAAA,EAAS,aAAA;AAAA,IACxB,OAAO,OAAA,EAAS;AAAA,GAClB;AACF","file":"chunk-IBVXXVGE.mjs","sourcesContent":["/**\n * Single source of truth for ONE LLM response through the kit.\n *\n * Every `LlmClient.chat` return path attaches one of these so downstream\n * code inspects the ACTUAL resolved provider/model and framing flags instead\n * of trusting the static client.model card. This is the contract behind the\n * \"no silent cross-gateway rerouting\" policy: each response carries its own\n * provenance and framing metadata.\n */\nexport interface LlmTransportResult {\n /** Provider label that actually served this response (e.g. '9router'). */\n provider: string;\n /** Exact model string sent to and returned by that provider. */\n model: string;\n /** True when the response body was stripped of 9router SSE framing. */\n framingStripped: boolean;\n /** When present, the upstream returned an error envelope inside HTTP 200. */\n upstreamError?: string;\n /** When present, usage record attached to the response. */\n usage?: {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n finishReason?: string;\n };\n}\n\n/**\n * Build the transport result that accompanies a successful chat completion.\n */\nexport function transportResultFrom(\n provider: string,\n model: string,\n options?: {\n framingStripped?: boolean;\n upstreamError?: string;\n usage?: LlmTransportResult['usage'];\n },\n): LlmTransportResult {\n return {\n provider,\n model,\n framingStripped: !!options?.framingStripped,\n upstreamError: options?.upstreamError,\n usage: options?.usage,\n };\n}\n"]}
@@ -1,21 +1,22 @@
1
- import { emitCurriculumFeed } from './chunk-TWKIVUTQ.mjs';
2
- import { parseSwiftFile, parseTsFile, parsePythonFile, parseCppFile, mergeSwiftResults, mergeTsResults, mergePythonResults, mergeCppResults } from './chunk-DRVOV5ZD.mjs';
3
- import { extractKeywords } from './chunk-XMHKWHVK.mjs';
4
- import { detectDomainProfile } from './chunk-BL5NBKPH.mjs';
5
- import { extractScaffold, extractProjectOverview, extractFeatureStepsBatched, extractFeatureSteps, verifyProjectGraph, escalateAndMapConcepts, generateKnowledgeGraph, generateHybridGraph, createLlmClient, llmChatJson } from './chunk-TYXSJUQU.mjs';
6
- import { parseSyllabus } from './chunk-T4Y2DE2W.mjs';
7
1
  import { resolveConcepts } from './chunk-KNDBODUQ.mjs';
8
2
  import { assembleRoadmap } from './chunk-ONQHJ4OH.mjs';
3
+ import { emitCurriculumFeed } from './chunk-WKTH3JPA.mjs';
4
+ import { parseSwiftFile, parseTsFile, parsePythonFile, parseCppFile, mergeSwiftResults, mergeTsResults, mergePythonResults, mergeCppResults } from './chunk-DSEJLTUO.mjs';
5
+ import { extractKeywords } from './chunk-XMHKWHVK.mjs';
6
+ import { detectDomainProfile } from './chunk-WD3P5V3B.mjs';
7
+ import { extractScaffold, extractProjectOverview, extractFeatureStepsBatched, extractFeatureSteps, verifyProjectGraph, escalateAndMapConcepts, generateKnowledgeGraph, generateHybridGraph } from './chunk-4UCXYRM3.mjs';
8
+ import { createLlmClient, llmChatJson, summarizeProvenance } from './chunk-7A2SG466.mjs';
9
+ import { parseSyllabus } from './chunk-T4Y2DE2W.mjs';
9
10
  import { readFileSync, readdirSync } from 'fs';
10
11
  import { relative, join, extname } from 'path';
11
12
  import { execSync } from 'child_process';
12
13
 
13
14
  // src/extractors/fileSelector.ts
14
- async function selectFilesWithLlm(filePaths, goal, techStack, llmConfig) {
15
+ async function selectFilesWithLlm(filePaths, goal, techStack, llmConfig, sharedClient) {
15
16
  if (filePaths.length <= 15) {
16
17
  return { selected: filePaths, reasoning: "Too few files to filter" };
17
18
  }
18
- const client = createLlmClient(llmConfig);
19
+ const client = sharedClient ?? createLlmClient(llmConfig);
19
20
  const treeLines = buildFileTree(filePaths);
20
21
  const systemPrompt = 'You are a software architect analyzing a project repository.\nGiven a file tree and a project goal, select which files are MOST IMPORTANT to read for understanding the project architecture and implementation.\n\nRULES:\n1. Prioritize source code files (Swift, TS, Python, C++) over config/docs\n2. Include entry points (App.swift, main.py, index.ts)\n3. Include core domain files (models, services, views, controllers)\n4. EXCLUDE test files, mock files, generated files\n5. EXCLUDE config files (package.json, Podfile, etc.) unless they reveal architecture\n6. Include files that directly implement the features mentioned in the goal\n7. Return 20-40 files maximum (fewer is better if the project is small)\n\nReturn JSON: {"selected": ["path/to/file1", "path/to/file2"], "reasoning": "brief explanation"}';
21
22
  const userPrompt = `Project goal: ${goal}
@@ -177,6 +178,7 @@ function detectPrimaryLanguage(filePaths) {
177
178
  }
178
179
  async function runProjectGraphPipeline(options) {
179
180
  const { repoDir, goal, techStack, llmConfig, embeddings, onProgress } = options;
181
+ const client = createLlmClient(llmConfig);
180
182
  const log = (step, msg) => {
181
183
  console.log(`[${step}] ${msg}`);
182
184
  onProgress?.(step, msg);
@@ -190,7 +192,8 @@ async function runProjectGraphPipeline(options) {
190
192
  allRelPaths,
191
193
  goal,
192
194
  techStack,
193
- llmConfig
195
+ llmConfig,
196
+ client
194
197
  );
195
198
  log("STEP_1", `LLM selected ${selectedPaths.length}/${allRelPaths.length} files: ${reasoning.slice(0, 100)}`);
196
199
  log("STEP_1", "Reading content for selected files...");
@@ -198,7 +201,7 @@ async function runProjectGraphPipeline(options) {
198
201
  const filePaths = selectedPaths;
199
202
  const primaryLang = detectPrimaryLanguage(filePaths);
200
203
  log("STEP_1", `Primary language: ${primaryLang}, ${filePaths.length} files loaded (${fileContentsMap.size} with content)`);
201
- log("STEP_1", "Parsing source files with AST-level analysis...");
204
+ log("STEP_1", "Parsing source files with regex-based scan (no AST library)...");
202
205
  const allParseResults = [];
203
206
  for (const [relPath, content] of fileContentsMap) {
204
207
  const fullPath = relPath;
@@ -222,7 +225,7 @@ async function runProjectGraphPipeline(options) {
222
225
  } else {
223
226
  mergedContext = mergeCppResults(allParseResults.filter((r) => "error_handling" in r && !("docstrings" in r) && !("property_wrappers" in r)));
224
227
  }
225
- log("STEP_2", "Extracting keywords from AST analysis...");
228
+ log("STEP_2", "Extracting keywords from regex-based source scan...");
226
229
  const astKeywords = extractKeywords(mergedContext);
227
230
  log("STEP_2", `Extracted ${astKeywords.length} keywords`);
228
231
  log("STEP_3", "Building SDK API index...");
@@ -239,7 +242,8 @@ async function runProjectGraphPipeline(options) {
239
242
  goal,
240
243
  techStack,
241
244
  fileList: filePaths,
242
- llmConfig
245
+ llmConfig,
246
+ sharedClient: client
243
247
  });
244
248
  log("STEP_4_C1", "Extracting project overview (features meta)...");
245
249
  const overview = await extractProjectOverview({
@@ -248,7 +252,8 @@ async function runProjectGraphPipeline(options) {
248
252
  sdkApiIndex,
249
253
  fileContentsMap,
250
254
  astKeywords,
251
- llmConfig
255
+ llmConfig,
256
+ sharedClient: client
252
257
  });
253
258
  const product = overview.product;
254
259
  const pblStep = {
@@ -301,7 +306,8 @@ async function runProjectGraphPipeline(options) {
301
306
  sdkApiIndex,
302
307
  fileContentsMap,
303
308
  nonF0Features,
304
- llmConfig
309
+ llmConfig,
310
+ client
305
311
  );
306
312
  for (const feature of nonF0Features) {
307
313
  const steps = batchedSteps.get(feature.id || "");
@@ -317,7 +323,8 @@ async function runProjectGraphPipeline(options) {
317
323
  sdkApiIndex,
318
324
  fileContentsMap,
319
325
  feature,
320
- llmConfig
326
+ llmConfig,
327
+ sharedClient: client
321
328
  });
322
329
  feature.steps = steps;
323
330
  } catch (e) {
@@ -371,7 +378,8 @@ async function runProjectGraphPipeline(options) {
371
378
  const featureConcepts = await escalateAndMapConcepts({
372
379
  projectGraph: verifiedGraph,
373
380
  fileContentsMap,
374
- llmConfig
381
+ llmConfig,
382
+ sharedClient: client
375
383
  });
376
384
  log("STEP_6", `Concept mapping complete: ${featureConcepts.size} features mapped`);
377
385
  for (const feature of verifiedGraph.features || []) {
@@ -440,10 +448,20 @@ async function runProjectGraphPipeline(options) {
440
448
  roadmap,
441
449
  hallucinations,
442
450
  keywords: astKeywords,
443
- featureConcepts
451
+ featureConcepts,
452
+ provenance: client.callLog
444
453
  };
445
454
  }
446
455
 
456
+ // src/pipeline/emitFeed.ts
457
+ function emitNormalizedFeed(req) {
458
+ return emitCurriculumFeed(req.graph, {
459
+ warnings: req.warnings,
460
+ hallucinationCount: req.hallucinationCount,
461
+ provenance: req.provenance ? summarizeProvenance(req.provenance) : void 0
462
+ });
463
+ }
464
+
447
465
  // src/pipeline/knowledgeGraphPipeline.ts
448
466
  async function runKnowledgeGraphPipeline(options) {
449
467
  const warnings = [];
@@ -464,8 +482,10 @@ async function runKnowledgeGraphPipeline(options) {
464
482
  parsedSyllabus
465
483
  });
466
484
  warnings.push(...result.warnings);
467
- const curriculumFeed = emitCurriculumFeed(result.knowledgeGraph, {
468
- warnings
485
+ const curriculumFeed = emitNormalizedFeed({
486
+ graph: result.knowledgeGraph,
487
+ warnings,
488
+ provenance: result.provenance
469
489
  });
470
490
  return {
471
491
  knowledgeGraph: result.knowledgeGraph,
@@ -481,8 +501,10 @@ async function runHybridGraphPipeline(options) {
481
501
  const warnings = [];
482
502
  const result = await generateHybridGraph(options);
483
503
  warnings.push(...result.warnings);
484
- const curriculumFeed = emitCurriculumFeed(result.hybridGraph, {
485
- warnings
504
+ const curriculumFeed = emitNormalizedFeed({
505
+ graph: result.hybridGraph,
506
+ warnings,
507
+ provenance: result.provenance
486
508
  });
487
509
  return {
488
510
  hybridGraph: result.hybridGraph,
@@ -528,11 +550,14 @@ async function runDomainPipeline(options) {
528
550
  }
529
551
  if (effectiveMode === "hybrid") {
530
552
  log("LAYER_3", "Executing Hybrid Graph Pipeline...");
553
+ if (!options.repoDir && options.forcedLearningMode === "hybrid") {
554
+ throw new Error('forcedLearningMode "hybrid" requires repoDir \u2014 refusing to silently degrade to a concept-only feed (fail-closed)');
555
+ }
531
556
  if (options.repoDir) {
532
557
  const projectResult2 = await runProjectGraphPipeline({
533
558
  repoDir: options.repoDir,
534
559
  goal: options.goal || "Build complete project",
535
- techStack: options.techStack || "typescript",
560
+ techStack: options.techStack || domainProfile.detectedTechStack?.[0] || "typescript",
536
561
  llmConfig: options.llmConfig,
537
562
  embeddings: options.embeddings,
538
563
  onProgress: options.onProgress
@@ -542,10 +567,13 @@ async function runDomainPipeline(options) {
542
567
  description: options.description,
543
568
  syllabusText: options.syllabusText,
544
569
  parsedSyllabus: options.parsedSyllabus,
570
+ gradeBand: options.gradeBand,
545
571
  domain: domainProfile.domainCategory,
546
- techStack: options.techStack,
572
+ techStack: options.techStack || domainProfile.detectedTechStack?.[0],
547
573
  llmConfig: options.llmConfig,
548
- onProgress: options.onProgress
574
+ onProgress: options.onProgress,
575
+ knowledgeTreePath: options.knowledgeTreePath,
576
+ proposalsPath: options.proposalsPath
549
577
  });
550
578
  const hybridResult = await runHybridGraphPipeline({
551
579
  projectGraph: projectResult2.projectGraph,
@@ -564,16 +592,20 @@ async function runDomainPipeline(options) {
564
592
  warnings
565
593
  };
566
594
  } else {
567
- warnings.push("Hybrid learning mode requested but repoDir was not provided \u2014 falling back to concept-driven knowledge graph pipeline");
595
+ const downgradeReason = "Hybrid learning mode requested but repoDir was not provided \u2014 falling back to concept-driven knowledge graph pipeline";
596
+ warnings.push(downgradeReason);
568
597
  const knowledgeResult = await runKnowledgeGraphPipeline({
569
598
  subject: options.subject || domainProfile.detectedSubject || options.goal || "Subject Theory",
570
599
  description: options.description,
571
600
  syllabusText: options.syllabusText,
572
601
  parsedSyllabus: options.parsedSyllabus,
602
+ gradeBand: options.gradeBand,
573
603
  domain: domainProfile.domainCategory,
574
- techStack: options.techStack,
604
+ techStack: options.techStack || domainProfile.detectedTechStack?.[0],
575
605
  llmConfig: options.llmConfig,
576
- onProgress: options.onProgress
606
+ onProgress: options.onProgress,
607
+ knowledgeTreePath: options.knowledgeTreePath,
608
+ proposalsPath: options.proposalsPath
577
609
  });
578
610
  warnings.push(...knowledgeResult.warnings);
579
611
  return {
@@ -581,7 +613,8 @@ async function runDomainPipeline(options) {
581
613
  graphType: "knowledge_graph",
582
614
  curriculumFeed: knowledgeResult.curriculumFeed,
583
615
  knowledgeResult,
584
- warnings
616
+ warnings,
617
+ modeDowngrade: { from: "hybrid_graph", to: "knowledge_graph", reason: downgradeReason }
585
618
  };
586
619
  }
587
620
  }
@@ -597,9 +630,11 @@ async function runDomainPipeline(options) {
597
630
  embeddings: options.embeddings,
598
631
  onProgress: options.onProgress
599
632
  });
600
- const { emitCurriculumFeed: emitCurriculumFeed2 } = await import('./curriculumFeedEmitter-T7NUBLAM.mjs');
601
- const curriculumFeed = emitCurriculumFeed2(projectResult.projectGraph, {
602
- warnings
633
+ const curriculumFeed = emitNormalizedFeed({
634
+ graph: projectResult.projectGraph,
635
+ warnings,
636
+ hallucinationCount: projectResult.hallucinations.length,
637
+ provenance: projectResult.provenance
603
638
  });
604
639
  return {
605
640
  domainProfile,
@@ -611,5 +646,5 @@ async function runDomainPipeline(options) {
611
646
  }
612
647
 
613
648
  export { runDomainPipeline, runHybridGraphPipeline, runKnowledgeGraphPipeline, runProjectGraphPipeline };
614
- //# sourceMappingURL=chunk-G7HLFMD2.mjs.map
615
- //# sourceMappingURL=chunk-G7HLFMD2.mjs.map
649
+ //# sourceMappingURL=chunk-KHCZYLKM.mjs.map
650
+ //# sourceMappingURL=chunk-KHCZYLKM.mjs.map