@tiangong-lca/cli 0.0.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 (96) hide show
  1. package/README.md +368 -0
  2. package/bin/tiangong.d.ts +1 -0
  3. package/bin/tiangong.js +32 -0
  4. package/dist/scripts/assert-full-coverage.js +77 -0
  5. package/dist/scripts/assert-full-coverage.js.map +1 -0
  6. package/dist/src/cli.js +2740 -0
  7. package/dist/src/cli.js.map +1 -0
  8. package/dist/src/lib/artifacts.js +86 -0
  9. package/dist/src/lib/artifacts.js.map +1 -0
  10. package/dist/src/lib/dotenv.js +36 -0
  11. package/dist/src/lib/dotenv.js.map +1 -0
  12. package/dist/src/lib/env.js +139 -0
  13. package/dist/src/lib/env.js.map +1 -0
  14. package/dist/src/lib/errors.js +38 -0
  15. package/dist/src/lib/errors.js.map +1 -0
  16. package/dist/src/lib/flow-build-alias-map.js +299 -0
  17. package/dist/src/lib/flow-build-alias-map.js.map +1 -0
  18. package/dist/src/lib/flow-get.js +81 -0
  19. package/dist/src/lib/flow-get.js.map +1 -0
  20. package/dist/src/lib/flow-governance.js +164 -0
  21. package/dist/src/lib/flow-governance.js.map +1 -0
  22. package/dist/src/lib/flow-list.js +187 -0
  23. package/dist/src/lib/flow-list.js.map +1 -0
  24. package/dist/src/lib/flow-publish-reviewed-data.js +808 -0
  25. package/dist/src/lib/flow-publish-reviewed-data.js.map +1 -0
  26. package/dist/src/lib/flow-publish-version.js +541 -0
  27. package/dist/src/lib/flow-publish-version.js.map +1 -0
  28. package/dist/src/lib/flow-read.js +310 -0
  29. package/dist/src/lib/flow-read.js.map +1 -0
  30. package/dist/src/lib/flow-regen-product.js +1396 -0
  31. package/dist/src/lib/flow-regen-product.js.map +1 -0
  32. package/dist/src/lib/flow-remediate.js +821 -0
  33. package/dist/src/lib/flow-remediate.js.map +1 -0
  34. package/dist/src/lib/http.js +45 -0
  35. package/dist/src/lib/http.js.map +1 -0
  36. package/dist/src/lib/io.js +30 -0
  37. package/dist/src/lib/io.js.map +1 -0
  38. package/dist/src/lib/kb-search.js +83 -0
  39. package/dist/src/lib/kb-search.js.map +1 -0
  40. package/dist/src/lib/lifecyclemodel-auto-build.js +1328 -0
  41. package/dist/src/lib/lifecyclemodel-auto-build.js.map +1 -0
  42. package/dist/src/lib/lifecyclemodel-orchestrate.js +1556 -0
  43. package/dist/src/lib/lifecyclemodel-orchestrate.js.map +1 -0
  44. package/dist/src/lib/lifecyclemodel-publish-build.js +296 -0
  45. package/dist/src/lib/lifecyclemodel-publish-build.js.map +1 -0
  46. package/dist/src/lib/lifecyclemodel-publish-resulting-process.js +101 -0
  47. package/dist/src/lib/lifecyclemodel-publish-resulting-process.js.map +1 -0
  48. package/dist/src/lib/lifecyclemodel-resulting-process.js +1152 -0
  49. package/dist/src/lib/lifecyclemodel-resulting-process.js.map +1 -0
  50. package/dist/src/lib/lifecyclemodel-validate-build.js +238 -0
  51. package/dist/src/lib/lifecyclemodel-validate-build.js.map +1 -0
  52. package/dist/src/lib/llm.js +383 -0
  53. package/dist/src/lib/llm.js.map +1 -0
  54. package/dist/src/lib/process-auto-build.js +717 -0
  55. package/dist/src/lib/process-auto-build.js.map +1 -0
  56. package/dist/src/lib/process-batch-build.js +409 -0
  57. package/dist/src/lib/process-batch-build.js.map +1 -0
  58. package/dist/src/lib/process-get.js +66 -0
  59. package/dist/src/lib/process-get.js.map +1 -0
  60. package/dist/src/lib/process-publish-build.js +451 -0
  61. package/dist/src/lib/process-publish-build.js.map +1 -0
  62. package/dist/src/lib/process-resume-build.js +364 -0
  63. package/dist/src/lib/process-resume-build.js.map +1 -0
  64. package/dist/src/lib/publish.js +562 -0
  65. package/dist/src/lib/publish.js.map +1 -0
  66. package/dist/src/lib/remote.js +88 -0
  67. package/dist/src/lib/remote.js.map +1 -0
  68. package/dist/src/lib/review-flow.js +1110 -0
  69. package/dist/src/lib/review-flow.js.map +1 -0
  70. package/dist/src/lib/review-lifecyclemodel.js +727 -0
  71. package/dist/src/lib/review-lifecyclemodel.js.map +1 -0
  72. package/dist/src/lib/review-process.js +702 -0
  73. package/dist/src/lib/review-process.js.map +1 -0
  74. package/dist/src/lib/run.js +106 -0
  75. package/dist/src/lib/run.js.map +1 -0
  76. package/dist/src/lib/state-lock.js +150 -0
  77. package/dist/src/lib/state-lock.js.map +1 -0
  78. package/dist/src/lib/supabase-client.js +269 -0
  79. package/dist/src/lib/supabase-client.js.map +1 -0
  80. package/dist/src/lib/supabase-json-ordered-write.js +186 -0
  81. package/dist/src/lib/supabase-json-ordered-write.js.map +1 -0
  82. package/dist/src/lib/supabase-rest.js +138 -0
  83. package/dist/src/lib/supabase-rest.js.map +1 -0
  84. package/dist/src/lib/supabase-session.js +424 -0
  85. package/dist/src/lib/supabase-session.js.map +1 -0
  86. package/dist/src/lib/tidas-sdk-package-validator.js +493 -0
  87. package/dist/src/lib/tidas-sdk-package-validator.js.map +1 -0
  88. package/dist/src/lib/unstructured.js +203 -0
  89. package/dist/src/lib/unstructured.js.map +1 -0
  90. package/dist/src/lib/user-api-key.js +75 -0
  91. package/dist/src/lib/user-api-key.js.map +1 -0
  92. package/dist/src/lib/validation.js +191 -0
  93. package/dist/src/lib/validation.js.map +1 -0
  94. package/dist/src/main.js +38 -0
  95. package/dist/src/main.js.map +1 -0
  96. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecyclemodel-orchestrate.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-orchestrate.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, readdirSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { readJsonArtifact, writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport { readJsonInput } from './io.js';\nimport {\n runLifecyclemodelAutoBuild,\n type LifecyclemodelAutoBuildReport,\n} from './lifecyclemodel-auto-build.js';\nimport {\n runLifecyclemodelBuildResultingProcess,\n type LifecyclemodelResultingProcessReport,\n} from './lifecyclemodel-resulting-process.js';\nimport { runProcessAutoBuild, type ProcessAutoBuildReport } from './process-auto-build.js';\n\ntype JsonRecord = Record<string, unknown>;\n\ntype OrchestrateAction = 'plan' | 'execute' | 'publish';\ntype NodeKind = 'reference_flow' | 'process' | 'lifecyclemodel' | 'resulting_process' | 'subsystem';\ntype RequestedAction =\n | 'auto'\n | 'reuse_existing_resulting_process'\n | 'reuse_existing_process'\n | 'reuse_existing_model'\n | 'build_process'\n | 'build_submodel'\n | 'cutoff'\n | 'unresolved';\ntype Resolution =\n | 'unresolved'\n | 'cutoff'\n | 'reused_existing_resulting_process'\n | 'reused_existing_process'\n | 'reused_existing_model'\n | 'build_via_process_automated_builder'\n | 'build_via_lifecyclemodel_automated_builder';\ntype InvocationKind = 'process_builder' | 'lifecyclemodel_builder' | 'projector';\ntype InvocationStatus =\n | 'success'\n | 'failed'\n | 'skipped_due_to_fail_fast'\n | 'skipped_due_to_dependency_failed'\n | 'skipped_due_to_dependency_skipped_due_to_fail_fast'\n | 'skipped_due_to_dependency_skipped_due_to_dependency_failed';\n\ntype Candidate = JsonRecord & {\n id: string;\n score: number;\n};\n\ntype ProcessBuilderConfig = {\n flow_file: string | null;\n flow_json: unknown;\n run_id: string | null;\n publish: boolean;\n commit: boolean;\n forward_args: string[];\n};\n\ntype SubmodelBuilderConfig = {\n manifest: string | null;\n out_dir: string | null;\n dry_run: boolean;\n};\n\ntype ProjectorConfig = {\n command: 'prepare' | 'build' | 'project';\n request: string | null;\n model_file: string | null;\n out_dir: string | null;\n projection_role: 'primary' | 'all';\n run_always: boolean;\n publish_processes: boolean;\n publish_relations: boolean;\n};\n\ntype OrchestrateNode = {\n node_id: string;\n kind: NodeKind;\n label: string;\n entity: JsonRecord;\n requested_action: RequestedAction;\n depends_on: string[];\n parent_node_id: string | null;\n existing_resulting_process_candidates: Candidate[];\n existing_process_candidates: Candidate[];\n existing_lifecyclemodel_candidates: Candidate[];\n process_builder?: ProcessBuilderConfig;\n submodel_builder?: SubmodelBuilderConfig;\n projector?: ProjectorConfig;\n resolution?: Resolution;\n resolution_reason?: string;\n selected_candidate?: Candidate | null;\n boundary_reason?: string | null;\n planned_invocations: string[];\n};\n\ntype PlanInvocation = {\n invocation_id: string;\n node_id: string;\n kind: InvocationKind;\n config: JsonRecord;\n artifact_dir: string;\n depends_on_invocation_id?: string;\n last_status?: InvocationStatus;\n last_exit_code?: number | null;\n last_result_file?: string | null;\n artifacts?: JsonRecord;\n};\n\ntype NormalizedPublishConfig = {\n intent: 'dry_run' | 'prepare_only' | 'publish';\n prepare_lifecyclemodel_payload: boolean;\n prepare_resulting_process_payload: boolean;\n prepare_relation_payload: boolean;\n};\n\ntype ExecutionSummary = {\n executed_at: string;\n successful_invocations: number;\n failed_invocations: number;\n blocked_invocations: number;\n status: 'completed' | 'failed';\n};\n\ntype AssemblyPlan = {\n skill: 'lifecyclemodel-recursive-orchestrator';\n request_id: string;\n created_at: string;\n request_file: string;\n goal: JsonRecord;\n root: JsonRecord;\n orchestration: JsonRecord;\n candidate_sources: JsonRecord;\n publish: NormalizedPublishConfig;\n notes: string[];\n nodes: OrchestrateNode[];\n edges: Array<{ from: string; to: string; relation: string }>;\n invocations: PlanInvocation[];\n planner_summary: {\n status: 'planned' | 'executed';\n message: string;\n };\n warnings: string[];\n unresolved: Array<{ node_id: string; label: string; reason: string }>;\n boundaries: Array<{ node_id: string; reason: string }>;\n artifacts: {\n root: string;\n request_normalized: string;\n assembly_plan: string;\n graph_manifest: string;\n lineage_manifest: string;\n boundary_report: string;\n invocations_dir: string;\n publish_bundle: string;\n publish_summary: string;\n };\n summary: {\n node_count: number;\n edge_count: number;\n invocation_count: number;\n unresolved_count: number;\n };\n execution_summary?: ExecutionSummary;\n};\n\ntype InvocationExecutionResult = {\n invocation_id: string;\n node_id: string;\n kind: InvocationKind;\n status: InvocationStatus;\n exit_code: number | null;\n result_file: string;\n planned_artifacts?: JsonRecord;\n artifacts?: JsonRecord;\n error?: string;\n dry_run?: boolean;\n};\n\ntype GraphManifest = {\n root: JsonRecord;\n nodes: JsonRecord[];\n edges: JsonRecord[];\n boundaries: JsonRecord[];\n unresolved: JsonRecord[];\n stats: JsonRecord;\n};\n\ntype LineageManifest = {\n root_request: JsonRecord;\n builder_invocations: JsonRecord[];\n node_resolution_log: JsonRecord[];\n published_dependencies: JsonRecord[];\n resulting_process_relations: JsonRecord[];\n unresolved_history: JsonRecord[];\n};\n\nexport type LifecyclemodelOrchestratePlanReport = {\n schema_version: 1;\n generated_at_utc: string;\n action: 'plan';\n status: 'planned';\n request_id: string;\n out_dir: string;\n counts: {\n nodes: number;\n edges: number;\n invocations: number;\n unresolved: number;\n };\n files: {\n request_normalized: string;\n assembly_plan: string;\n graph_manifest: string;\n lineage_manifest: string;\n boundary_report: string;\n };\n warnings: string[];\n};\n\nexport type LifecyclemodelOrchestrateExecuteReport = {\n schema_version: 1;\n generated_at_utc: string;\n action: 'execute';\n status: 'completed' | 'failed';\n request_id: string;\n out_dir: string;\n execution: {\n successful_invocations: number;\n failed_invocations: number;\n blocked_invocations: number;\n };\n files: {\n request_normalized: string;\n assembly_plan: string;\n graph_manifest: string;\n lineage_manifest: string;\n boundary_report: string;\n invocations_dir: string;\n };\n warnings: string[];\n};\n\nexport type LifecyclemodelOrchestratePublishReport = {\n schema_version: 1;\n generated_at_utc: string;\n action: 'publish';\n status: 'prepared_local_publish_bundle';\n request_id: string;\n run_dir: string;\n counts: {\n lifecyclemodels: number;\n projected_processes: number;\n resulting_process_relations: number;\n process_build_runs: number;\n };\n files: {\n assembly_plan: string;\n graph_manifest: string;\n lineage_manifest: string;\n publish_bundle: string;\n publish_summary: string;\n };\n};\n\nexport type LifecyclemodelOrchestrateReport =\n | LifecyclemodelOrchestratePlanReport\n | LifecyclemodelOrchestrateExecuteReport\n | LifecyclemodelOrchestratePublishReport;\n\nexport type RunLifecyclemodelOrchestrateOptions = {\n action: OrchestrateAction;\n inputPath?: string;\n outDir?: string | null;\n runDir?: string;\n allowProcessBuild?: boolean;\n allowSubmodelBuild?: boolean;\n publishLifecyclemodels?: boolean;\n publishResultingProcessRelations?: boolean;\n now?: Date;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n};\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction copyJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction ensureList<T = unknown>(value: unknown): T[] {\n if (value === undefined || value === null) {\n return [];\n }\n\n return Array.isArray(value) ? (value as T[]) : ([value] as T[]);\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const normalized = value.trim();\n return normalized || null;\n}\n\nfunction firstNonEmpty(...values: unknown[]): string | null {\n for (const value of values) {\n const normalized = nonEmptyString(value);\n if (normalized) {\n return normalized;\n }\n }\n\n return null;\n}\n\nfunction invariant<T>(value: T | null | undefined, message: string, details?: JsonRecord): T {\n if (value === undefined || value === null) {\n throw new CliError(message, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INTERNAL_STATE',\n exitCode: 1,\n details,\n });\n }\n\n return value;\n}\n\nfunction safeSlug(value: string): string {\n const slug = value\n .toLowerCase()\n .replace(/[^a-z0-9]+/gu, '-')\n .replace(/^-+|-+$/gu, '');\n return slug || 'item';\n}\n\nfunction nowIso(now: Date = new Date()): string {\n return now.toISOString();\n}\n\nfunction requireObject(value: unknown, label: string): JsonRecord {\n if (!isRecord(value)) {\n throw new CliError(`${label} must be a JSON object.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { label },\n });\n }\n\n return value;\n}\n\nfunction requireKnownKeys(value: JsonRecord, allowed: readonly string[], label: string): void {\n const unsupported = Object.keys(value)\n .filter((key) => !allowed.includes(key))\n .sort();\n if (unsupported.length === 0) {\n return;\n }\n\n throw new CliError(`${label} contains unsupported field(s): ${unsupported.join(', ')}.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: {\n label,\n unsupported_fields: unsupported,\n allowed_fields: [...allowed],\n },\n });\n}\n\nfunction requireEnum<T extends string>(value: unknown, allowed: readonly T[], label: string): T {\n const normalized = nonEmptyString(value);\n if (!normalized || !allowed.includes(normalized as T)) {\n throw new CliError(`${label} must be one of ${allowed.join(', ')}.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { label, value, allowed },\n });\n }\n\n return normalized as T;\n}\n\nfunction requireBoolean(value: unknown, label: string): boolean {\n if (typeof value !== 'boolean') {\n throw new CliError(`${label} must be a boolean.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { label, value },\n });\n }\n\n return value;\n}\n\nfunction requireInteger(value: unknown, label: string): number {\n if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {\n throw new CliError(`${label} must be a non-negative integer.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { label, value },\n });\n }\n\n return value;\n}\n\nfunction resolveInputPath(baseDir: string, raw: unknown): string | null {\n const normalized = nonEmptyString(raw);\n if (!normalized) {\n return null;\n }\n\n if (normalized.includes('://') || normalized.startsWith('file:')) {\n return normalized;\n }\n\n return path.resolve(baseDir, normalized);\n}\n\nfunction defaultCandidateSources(): JsonRecord {\n return {\n my_processes: true,\n team_processes: true,\n public_processes: true,\n existing_lifecyclemodels: true,\n existing_resulting_processes: true,\n };\n}\n\nfunction entityFromRoot(root: JsonRecord): JsonRecord {\n const kind = root.kind;\n if (kind === 'reference_flow') {\n return isRecord(root.flow) ? copyJson(root.flow) : {};\n }\n if (kind === 'process') {\n return isRecord(root.process) ? copyJson(root.process) : {};\n }\n if (kind === 'lifecyclemodel') {\n return isRecord(root.lifecyclemodel) ? copyJson(root.lifecyclemodel) : {};\n }\n if (kind === 'resulting_process') {\n return isRecord(root.resulting_process) ? copyJson(root.resulting_process) : {};\n }\n\n return {};\n}\n\nfunction normalizePublishConfig(publish: JsonRecord): NormalizedPublishConfig {\n return {\n intent: requireEnum(publish.intent, ['dry_run', 'prepare_only', 'publish'], 'publish.intent'),\n prepare_lifecyclemodel_payload: publish.prepare_lifecyclemodel_payload !== false,\n prepare_resulting_process_payload: publish.prepare_resulting_process_payload !== false,\n prepare_relation_payload: publish.prepare_relation_payload !== false,\n };\n}\n\nfunction serializeInvocationConfig(\n value: ProcessBuilderConfig | SubmodelBuilderConfig | ProjectorConfig | undefined,\n message: string,\n details?: JsonRecord,\n): JsonRecord {\n return copyJson(invariant(value, message, details)) as JsonRecord;\n}\n\nfunction normalizeInvocationFailure(error: unknown): {\n exit_code: number;\n error: string;\n} {\n return {\n exit_code: error instanceof CliError ? error.exitCode : 1,\n error: error instanceof Error ? error.message : String(error),\n };\n}\n\nfunction normalizeCandidate(raw: unknown): Candidate {\n if (typeof raw === 'string') {\n return { id: raw, score: 1 };\n }\n\n if (!isRecord(raw)) {\n throw new CliError('candidate must be an object or string.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { value: raw },\n });\n }\n\n const id = nonEmptyString(raw.id);\n if (!id) {\n throw new CliError('candidate.id is required.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { candidate: raw },\n });\n }\n\n const score =\n typeof raw.score === 'number' && Number.isFinite(raw.score) && raw.score >= 0 ? raw.score : 1;\n return {\n ...copyJson(raw),\n id,\n score,\n };\n}\n\nfunction normalizeCandidateList(value: unknown): Candidate[] {\n return ensureList(value)\n .map((entry) => normalizeCandidate(entry))\n .sort((left, right) => right.score - left.score);\n}\n\nfunction normalizeRequestedAction(value: unknown): RequestedAction {\n return requireEnum(\n value ?? 'auto',\n [\n 'auto',\n 'reuse_existing_resulting_process',\n 'reuse_existing_process',\n 'reuse_existing_model',\n 'build_process',\n 'build_submodel',\n 'cutoff',\n 'unresolved',\n ],\n 'requested_action',\n );\n}\n\nfunction normalizeDependsOn(value: unknown): string[] {\n return ensureList(value)\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n}\n\nfunction normalizeProcessBuilderConfig(\n value: unknown,\n baseDir: string,\n): ProcessBuilderConfig | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n requireKnownKeys(\n value,\n ['flow_file', 'flow_json', 'run_id', 'publish', 'commit', 'forward_args'],\n 'process_builder',\n );\n\n return {\n flow_file: resolveInputPath(baseDir, value.flow_file),\n flow_json: value.flow_json,\n run_id: nonEmptyString(value.run_id),\n publish: Boolean(value.publish),\n commit: Boolean(value.commit),\n forward_args: ensureList(value.forward_args)\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry)),\n };\n}\n\nfunction normalizeSubmodelBuilderConfig(\n value: unknown,\n baseDir: string,\n): SubmodelBuilderConfig | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n manifest: resolveInputPath(baseDir, value.manifest),\n out_dir: resolveInputPath(baseDir, value.out_dir),\n dry_run: Boolean(value.dry_run),\n };\n}\n\nfunction normalizeProjectorConfig(value: unknown, baseDir: string): ProjectorConfig | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n command: requireEnum(\n value.command ?? 'project',\n ['prepare', 'build', 'project'],\n 'projector.command',\n ),\n request: resolveInputPath(baseDir, value.request),\n model_file: resolveInputPath(baseDir, value.model_file),\n out_dir: resolveInputPath(baseDir, value.out_dir),\n projection_role: requireEnum(\n value.projection_role ?? 'primary',\n ['primary', 'all'],\n 'projector.projection_role',\n ),\n run_always: Boolean(value.run_always),\n publish_processes: Boolean(value.publish_processes),\n publish_relations: Boolean(value.publish_relations),\n };\n}\n\nfunction normalizeNode(rawNode: JsonRecord, index: number, baseDir: string): OrchestrateNode {\n const nodeId = invariant(\n firstNonEmpty(rawNode.node_id, rawNode.id, `node-${index}`),\n `Node ${index} id normalization failed unexpectedly.`,\n );\n const kind = requireEnum(\n rawNode.kind ?? 'process',\n ['reference_flow', 'process', 'lifecyclemodel', 'resulting_process', 'subsystem'],\n 'node.kind',\n );\n let entity = isRecord(rawNode.entity) ? copyJson(rawNode.entity) : {};\n if (Object.keys(entity).length === 0) {\n for (const key of ['flow', 'process', 'lifecyclemodel', 'resulting_process'] as const) {\n if (isRecord(rawNode[key])) {\n entity = copyJson(rawNode[key] as JsonRecord);\n break;\n }\n }\n }\n\n const label = invariant(\n firstNonEmpty(rawNode.label, entity.name, nodeId),\n `Node ${nodeId} label normalization failed unexpectedly.`,\n );\n const parentNodeId = firstNonEmpty(rawNode.parent_node_id);\n const dependsOn = normalizeDependsOn(rawNode.depends_on);\n if (parentNodeId) {\n dependsOn.push(parentNodeId);\n }\n\n return {\n node_id: nodeId,\n kind,\n label,\n entity,\n requested_action: normalizeRequestedAction(rawNode.requested_action ?? 'auto'),\n depends_on: [...new Set(dependsOn)].sort(),\n parent_node_id: parentNodeId,\n existing_resulting_process_candidates: normalizeCandidateList(\n rawNode.existing_resulting_process_candidates,\n ),\n existing_process_candidates: normalizeCandidateList(rawNode.existing_process_candidates),\n existing_lifecyclemodel_candidates: normalizeCandidateList(\n rawNode.existing_lifecyclemodel_candidates,\n ),\n process_builder: normalizeProcessBuilderConfig(rawNode.process_builder, baseDir),\n submodel_builder: normalizeSubmodelBuilderConfig(rawNode.submodel_builder, baseDir),\n projector: normalizeProjectorConfig(rawNode.projector, baseDir),\n planned_invocations: [],\n };\n}\n\nfunction deriveRootNode(root: JsonRecord, goal: JsonRecord, baseDir: string): OrchestrateNode {\n const entity = entityFromRoot(root);\n const label = invariant(\n firstNonEmpty(entity.name, goal.name, root.kind, 'root'),\n 'Root label normalization failed unexpectedly.',\n );\n const rootNode: JsonRecord = {\n node_id: invariant(\n firstNonEmpty(root.node_id, entity.id, 'root'),\n 'Root node_id normalization failed unexpectedly.',\n ),\n kind: root.kind,\n label,\n entity,\n requested_action: root.requested_action ?? 'auto',\n depends_on: root.depends_on ?? [],\n parent_node_id: root.parent_node_id,\n existing_resulting_process_candidates: root.existing_resulting_process_candidates ?? [],\n existing_process_candidates: root.existing_process_candidates ?? [],\n existing_lifecyclemodel_candidates: root.existing_lifecyclemodel_candidates ?? [],\n process_builder: root.process_builder,\n submodel_builder: root.submodel_builder,\n projector: root.projector,\n };\n return normalizeNode(rootNode, 0, baseDir);\n}\n\nfunction buildEdges(\n requestEdges: unknown[],\n nodes: OrchestrateNode[],\n): Array<{ from: string; to: string; relation: string }> {\n const edges: Array<{ from: string; to: string; relation: string }> = [];\n const seen = new Set<string>();\n\n ensureList(requestEdges).forEach((raw) => {\n if (!isRecord(raw)) {\n return;\n }\n\n const from = nonEmptyString(raw.from);\n const to = nonEmptyString(raw.to);\n const relation = invariant(\n firstNonEmpty(raw.relation, 'depends_on'),\n 'Edge relation normalization failed unexpectedly.',\n );\n if (!from || !to) {\n return;\n }\n\n const key = `${from}::${to}::${relation}`;\n if (seen.has(key)) {\n return;\n }\n\n seen.add(key);\n edges.push({ from, to, relation });\n });\n\n nodes.forEach((node) => {\n node.depends_on.forEach((dependency) => {\n const key = `${node.node_id}::${dependency}::depends_on`;\n if (seen.has(key)) {\n return;\n }\n\n seen.add(key);\n edges.push({\n from: node.node_id,\n to: dependency,\n relation: 'depends_on',\n });\n });\n });\n\n return edges;\n}\n\nfunction topoSortNodes(nodes: OrchestrateNode[]): {\n ordered: OrchestrateNode[];\n warnings: string[];\n} {\n const warnings: string[] = [];\n const order = new Map(nodes.map((node, index) => [node.node_id, index]));\n const nodeMap = new Map(nodes.map((node) => [node.node_id, node]));\n const indegree = new Map(nodes.map((node) => [node.node_id, 0]));\n const adjacency = new Map(nodes.map((node) => [node.node_id, [] as string[]]));\n\n nodes.forEach((node) => {\n node.depends_on.forEach((dependency) => {\n if (!nodeMap.has(dependency)) {\n warnings.push(\n `Node ${node.node_id} depends on unknown node ${dependency}; keeping it as metadata only.`,\n );\n return;\n }\n\n indegree.set(\n node.node_id,\n invariant(indegree.get(node.node_id), `Missing indegree entry for ${node.node_id}.`, {\n node_id: node.node_id,\n dependency,\n }) + 1,\n );\n invariant(adjacency.get(dependency), `Missing adjacency list for ${dependency}.`, {\n node_id: node.node_id,\n dependency,\n }).push(node.node_id);\n });\n });\n\n const queue = nodes\n .filter(\n (node) =>\n invariant(indegree.get(node.node_id), `Missing indegree entry for ${node.node_id}.`) === 0,\n )\n .sort(\n (left, right) =>\n invariant(order.get(left.node_id), `Missing order index for ${left.node_id}.`) -\n invariant(order.get(right.node_id), `Missing order index for ${right.node_id}.`),\n )\n .map((node) => node.node_id);\n const ordered: OrchestrateNode[] = [];\n\n while (queue.length > 0) {\n const nodeId = invariant(queue.shift(), 'Queue unexpectedly emptied during topological sort.');\n ordered.push(invariant(nodeMap.get(nodeId), `Missing node definition for ${nodeId}.`));\n const downstream = invariant(\n adjacency.get(nodeId),\n `Missing adjacency list for ${nodeId}.`,\n ).sort(\n (left, right) =>\n invariant(order.get(left), `Missing order index for ${left}.`) -\n invariant(order.get(right), `Missing order index for ${right}.`),\n );\n downstream.forEach((item) => {\n const nextIndegree = invariant(indegree.get(item), `Missing indegree entry for ${item}.`) - 1;\n indegree.set(item, nextIndegree);\n if (nextIndegree === 0) {\n queue.push(item);\n }\n });\n }\n\n if (ordered.length !== nodes.length) {\n warnings.push('Dependency cycle detected; preserving original order for cyclic remainder.');\n const seen = new Set(ordered.map((node) => node.node_id));\n nodes.forEach((node) => {\n if (!seen.has(node.node_id)) {\n ordered.push(node);\n }\n });\n }\n\n return { ordered, warnings };\n}\n\nfunction unresolvedResolution(reason: string): {\n resolution: Resolution;\n selected_candidate: Candidate | null;\n reason: string;\n boundary_reason: string;\n} {\n return {\n resolution: 'unresolved',\n selected_candidate: null,\n reason,\n boundary_reason: 'unresolved',\n };\n}\n\nfunction selectResolution(\n node: OrchestrateNode,\n orchestration: JsonRecord,\n): {\n resolution: Resolution;\n selected_candidate: Candidate | null;\n reason: string;\n boundary_reason: string | null;\n} {\n const requestedAction = node.requested_action;\n const resultingCandidate = node.existing_resulting_process_candidates[0] ?? null;\n const processCandidate = node.existing_process_candidates[0] ?? null;\n const modelCandidate = node.existing_lifecyclemodel_candidates[0] ?? null;\n const allowProcessBuild = Boolean(orchestration.allow_process_build);\n const allowSubmodelBuild = Boolean(orchestration.allow_submodel_build);\n const reuseResultingProcessFirst = orchestration.reuse_resulting_process_first !== false;\n\n if (requestedAction === 'cutoff') {\n return {\n resolution: 'cutoff',\n selected_candidate: null,\n reason: 'Explicit cutoff requested.',\n boundary_reason: 'explicit_cutoff',\n };\n }\n if (requestedAction === 'unresolved') {\n return unresolvedResolution('Explicit unresolved marker provided.');\n }\n if (requestedAction === 'reuse_existing_resulting_process') {\n if (!resultingCandidate) {\n return unresolvedResolution(\n 'requested reuse_existing_resulting_process but no candidate was provided',\n );\n }\n\n return {\n resolution: 'reused_existing_resulting_process',\n selected_candidate: resultingCandidate,\n reason: 'Requested resulting-process reuse.',\n boundary_reason: 'collapsed_at_resulting_process',\n };\n }\n if (requestedAction === 'reuse_existing_process') {\n if (!processCandidate) {\n return unresolvedResolution('requested reuse_existing_process but no candidate was provided');\n }\n\n return {\n resolution: 'reused_existing_process',\n selected_candidate: processCandidate,\n reason: 'Requested process reuse.',\n boundary_reason: 'collapsed_at_existing_process',\n };\n }\n if (requestedAction === 'reuse_existing_model') {\n if (!modelCandidate) {\n return unresolvedResolution(\n 'requested reuse_existing_model but no lifecyclemodel candidate was provided',\n );\n }\n\n return {\n resolution: 'reused_existing_model',\n selected_candidate: modelCandidate,\n reason: 'Requested lifecyclemodel reuse.',\n boundary_reason: 'collapsed_at_existing_model',\n };\n }\n if (requestedAction === 'build_process') {\n if (!node.process_builder) {\n return unresolvedResolution('requested build_process but process_builder config is missing');\n }\n if (!allowProcessBuild) {\n return unresolvedResolution(\n 'requested build_process but orchestration.allow_process_build=false',\n );\n }\n\n return {\n resolution: 'build_via_process_automated_builder',\n selected_candidate: null,\n reason: 'Requested process build.',\n boundary_reason: null,\n };\n }\n if (requestedAction === 'build_submodel') {\n if (!node.submodel_builder) {\n return unresolvedResolution(\n 'requested build_submodel but submodel_builder config is missing',\n );\n }\n if (!allowSubmodelBuild) {\n return unresolvedResolution(\n 'requested build_submodel but orchestration.allow_submodel_build=false',\n );\n }\n\n return {\n resolution: 'build_via_lifecyclemodel_automated_builder',\n selected_candidate: null,\n reason: 'Requested submodel build.',\n boundary_reason: null,\n };\n }\n\n if (reuseResultingProcessFirst && resultingCandidate) {\n return {\n resolution: 'reused_existing_resulting_process',\n selected_candidate: resultingCandidate,\n reason: 'Auto-selected highest scoring resulting process candidate.',\n boundary_reason: 'collapsed_at_resulting_process',\n };\n }\n if (processCandidate) {\n return {\n resolution: 'reused_existing_process',\n selected_candidate: processCandidate,\n reason: 'Auto-selected highest scoring existing process candidate.',\n boundary_reason: 'collapsed_at_existing_process',\n };\n }\n if ((node.kind === 'lifecyclemodel' || node.kind === 'subsystem') && modelCandidate) {\n return {\n resolution: 'reused_existing_model',\n selected_candidate: modelCandidate,\n reason: 'Auto-selected highest scoring lifecyclemodel candidate.',\n boundary_reason: 'collapsed_at_existing_model',\n };\n }\n if (\n (node.kind === 'lifecyclemodel' || node.kind === 'subsystem') &&\n node.submodel_builder &&\n allowSubmodelBuild\n ) {\n return {\n resolution: 'build_via_lifecyclemodel_automated_builder',\n selected_candidate: null,\n reason: 'No reusable model/process matched; scheduling lifecyclemodel builder.',\n boundary_reason: null,\n };\n }\n if (node.process_builder && allowProcessBuild) {\n return {\n resolution: 'build_via_process_automated_builder',\n selected_candidate: null,\n reason: 'No reusable process matched; scheduling process builder.',\n boundary_reason: null,\n };\n }\n if (modelCandidate) {\n return {\n resolution: 'reused_existing_model',\n selected_candidate: modelCandidate,\n reason: 'Fallback to lifecyclemodel candidate after no process candidate matched.',\n boundary_reason: 'collapsed_at_existing_model',\n };\n }\n\n return unresolvedResolution('No reusable candidate or build config satisfied the node policy');\n}\n\nfunction shouldRunProjector(node: OrchestrateNode, resolution: Resolution): boolean {\n if (!node.projector) {\n return false;\n }\n if (node.projector.run_always) {\n return true;\n }\n return (\n resolution === 'build_via_lifecyclemodel_automated_builder' ||\n resolution === 'reused_existing_model'\n );\n}\n\nfunction validateRequestShape(request: JsonRecord): void {\n const goal = requireObject(request.goal, 'goal');\n if (!nonEmptyString(goal.name)) {\n throw new CliError('goal.name is required.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n });\n }\n\n const root = requireObject(request.root, 'root');\n const rootKind = requireEnum(\n root.kind,\n ['reference_flow', 'process', 'lifecyclemodel', 'resulting_process'],\n 'root.kind',\n );\n const requiredRootField =\n rootKind === 'reference_flow'\n ? 'flow'\n : rootKind === 'process'\n ? 'process'\n : rootKind === 'lifecyclemodel'\n ? 'lifecyclemodel'\n : 'resulting_process';\n const requiredRootEntity = requireObject(root[requiredRootField], `root.${requiredRootField}`);\n if (!nonEmptyString(requiredRootEntity.id)) {\n throw new CliError(`root.${requiredRootField}.id is required.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n });\n }\n\n const orchestration = requireObject(request.orchestration, 'orchestration');\n requireEnum(orchestration.mode, ['collapsed', 'expanded', 'hybrid'], 'orchestration.mode');\n requireInteger(orchestration.max_depth, 'orchestration.max_depth');\n requireBoolean(\n orchestration.reuse_resulting_process_first,\n 'orchestration.reuse_resulting_process_first',\n );\n requireBoolean(orchestration.allow_process_build, 'orchestration.allow_process_build');\n requireBoolean(orchestration.allow_submodel_build, 'orchestration.allow_submodel_build');\n requireBoolean(orchestration.pin_child_versions, 'orchestration.pin_child_versions');\n requireBoolean(orchestration.stop_at_elementary_flow, 'orchestration.stop_at_elementary_flow');\n\n const publish = requireObject(request.publish, 'publish');\n requireEnum(publish.intent, ['dry_run', 'prepare_only', 'publish'], 'publish.intent');\n\n if (request.nodes !== undefined && !Array.isArray(request.nodes)) {\n throw new CliError('nodes must be an array when provided.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n });\n }\n if (request.edges !== undefined && !Array.isArray(request.edges)) {\n throw new CliError('edges must be an array when provided.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n });\n }\n}\n\nfunction buildPlan(\n request: JsonRecord,\n requestPath: string,\n outDir: string,\n now: Date,\n): AssemblyPlan {\n validateRequestShape(request);\n const requestDir = path.dirname(requestPath);\n const goal = copyJson(requireObject(request.goal, 'goal'));\n const root = copyJson(requireObject(request.root, 'root'));\n const orchestration = copyJson(requireObject(request.orchestration, 'orchestration'));\n const publish = copyJson(requireObject(request.publish, 'publish'));\n const candidateSources = {\n ...defaultCandidateSources(),\n ...(isRecord(request.candidate_sources) ? copyJson(request.candidate_sources) : {}),\n };\n\n const rootNode = deriveRootNode(root, goal, requestDir);\n const requestedNodes = ensureList(request.nodes).filter((entry): entry is JsonRecord =>\n isRecord(entry),\n );\n const rawNodes: JsonRecord[] = [];\n if (\n !requestedNodes.some((entry) => firstNonEmpty(entry.node_id, entry.id) === rootNode.node_id)\n ) {\n rawNodes.push({\n node_id: rootNode.node_id,\n kind: rootNode.kind,\n label: rootNode.label,\n entity: rootNode.entity,\n requested_action: rootNode.requested_action,\n depends_on: rootNode.depends_on,\n parent_node_id: rootNode.parent_node_id,\n existing_resulting_process_candidates: rootNode.existing_resulting_process_candidates,\n existing_process_candidates: rootNode.existing_process_candidates,\n existing_lifecyclemodel_candidates: rootNode.existing_lifecyclemodel_candidates,\n process_builder: rootNode.process_builder,\n submodel_builder: rootNode.submodel_builder,\n projector: rootNode.projector,\n });\n }\n rawNodes.push(...requestedNodes.map((entry) => copyJson(entry)));\n\n const nodes: OrchestrateNode[] = [];\n const seenNodeIds = new Set<string>();\n rawNodes.forEach((rawNode, index) => {\n const normalizedNode = normalizeNode(rawNode, index + 1, requestDir);\n if (seenNodeIds.has(normalizedNode.node_id)) {\n if (normalizedNode.node_id === 'root') {\n return;\n }\n\n throw new CliError(`Duplicate node_id: ${normalizedNode.node_id}`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n });\n }\n\n seenNodeIds.add(normalizedNode.node_id);\n nodes.push(normalizedNode);\n });\n\n const { ordered, warnings } = topoSortNodes(nodes);\n const edges = buildEdges(ensureList(request.edges), ordered);\n const invocations: PlanInvocation[] = [];\n const unresolved: Array<{ node_id: string; label: string; reason: string }> = [];\n const boundaries: Array<{ node_id: string; reason: string }> = [];\n\n ordered.forEach((node) => {\n const resolution = selectResolution(node, orchestration);\n node.resolution = resolution.resolution;\n node.resolution_reason = resolution.reason;\n node.selected_candidate = resolution.selected_candidate;\n node.boundary_reason = resolution.boundary_reason;\n node.planned_invocations = [];\n\n if (resolution.boundary_reason) {\n boundaries.push({\n node_id: node.node_id,\n reason: resolution.boundary_reason,\n });\n }\n if (resolution.resolution === 'unresolved') {\n unresolved.push({\n node_id: node.node_id,\n label: node.label,\n reason: resolution.reason,\n });\n return;\n }\n\n if (resolution.resolution === 'build_via_process_automated_builder') {\n const invocationId = `${node.node_id}:process-builder`;\n const artifactDir = path.resolve(\n requestDir,\n path.join(\n 'artifacts',\n 'process_from_flow',\n safeSlug(`${rootNode.node_id}-${node.node_id}`),\n ),\n );\n invocations.push({\n invocation_id: invocationId,\n node_id: node.node_id,\n kind: 'process_builder',\n config: serializeInvocationConfig(\n node.process_builder,\n `Node ${node.node_id} resolved to process_builder without process_builder config.`,\n { node_id: node.node_id, resolution: resolution.resolution },\n ),\n artifact_dir: artifactDir,\n });\n node.planned_invocations.push(invocationId);\n }\n\n if (resolution.resolution === 'build_via_lifecyclemodel_automated_builder') {\n const invocationId = `${node.node_id}:lifecyclemodel-builder`;\n const artifactDir = path.resolve(\n node.submodel_builder?.out_dir ??\n path.join(outDir, 'downstream', safeSlug(node.node_id), 'lifecyclemodel-builder'),\n );\n invocations.push({\n invocation_id: invocationId,\n node_id: node.node_id,\n kind: 'lifecyclemodel_builder',\n config: serializeInvocationConfig(\n node.submodel_builder,\n `Node ${node.node_id} resolved to lifecyclemodel_builder without submodel_builder config.`,\n { node_id: node.node_id, resolution: resolution.resolution },\n ),\n artifact_dir: artifactDir,\n });\n node.planned_invocations.push(invocationId);\n }\n\n if (node.resolution && shouldRunProjector(node, node.resolution)) {\n const invocationId = `${node.node_id}:projector`;\n const dependsOnInvocationId =\n node.resolution === 'build_via_lifecyclemodel_automated_builder'\n ? `${node.node_id}:lifecyclemodel-builder`\n : undefined;\n const artifactDir = path.resolve(\n node.projector?.out_dir ??\n path.join(outDir, 'downstream', safeSlug(node.node_id), 'projector'),\n );\n invocations.push({\n invocation_id: invocationId,\n node_id: node.node_id,\n kind: 'projector',\n config: serializeInvocationConfig(\n node.projector,\n `Node ${node.node_id} scheduled projector without projector config.`,\n { node_id: node.node_id, resolution: resolution.resolution },\n ),\n artifact_dir: artifactDir,\n depends_on_invocation_id: dependsOnInvocationId,\n });\n node.planned_invocations.push(invocationId);\n }\n });\n\n return {\n skill: 'lifecyclemodel-recursive-orchestrator',\n request_id:\n nonEmptyString(request.request_id) ??\n `run-${nowIso(now).replace(/[-:.]/gu, '').replace(/Z$/u, 'Z')}`,\n created_at: nowIso(now),\n request_file: requestPath,\n goal,\n root,\n orchestration,\n candidate_sources: candidateSources,\n publish: normalizePublishConfig(publish),\n notes: ensureList(request.notes)\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry)),\n nodes: ordered,\n edges,\n invocations,\n planner_summary: {\n status: 'planned',\n message: 'Request validated, nodes normalized, and downstream invocations scheduled.',\n },\n warnings,\n unresolved,\n boundaries,\n artifacts: {\n root: outDir,\n request_normalized: path.join(outDir, 'request.normalized.json'),\n assembly_plan: path.join(outDir, 'assembly-plan.json'),\n graph_manifest: path.join(outDir, 'graph-manifest.json'),\n lineage_manifest: path.join(outDir, 'lineage-manifest.json'),\n boundary_report: path.join(outDir, 'boundary-report.json'),\n invocations_dir: path.join(outDir, 'invocations'),\n publish_bundle: path.join(outDir, 'publish-bundle.json'),\n publish_summary: path.join(outDir, 'publish-summary.json'),\n },\n summary: {\n node_count: ordered.length,\n edge_count: edges.length,\n invocation_count: invocations.length,\n unresolved_count: unresolved.length,\n },\n };\n}\n\nfunction executionStatusByNode(\n plan: AssemblyPlan,\n executionResults: InvocationExecutionResult[],\n): Record<string, string> {\n const byNode = new Map<string, InvocationExecutionResult[]>();\n executionResults.forEach((result) => {\n const list = byNode.get(result.node_id) ?? [];\n list.push(result);\n byNode.set(result.node_id, list);\n });\n\n const statuses: Record<string, string> = {};\n plan.nodes.forEach((node) => {\n const nodeResults = byNode.get(node.node_id) ?? [];\n if (node.resolution === 'unresolved') {\n statuses[node.node_id] = 'unresolved';\n return;\n }\n if (node.resolution === 'cutoff') {\n statuses[node.node_id] = 'cutoff';\n return;\n }\n if (node.resolution?.startsWith('reused_')) {\n statuses[node.node_id] = 'reused';\n return;\n }\n if (nodeResults.length === 0) {\n statuses[node.node_id] = 'planned';\n return;\n }\n if (nodeResults.some((result) => result.status === 'failed')) {\n statuses[node.node_id] = 'failed';\n return;\n }\n if (nodeResults.some((result) => result.status.startsWith('skipped'))) {\n statuses[node.node_id] = 'blocked';\n return;\n }\n if (nodeResults.every((result) => result.status === 'success')) {\n statuses[node.node_id] = 'completed';\n return;\n }\n\n statuses[node.node_id] = 'incomplete';\n });\n\n return statuses;\n}\n\nfunction collectResultingProcessRelations(\n executionResults: InvocationExecutionResult[],\n): JsonRecord[] {\n const relations: JsonRecord[] = [];\n\n executionResults.forEach((result) => {\n const bundlePath = nonEmptyString(result.artifacts?.projection_bundle);\n if (!bundlePath || !existsSync(bundlePath)) {\n return;\n }\n\n const bundle = readJsonArtifact(bundlePath);\n if (!isRecord(bundle)) {\n return;\n }\n\n ensureList(bundle.relations).forEach((relation) => {\n if (!isRecord(relation)) {\n return;\n }\n\n relations.push({\n ...copyJson(relation),\n node_id: result.node_id,\n });\n });\n });\n\n return relations;\n}\n\nfunction buildGraphManifest(\n plan: AssemblyPlan,\n executionResults: InvocationExecutionResult[],\n): GraphManifest {\n const nodeStatuses = executionStatusByNode(plan, executionResults);\n return {\n root: {\n request_id: plan.request_id,\n goal: copyJson(plan.goal),\n mode: plan.orchestration.mode,\n max_depth: plan.orchestration.max_depth,\n },\n nodes: plan.nodes.map((node) => ({\n node_id: node.node_id,\n label: node.label,\n kind: node.kind,\n resolution: node.resolution,\n execution_status: invariant(\n nodeStatuses[node.node_id],\n `Missing execution status for node ${node.node_id}.`,\n { node_id: node.node_id },\n ),\n selected_candidate: copyJson(node.selected_candidate ?? null),\n depends_on: copyJson(node.depends_on),\n boundary_reason: node.boundary_reason ?? null,\n })),\n edges: copyJson(plan.edges),\n boundaries: copyJson(plan.boundaries),\n unresolved: copyJson(plan.unresolved),\n stats: {\n node_count: plan.nodes.length,\n edge_count: plan.edges.length,\n invocation_count: plan.invocations.length,\n unresolved_count: plan.unresolved.length,\n completed_invocation_count: executionResults.filter((result) => result.status === 'success')\n .length,\n },\n };\n}\n\nfunction buildLineageManifest(\n plan: AssemblyPlan,\n executionResults: InvocationExecutionResult[],\n): LineageManifest {\n const executionByInvocation = new Map(\n executionResults.map((result) => [result.invocation_id, result]),\n );\n const nodeStatuses = executionStatusByNode(plan, executionResults);\n\n const publishedDependencies = plan.nodes\n .filter((node) => isRecord(node.selected_candidate))\n .map((node) => ({\n node_id: node.node_id,\n dependency_type: node.resolution,\n candidate_id: node.selected_candidate?.id ?? null,\n candidate_version: nonEmptyString(node.selected_candidate?.version) ?? null,\n }));\n\n return {\n root_request: {\n request_id: plan.request_id,\n goal: copyJson(plan.goal),\n root: copyJson(plan.root),\n orchestration: copyJson(plan.orchestration),\n publish: copyJson(plan.publish),\n },\n builder_invocations: plan.invocations.map((invocation) => {\n const result = executionByInvocation.get(invocation.invocation_id);\n return {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n artifact_dir: invocation.artifact_dir,\n status: result?.status ?? 'planned',\n exit_code: result?.exit_code ?? null,\n result_file: result?.result_file ?? null,\n };\n }),\n node_resolution_log: plan.nodes.map((node) => ({\n node_id: node.node_id,\n label: node.label,\n resolution: node.resolution,\n reason: node.resolution_reason,\n selected_candidate: copyJson(node.selected_candidate ?? null),\n execution_status: invariant(\n nodeStatuses[node.node_id],\n `Missing execution status for node ${node.node_id}.`,\n { node_id: node.node_id },\n ),\n })),\n published_dependencies: publishedDependencies,\n resulting_process_relations: collectResultingProcessRelations(executionResults),\n unresolved_history: copyJson(plan.unresolved),\n };\n}\n\nfunction buildBoundaryReport(\n plan: AssemblyPlan,\n executionResults: InvocationExecutionResult[],\n): JsonRecord {\n return {\n request_id: plan.request_id,\n generated_at: nowIso(),\n boundaries: copyJson(plan.boundaries),\n unresolved: copyJson(plan.unresolved),\n execution_summary: {\n successful_invocations: executionResults.filter((result) => result.status === 'success')\n .length,\n failed_invocations: executionResults.filter((result) => result.status === 'failed').length,\n blocked_invocations: executionResults.filter((result) => result.status.startsWith('skipped'))\n .length,\n },\n };\n}\n\nfunction writePlanArtifacts(\n normalizedRequest: JsonRecord,\n plan: AssemblyPlan,\n graphManifest: GraphManifest,\n lineageManifest: LineageManifest,\n boundaryReport: JsonRecord,\n): void {\n writeJsonArtifact(plan.artifacts.request_normalized, normalizedRequest);\n writeJsonArtifact(plan.artifacts.assembly_plan, plan);\n writeJsonArtifact(plan.artifacts.graph_manifest, graphManifest);\n writeJsonArtifact(plan.artifacts.lineage_manifest, lineageManifest);\n writeJsonArtifact(plan.artifacts.boundary_report, boundaryReport);\n}\n\nfunction requireFile(filePath: string, label: string): void {\n if (!existsSync(filePath)) {\n throw new CliError(`Missing ${label}: ${filePath}`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_MISSING_FILE',\n exitCode: 2,\n details: { filePath, label },\n });\n }\n}\n\nfunction writeRequestFile(filePath: string, payload: unknown): string {\n mkdirSync(path.dirname(filePath), { recursive: true });\n writeFileSync(filePath, `${JSON.stringify(payload, null, 2)}\\n`, 'utf8');\n return filePath;\n}\n\nfunction parseInlineJson(value: unknown, label: string): JsonRecord {\n if (isRecord(value)) {\n return copyJson(value);\n }\n if (typeof value === 'string' && value.trim()) {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('parsed value is not an object');\n }\n return parsed;\n } catch (error) {\n throw new CliError(`Invalid ${label} JSON string.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { value, message: String(error) },\n });\n }\n }\n\n throw new CliError(`${label} must be a JSON object or JSON string.`, {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n details: { value },\n });\n}\n\nfunction buildProcessBuilderArtifacts(report: ProcessAutoBuildReport): JsonRecord {\n return {\n run_id: report.run_id,\n run_root: report.run_root,\n state_file: report.files.state,\n exports_dir: path.join(report.run_root, 'exports', 'processes'),\n report: report.files.report,\n };\n}\n\nfunction buildLifecyclemodelBuilderArtifacts(report: LifecyclemodelAutoBuildReport): JsonRecord {\n return {\n run_root: report.run_root,\n run_id: report.run_id,\n run_plan: report.files.run_plan,\n resolved_manifest: report.files.resolved_manifest,\n produced_model_files: report.local_build_reports.map((entry) => entry.model_file),\n process_catalog_files: report.local_build_reports.map((entry) => entry.process_catalog_file),\n source_run_dirs: report.local_build_reports.map((entry) => entry.run_dir),\n report_files: report.local_build_reports.map((entry) => entry.summary_file),\n report: report.files.report,\n };\n}\n\nfunction buildProjectorArtifacts(report: LifecyclemodelResultingProcessReport): JsonRecord {\n return {\n out_dir: report.out_dir,\n projection_bundle: report.files.process_projection_bundle,\n projection_report: report.files.projection_report,\n request_normalized: report.files.normalized_request,\n };\n}\n\nasync function executeProcessBuilderInvocation(\n invocation: PlanInvocation,\n plan: AssemblyPlan,\n resultFile: string,\n now: Date,\n): Promise<InvocationExecutionResult> {\n const config = invocation.config;\n const requestsDir = path.join(plan.artifacts.invocations_dir, 'requests');\n const slug = safeSlug(invocation.invocation_id);\n let flowFile = nonEmptyString(config.flow_file);\n if (!flowFile) {\n const flowPayload = parseInlineJson(config.flow_json, `${invocation.invocation_id} flow_json`);\n flowFile = writeRequestFile(path.join(requestsDir, `${slug}.flow.json`), flowPayload);\n }\n\n const request = {\n flow_file: flowFile,\n operation: 'produce',\n };\n const requestFile = writeRequestFile(\n path.join(requestsDir, `${slug}.process-auto-build.request.json`),\n request,\n );\n const runId =\n nonEmptyString(config.run_id) ?? `${safeSlug(plan.request_id)}-${safeSlug(invocation.node_id)}`;\n const report = await runProcessAutoBuild({\n inputPath: requestFile,\n inputValue: request,\n outDir: invocation.artifact_dir,\n now,\n requestIdOverride: `${plan.request_id}:${invocation.node_id}`,\n runIdOverride: runId,\n });\n\n const result: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: 'success',\n exit_code: 0,\n result_file: resultFile,\n planned_artifacts: {\n run_id: runId,\n run_root: report.run_root,\n },\n artifacts: buildProcessBuilderArtifacts(report),\n };\n writeJsonArtifact(resultFile, result);\n return result;\n}\n\nasync function executeLifecyclemodelBuilderInvocation(\n invocation: PlanInvocation,\n resultFile: string,\n now: Date,\n): Promise<InvocationExecutionResult> {\n const config = invocation.config;\n const manifest = nonEmptyString(config.manifest);\n if (!manifest) {\n throw new CliError(\n `Invocation ${invocation.invocation_id} is missing submodel_builder.manifest.`,\n {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INVALID_REQUEST',\n exitCode: 2,\n },\n );\n }\n requireFile(manifest, 'lifecyclemodel builder manifest');\n\n if (config.dry_run === true) {\n const result: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: 'success',\n exit_code: 0,\n result_file: resultFile,\n dry_run: true,\n planned_artifacts: {\n out_dir: invocation.artifact_dir,\n manifest,\n },\n artifacts: {\n out_dir: invocation.artifact_dir,\n run_plan: null,\n resolved_manifest: null,\n produced_model_files: [],\n process_catalog_files: [],\n report_files: [],\n },\n };\n writeJsonArtifact(resultFile, result);\n return result;\n }\n\n const report = await runLifecyclemodelAutoBuild({\n inputPath: manifest,\n outDir: invocation.artifact_dir,\n now,\n });\n const result: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: 'success',\n exit_code: 0,\n result_file: resultFile,\n planned_artifacts: {\n out_dir: invocation.artifact_dir,\n manifest,\n },\n artifacts: buildLifecyclemodelBuilderArtifacts(report),\n };\n writeJsonArtifact(resultFile, result);\n return result;\n}\n\nfunction inferProjectorModelFile(\n invocation: PlanInvocation,\n executionMap: Map<string, InvocationExecutionResult>,\n): string | null {\n const explicit = nonEmptyString(invocation.config.model_file);\n if (explicit) {\n return explicit;\n }\n\n const dependencyId = nonEmptyString(invocation.depends_on_invocation_id);\n if (!dependencyId) {\n return null;\n }\n const dependency = executionMap.get(dependencyId);\n const modelFiles = ensureList(dependency?.artifacts?.produced_model_files)\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry));\n return modelFiles[0] ?? null;\n}\n\nfunction collectProjectorDependencyArtifacts(\n invocation: PlanInvocation,\n executionMap: Map<string, InvocationExecutionResult>,\n): {\n processCatalogPath: string | null;\n sourceRunDirs: string[];\n} {\n const dependencyId = nonEmptyString(invocation.depends_on_invocation_id);\n const dependency = executionMap.get(dependencyId ?? '');\n return {\n processCatalogPath:\n ensureList(dependency?.artifacts?.process_catalog_files)\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry))[0] ?? null,\n sourceRunDirs: ensureList(dependency?.artifacts?.source_run_dirs)\n .map((entry) => nonEmptyString(entry))\n .filter((entry): entry is string => Boolean(entry)),\n };\n}\n\nfunction buildProjectorRequest(\n invocation: PlanInvocation,\n modelFile: string,\n plan: AssemblyPlan,\n processCatalogPath: string | null,\n sourceRunDirs: string[],\n): JsonRecord {\n return {\n source_model: {\n json_ordered_path: modelFile,\n },\n projection: {\n mode: invocation.config.projection_role === 'all' ? 'all-subproducts' : 'primary-only',\n metadata_overrides: {\n projection_source: 'lifecyclemodel_orchestrate',\n },\n attach_graph_snapshot: false,\n },\n process_sources: {\n ...(processCatalogPath ? { process_catalog_path: processCatalogPath } : {}),\n ...(sourceRunDirs.length > 0 ? { run_dirs: sourceRunDirs } : {}),\n allow_remote_lookup: false,\n },\n publish: {\n intent: plan.publish.intent,\n prepare_process_payloads: plan.publish.prepare_resulting_process_payload !== false,\n prepare_relation_payloads: plan.publish.prepare_relation_payload !== false,\n },\n };\n}\n\nasync function executeProjectorInvocation(\n invocation: PlanInvocation,\n plan: AssemblyPlan,\n executionMap: Map<string, InvocationExecutionResult>,\n resultFile: string,\n now: Date,\n env: NodeJS.ProcessEnv,\n fetchImpl: FetchLike | undefined,\n): Promise<InvocationExecutionResult> {\n const requestPath = nonEmptyString(invocation.config.request);\n let projectorRequestPath = requestPath;\n if (!projectorRequestPath) {\n const modelFile = inferProjectorModelFile(invocation, executionMap);\n if (!modelFile) {\n throw new CliError(\n `Invocation ${invocation.invocation_id} requires projector.request or a prior lifecyclemodel build result.`,\n {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_PROJECTOR_REQUEST_REQUIRED',\n exitCode: 2,\n },\n );\n }\n const { processCatalogPath, sourceRunDirs } = collectProjectorDependencyArtifacts(\n invocation,\n executionMap,\n );\n projectorRequestPath = writeRequestFile(\n path.join(\n plan.artifacts.invocations_dir,\n 'requests',\n `${safeSlug(invocation.invocation_id)}.projector.request.json`,\n ),\n buildProjectorRequest(invocation, modelFile, plan, processCatalogPath, sourceRunDirs),\n );\n } else {\n requireFile(projectorRequestPath, 'projector request');\n }\n\n const report = await runLifecyclemodelBuildResultingProcess({\n inputPath: projectorRequestPath,\n outDir: invocation.artifact_dir,\n now,\n env,\n fetchImpl,\n });\n const result: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: 'success',\n exit_code: 0,\n result_file: resultFile,\n planned_artifacts: {\n out_dir: invocation.artifact_dir,\n request: projectorRequestPath,\n },\n artifacts: buildProjectorArtifacts(report),\n };\n writeJsonArtifact(resultFile, result);\n return result;\n}\n\nfunction recordInvocationResult(\n invocation: PlanInvocation,\n result: InvocationExecutionResult,\n results: InvocationExecutionResult[],\n executionMap: Map<string, InvocationExecutionResult>,\n): void {\n invocation.last_status = result.status;\n invocation.last_exit_code = result.exit_code;\n invocation.last_result_file = result.result_file;\n invocation.artifacts = result.artifacts;\n results.push(result);\n executionMap.set(invocation.invocation_id, result);\n}\n\nasync function executePlan(\n plan: AssemblyPlan,\n now: Date,\n env: NodeJS.ProcessEnv,\n fetchImpl: FetchLike | undefined,\n): Promise<{ results: InvocationExecutionResult[]; executionSummary: ExecutionSummary }> {\n mkdirSync(plan.artifacts.invocations_dir, { recursive: true });\n const results: InvocationExecutionResult[] = [];\n const executionMap = new Map<string, InvocationExecutionResult>();\n const failFast = plan.orchestration.fail_fast !== false;\n let stopRemaining = false;\n\n for (const invocation of plan.invocations) {\n const resultFile = path.join(\n plan.artifacts.invocations_dir,\n `${safeSlug(invocation.invocation_id)}.json`,\n );\n if (stopRemaining) {\n const skipped: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: 'skipped_due_to_fail_fast',\n exit_code: null,\n result_file: resultFile,\n };\n writeJsonArtifact(resultFile, skipped);\n recordInvocationResult(invocation, skipped, results, executionMap);\n continue;\n }\n\n const dependencyId = nonEmptyString(invocation.depends_on_invocation_id);\n if (dependencyId) {\n const dependency = executionMap.get(dependencyId);\n if (dependency && dependency.status !== 'success') {\n const blocked: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: `skipped_due_to_dependency_${dependency.status}` as InvocationStatus,\n exit_code: null,\n result_file: resultFile,\n };\n writeJsonArtifact(resultFile, blocked);\n recordInvocationResult(invocation, blocked, results, executionMap);\n continue;\n }\n }\n\n try {\n let result: InvocationExecutionResult;\n if (invocation.kind === 'process_builder') {\n result = await executeProcessBuilderInvocation(invocation, plan, resultFile, now);\n } else if (invocation.kind === 'lifecyclemodel_builder') {\n result = await executeLifecyclemodelBuilderInvocation(invocation, resultFile, now);\n } else {\n result = await executeProjectorInvocation(\n invocation,\n plan,\n executionMap,\n resultFile,\n now,\n env,\n fetchImpl,\n );\n }\n\n recordInvocationResult(invocation, result, results, executionMap);\n } catch (error) {\n const failure = normalizeInvocationFailure(error);\n const failed: InvocationExecutionResult = {\n invocation_id: invocation.invocation_id,\n node_id: invocation.node_id,\n kind: invocation.kind,\n status: 'failed',\n exit_code: failure.exit_code,\n result_file: resultFile,\n error: failure.error,\n };\n writeJsonArtifact(resultFile, failed);\n recordInvocationResult(invocation, failed, results, executionMap);\n if (failFast) {\n stopRemaining = true;\n }\n }\n }\n\n const executionSummary: ExecutionSummary = {\n executed_at: nowIso(now),\n successful_invocations: results.filter((result) => result.status === 'success').length,\n failed_invocations: results.filter((result) => result.status === 'failed').length,\n blocked_invocations: results.filter((result) => result.status.startsWith('skipped')).length,\n status: results.some((result) => result.status === 'failed') ? 'failed' : 'completed',\n };\n plan.execution_summary = executionSummary;\n plan.planner_summary = {\n status: 'executed',\n message: 'Scheduled downstream builders were executed and invocation artifacts were recorded.',\n };\n\n return { results, executionSummary };\n}\n\nfunction loadInvocationResults(invocationsDir: string): InvocationExecutionResult[] {\n if (!existsSync(invocationsDir)) {\n return [];\n }\n\n return readdirSync(invocationsDir)\n .filter((entry) => entry.endsWith('.json'))\n .sort()\n .map((entry) => readJsonArtifact(path.join(invocationsDir, entry)))\n .filter((entry): entry is InvocationExecutionResult => isRecord(entry))\n .map((entry) => entry as InvocationExecutionResult);\n}\n\nfunction collectPublishBundle(\n runDir: string,\n plan: AssemblyPlan,\n graphManifest: GraphManifest,\n lineageManifest: LineageManifest,\n executionResults: InvocationExecutionResult[],\n publishLifecyclemodels: boolean,\n publishResultingProcessRelations: boolean,\n): JsonRecord {\n const lifecyclemodels: JsonRecord[] = [];\n const projectedProcesses: JsonRecord[] = [];\n const relations: JsonRecord[] = [];\n const processBuildRuns: JsonRecord[] = [];\n\n executionResults.forEach((result) => {\n if (result.kind === 'lifecyclemodel_builder' && publishLifecyclemodels) {\n ensureList(result.artifacts?.produced_model_files).forEach((filePath) => {\n const resolved = nonEmptyString(filePath);\n if (!resolved || !existsSync(resolved)) {\n return;\n }\n lifecyclemodels.push({\n node_id: result.node_id,\n file: resolved,\n json_ordered: readJsonArtifact(resolved),\n });\n });\n }\n\n if (result.kind === 'projector' && publishResultingProcessRelations) {\n const bundlePath = nonEmptyString(result.artifacts?.projection_bundle);\n if (bundlePath && existsSync(bundlePath)) {\n const bundle = readJsonArtifact(bundlePath);\n if (isRecord(bundle)) {\n ensureList(bundle.projected_processes).forEach((payload) => {\n if (!isRecord(payload)) {\n return;\n }\n projectedProcesses.push({\n ...copyJson(payload),\n node_id: result.node_id,\n });\n });\n ensureList(bundle.relations).forEach((payload) => {\n if (!isRecord(payload)) {\n return;\n }\n relations.push({\n ...copyJson(payload),\n node_id: result.node_id,\n });\n });\n }\n }\n }\n\n if (result.kind === 'process_builder') {\n processBuildRuns.push({\n node_id: result.node_id,\n run_id: nonEmptyString(result.artifacts?.run_id),\n run_root: nonEmptyString(result.artifacts?.run_root),\n exports_dir: nonEmptyString(result.artifacts?.exports_dir),\n });\n }\n });\n\n return {\n generated_at: nowIso(),\n run_dir: runDir,\n request_id: plan.request_id,\n status: 'prepared_local_publish_bundle',\n include_lifecyclemodels: publishLifecyclemodels,\n include_resulting_process_relations: publishResultingProcessRelations,\n graph_manifest: copyJson(graphManifest),\n lineage_manifest: copyJson(lineageManifest),\n lifecyclemodels,\n projected_processes: projectedProcesses,\n resulting_process_relations: relations,\n process_build_runs: processBuildRuns,\n };\n}\n\nfunction normalizeRequestForArtifacts(plan: AssemblyPlan): JsonRecord {\n return {\n request_id: plan.request_id,\n goal: copyJson(plan.goal),\n root: copyJson(plan.root),\n orchestration: copyJson(plan.orchestration),\n candidate_sources: copyJson(plan.candidate_sources),\n publish: copyJson(plan.publish),\n nodes: copyJson(plan.nodes),\n edges: copyJson(plan.edges),\n notes: copyJson(plan.notes),\n };\n}\n\nfunction requireActionInputPath(options: RunLifecyclemodelOrchestrateOptions): string {\n const inputPath = nonEmptyString(options.inputPath);\n if (!inputPath) {\n throw new CliError('Missing required --input for lifecyclemodel orchestrate plan/execute.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_INPUT_REQUIRED',\n exitCode: 2,\n });\n }\n return path.resolve(inputPath);\n}\n\nfunction requireActionOutDir(options: RunLifecyclemodelOrchestrateOptions): string {\n const outDir = nonEmptyString(options.outDir);\n if (!outDir) {\n throw new CliError('Missing required --out-dir for lifecyclemodel orchestrate plan/execute.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_OUT_DIR_REQUIRED',\n exitCode: 2,\n });\n }\n return path.resolve(outDir);\n}\n\nfunction requirePublishRunDir(options: RunLifecyclemodelOrchestrateOptions): string {\n const runDir = nonEmptyString(options.runDir);\n if (!runDir) {\n throw new CliError('Missing required --run-dir for lifecyclemodel orchestrate publish.', {\n code: 'LIFECYCLEMODEL_ORCHESTRATE_RUN_DIR_REQUIRED',\n exitCode: 2,\n });\n }\n return path.resolve(runDir);\n}\n\nexport async function runLifecyclemodelOrchestrate(\n options: RunLifecyclemodelOrchestrateOptions,\n): Promise<LifecyclemodelOrchestrateReport> {\n const now = options.now ?? new Date();\n if (options.action === 'publish') {\n const runDir = requirePublishRunDir(options);\n const assemblyPlanPath = path.join(runDir, 'assembly-plan.json');\n const graphManifestPath = path.join(runDir, 'graph-manifest.json');\n const lineageManifestPath = path.join(runDir, 'lineage-manifest.json');\n requireFile(assemblyPlanPath, 'assembly plan');\n requireFile(graphManifestPath, 'graph manifest');\n requireFile(lineageManifestPath, 'lineage manifest');\n const plan = readJsonArtifact(assemblyPlanPath) as AssemblyPlan;\n const graphManifest = readJsonArtifact(graphManifestPath) as GraphManifest;\n const lineageManifest = readJsonArtifact(lineageManifestPath) as LineageManifest;\n const publishLifecyclemodels =\n options.publishLifecyclemodels || plan.publish.prepare_lifecyclemodel_payload !== false;\n const publishResultingProcessRelations =\n options.publishResultingProcessRelations ||\n plan.publish.prepare_resulting_process_payload !== false ||\n plan.publish.prepare_relation_payload !== false;\n const executionResults = loadInvocationResults(path.join(runDir, 'invocations'));\n const publishBundle = collectPublishBundle(\n runDir,\n plan,\n graphManifest,\n lineageManifest,\n executionResults,\n publishLifecyclemodels,\n publishResultingProcessRelations,\n );\n const publishBundlePath = writeJsonArtifact(\n path.join(runDir, 'publish-bundle.json'),\n publishBundle,\n );\n const publishSummaryPath = writeJsonArtifact(path.join(runDir, 'publish-summary.json'), {\n schema_version: 1,\n generated_at_utc: nowIso(now),\n action: 'publish',\n status: 'prepared_local_publish_bundle',\n request_id: plan.request_id,\n run_dir: runDir,\n lifecyclemodel_count: ensureList(publishBundle.lifecyclemodels).length,\n projected_process_count: ensureList(publishBundle.projected_processes).length,\n relation_count: ensureList(publishBundle.resulting_process_relations).length,\n process_build_run_count: ensureList(publishBundle.process_build_runs).length,\n });\n\n return {\n schema_version: 1,\n generated_at_utc: nowIso(now),\n action: 'publish',\n status: 'prepared_local_publish_bundle',\n request_id: plan.request_id,\n run_dir: runDir,\n counts: {\n lifecyclemodels: ensureList(publishBundle.lifecyclemodels).length,\n projected_processes: ensureList(publishBundle.projected_processes).length,\n resulting_process_relations: ensureList(publishBundle.resulting_process_relations).length,\n process_build_runs: ensureList(publishBundle.process_build_runs).length,\n },\n files: {\n assembly_plan: assemblyPlanPath,\n graph_manifest: graphManifestPath,\n lineage_manifest: lineageManifestPath,\n publish_bundle: publishBundlePath,\n publish_summary: publishSummaryPath,\n },\n };\n }\n\n const inputPath = requireActionInputPath(options);\n const outDir = requireActionOutDir(options);\n const request = readJsonInput(inputPath);\n const requestObject = requireObject(request, 'request');\n if (options.allowProcessBuild === true) {\n (requestObject.orchestration as JsonRecord).allow_process_build = true;\n }\n if (options.allowSubmodelBuild === true) {\n (requestObject.orchestration as JsonRecord).allow_submodel_build = true;\n }\n const plan = buildPlan(requestObject, inputPath, outDir, now);\n const normalizedRequest = normalizeRequestForArtifacts(plan);\n const initialGraphManifest = buildGraphManifest(plan, []);\n const initialLineageManifest = buildLineageManifest(plan, []);\n const initialBoundaryReport = buildBoundaryReport(plan, []);\n writePlanArtifacts(\n normalizedRequest,\n plan,\n initialGraphManifest,\n initialLineageManifest,\n initialBoundaryReport,\n );\n\n if (options.action === 'plan') {\n return {\n schema_version: 1,\n generated_at_utc: nowIso(now),\n action: 'plan',\n status: 'planned',\n request_id: plan.request_id,\n out_dir: outDir,\n counts: {\n nodes: plan.summary.node_count,\n edges: plan.summary.edge_count,\n invocations: plan.summary.invocation_count,\n unresolved: plan.summary.unresolved_count,\n },\n files: {\n request_normalized: plan.artifacts.request_normalized,\n assembly_plan: plan.artifacts.assembly_plan,\n graph_manifest: plan.artifacts.graph_manifest,\n lineage_manifest: plan.artifacts.lineage_manifest,\n boundary_report: plan.artifacts.boundary_report,\n },\n warnings: copyJson(plan.warnings),\n };\n }\n\n const { results: executionResults, executionSummary } = await executePlan(\n plan,\n now,\n options.env ?? process.env,\n options.fetchImpl,\n );\n const graphManifest = buildGraphManifest(plan, executionResults);\n const lineageManifest = buildLineageManifest(plan, executionResults);\n const boundaryReport = buildBoundaryReport(plan, executionResults);\n writePlanArtifacts(normalizedRequest, plan, graphManifest, lineageManifest, boundaryReport);\n\n return {\n schema_version: 1,\n generated_at_utc: nowIso(now),\n action: 'execute',\n status: executionSummary.status,\n request_id: plan.request_id,\n out_dir: outDir,\n execution: {\n successful_invocations: executionSummary.successful_invocations,\n failed_invocations: executionSummary.failed_invocations,\n blocked_invocations: executionSummary.blocked_invocations,\n },\n files: {\n request_normalized: plan.artifacts.request_normalized,\n assembly_plan: plan.artifacts.assembly_plan,\n graph_manifest: plan.artifacts.graph_manifest,\n lineage_manifest: plan.artifacts.lineage_manifest,\n boundary_report: plan.artifacts.boundary_report,\n invocations_dir: plan.artifacts.invocations_dir,\n },\n warnings: copyJson(plan.warnings),\n };\n}\n\nexport const __testInternals = {\n invariant,\n safeSlug,\n requireObject,\n requireEnum,\n requireBoolean,\n requireInteger,\n resolveInputPath,\n defaultCandidateSources,\n entityFromRoot,\n normalizeCandidate,\n normalizeCandidateList,\n normalizeRequestedAction,\n normalizeDependsOn,\n normalizePublishConfig,\n serializeInvocationConfig,\n normalizeInvocationFailure,\n normalizeProcessBuilderConfig,\n normalizeSubmodelBuilderConfig,\n normalizeProjectorConfig,\n normalizeNode,\n deriveRootNode,\n buildEdges,\n topoSortNodes,\n selectResolution,\n shouldRunProjector,\n validateRequestShape,\n buildPlan,\n executionStatusByNode,\n buildGraphManifest,\n buildLineageManifest,\n buildBoundaryReport,\n requireFile,\n parseInlineJson,\n inferProjectorModelFile,\n collectProjectorDependencyArtifacts,\n executeProcessBuilderInvocation,\n executeLifecyclemodelBuilderInvocation,\n executeProjectorInvocation,\n executePlan,\n collectPublishBundle,\n normalizeRequestForArtifacts,\n loadInvocationResults,\n buildProjectorRequest,\n};\n"]}
@@ -0,0 +1,296 @@
1
+ import { existsSync, readdirSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { readJsonArtifact, writeJsonArtifact } from './artifacts.js';
4
+ import { CliError } from './errors.js';
5
+ import { normalizePublishRequest } from './publish.js';
6
+ function isRecord(value) {
7
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
8
+ }
9
+ function nonEmptyString(value) {
10
+ if (typeof value !== 'string') {
11
+ return null;
12
+ }
13
+ const normalized = value.trim();
14
+ return normalized || null;
15
+ }
16
+ function copyJson(value) {
17
+ return JSON.parse(JSON.stringify(value));
18
+ }
19
+ function readRequiredJsonObject(filePath, missingCode, invalidCode, label) {
20
+ if (!existsSync(filePath)) {
21
+ throw new CliError(`Required lifecyclemodel ${label} artifact not found: ${filePath}`, {
22
+ code: missingCode,
23
+ exitCode: 2,
24
+ details: { filePath, label },
25
+ });
26
+ }
27
+ const value = readJsonArtifact(filePath);
28
+ if (!isRecord(value)) {
29
+ throw new CliError(`Expected lifecyclemodel ${label} artifact JSON object: ${filePath}`, {
30
+ code: invalidCode,
31
+ exitCode: 2,
32
+ details: { filePath, label },
33
+ });
34
+ }
35
+ return value;
36
+ }
37
+ function buildLayout(runRoot) {
38
+ const runId = path.basename(runRoot);
39
+ return {
40
+ runId,
41
+ runRoot,
42
+ modelsDir: path.join(runRoot, 'models'),
43
+ reportsDir: path.join(runRoot, 'reports'),
44
+ manifestsDir: path.join(runRoot, 'manifests'),
45
+ publishStageDir: path.join(runRoot, 'stage_outputs', '10_publish'),
46
+ runManifestPath: path.join(runRoot, 'manifests', 'run-manifest.json'),
47
+ invocationIndexPath: path.join(runRoot, 'manifests', 'invocation-index.json'),
48
+ validationReportPath: path.join(runRoot, 'reports', 'lifecyclemodel-validate-build-report.json'),
49
+ publishBundlePath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-bundle.json'),
50
+ publishRequestPath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-request.json'),
51
+ publishIntentPath: path.join(runRoot, 'stage_outputs', '10_publish', 'publish-intent.json'),
52
+ reportPath: path.join(runRoot, 'reports', 'lifecyclemodel-publish-build-report.json'),
53
+ };
54
+ }
55
+ function resolveLayout(options) {
56
+ const runDir = nonEmptyString(options.runDir);
57
+ if (!runDir) {
58
+ throw new CliError('Missing required --run-dir for lifecyclemodel publish-build.', {
59
+ code: 'LIFECYCLEMODEL_PUBLISH_RUN_DIR_REQUIRED',
60
+ exitCode: 2,
61
+ });
62
+ }
63
+ return buildLayout(path.resolve(runDir));
64
+ }
65
+ function ensureRunRootExists(layout) {
66
+ if (!existsSync(layout.runRoot)) {
67
+ throw new CliError(`lifecyclemodel publish-build run root not found: ${layout.runRoot}`, {
68
+ code: 'LIFECYCLEMODEL_PUBLISH_RUN_NOT_FOUND',
69
+ exitCode: 2,
70
+ });
71
+ }
72
+ }
73
+ function readRequiredRunManifest(layout) {
74
+ const manifest = readRequiredJsonObject(layout.runManifestPath, 'LIFECYCLEMODEL_PUBLISH_RUN_MANIFEST_MISSING', 'LIFECYCLEMODEL_PUBLISH_RUN_MANIFEST_INVALID', 'run-manifest');
75
+ const manifestRunId = nonEmptyString(manifest.runId);
76
+ if (manifestRunId && manifestRunId !== layout.runId) {
77
+ throw new CliError(`lifecyclemodel publish-build run manifest runId mismatch: ${layout.runManifestPath}`, {
78
+ code: 'LIFECYCLEMODEL_PUBLISH_RUN_MANIFEST_MISMATCH',
79
+ exitCode: 2,
80
+ details: {
81
+ expected: layout.runId,
82
+ actual: manifestRunId,
83
+ },
84
+ });
85
+ }
86
+ return manifest;
87
+ }
88
+ function readInvocationIndex(layout) {
89
+ if (!existsSync(layout.invocationIndexPath)) {
90
+ return {
91
+ schema_version: 1,
92
+ invocations: [],
93
+ };
94
+ }
95
+ const value = readJsonArtifact(layout.invocationIndexPath);
96
+ if (!isRecord(value)) {
97
+ throw new CliError(`Expected lifecyclemodel publish invocation index JSON object: ${layout.invocationIndexPath}`, {
98
+ code: 'LIFECYCLEMODEL_PUBLISH_INVOCATION_INDEX_INVALID',
99
+ exitCode: 2,
100
+ });
101
+ }
102
+ if (value.invocations === undefined) {
103
+ return {
104
+ schema_version: 1,
105
+ invocations: [],
106
+ };
107
+ }
108
+ if (!Array.isArray(value.invocations)) {
109
+ throw new CliError(`Expected lifecyclemodel publish invocation index to contain an invocations array: ${layout.invocationIndexPath}`, {
110
+ code: 'LIFECYCLEMODEL_PUBLISH_INVOCATION_INDEX_INVALID',
111
+ exitCode: 2,
112
+ });
113
+ }
114
+ return value;
115
+ }
116
+ function collectLifecyclemodelPayloads(layout) {
117
+ const runNames = existsSync(layout.modelsDir) ? readdirSync(layout.modelsDir).sort() : [];
118
+ const payloads = runNames.flatMap((runName) => {
119
+ const lifecyclemodelsDir = path.join(layout.modelsDir, runName, 'tidas_bundle', 'lifecyclemodels');
120
+ if (!existsSync(lifecyclemodelsDir)) {
121
+ return [];
122
+ }
123
+ return readdirSync(lifecyclemodelsDir)
124
+ .filter((entry) => entry.endsWith('.json'))
125
+ .sort()
126
+ .map((entry) => {
127
+ const filePath = path.join(lifecyclemodelsDir, entry);
128
+ const value = readJsonArtifact(filePath);
129
+ if (!isRecord(value)) {
130
+ throw new CliError(`Expected lifecyclemodel publish payload JSON object: ${filePath}`, {
131
+ code: 'LIFECYCLEMODEL_PUBLISH_MODEL_INVALID',
132
+ exitCode: 2,
133
+ });
134
+ }
135
+ return value;
136
+ });
137
+ });
138
+ if (payloads.length === 0) {
139
+ throw new CliError(`lifecyclemodel publish-build run does not contain any lifecyclemodel payloads: ${layout.modelsDir}`, {
140
+ code: 'LIFECYCLEMODEL_PUBLISH_MODELS_NOT_FOUND',
141
+ exitCode: 2,
142
+ });
143
+ }
144
+ return payloads;
145
+ }
146
+ function readValidationSummary(layout) {
147
+ if (!existsSync(layout.validationReportPath)) {
148
+ return {
149
+ available: false,
150
+ ok: null,
151
+ report: null,
152
+ };
153
+ }
154
+ const value = readJsonArtifact(layout.validationReportPath);
155
+ if (!isRecord(value)) {
156
+ throw new CliError(`Expected lifecyclemodel validate-build report JSON object: ${layout.validationReportPath}`, {
157
+ code: 'LIFECYCLEMODEL_PUBLISH_VALIDATION_REPORT_INVALID',
158
+ exitCode: 2,
159
+ });
160
+ }
161
+ return {
162
+ available: true,
163
+ ok: typeof value.ok === 'boolean' ? value.ok : false,
164
+ report: layout.validationReportPath,
165
+ };
166
+ }
167
+ function buildPublishRequest() {
168
+ return {
169
+ inputs: {
170
+ bundle_paths: ['./publish-bundle.json'],
171
+ },
172
+ publish: {
173
+ commit: false,
174
+ publish_lifecyclemodels: true,
175
+ publish_processes: false,
176
+ publish_sources: false,
177
+ publish_relations: false,
178
+ publish_process_build_runs: false,
179
+ relation_mode: 'local_manifest_only',
180
+ },
181
+ out_dir: './publish-run',
182
+ };
183
+ }
184
+ function buildPublishIntent(layout, lifecyclemodelCount) {
185
+ return {
186
+ ok: true,
187
+ command: 'publish run',
188
+ input_path: layout.publishRequestPath,
189
+ run_id: layout.runId,
190
+ run_root: layout.runRoot,
191
+ status: 'prepared_local_lifecyclemodel_publish_bundle',
192
+ lifecyclemodel_count: lifecyclemodelCount,
193
+ };
194
+ }
195
+ function buildInvocationIndex(layout, invocationIndex, options, now) {
196
+ const priorInvocations = Array.isArray(invocationIndex.invocations)
197
+ ? [...invocationIndex.invocations]
198
+ : [];
199
+ return {
200
+ ...invocationIndex,
201
+ schema_version: typeof invocationIndex.schema_version === 'number' ? invocationIndex.schema_version : 1,
202
+ invocations: [
203
+ ...priorInvocations,
204
+ {
205
+ command: ['lifecyclemodel', 'publish-build', '--run-dir', options.runDir],
206
+ cwd: options.cwd ?? process.cwd(),
207
+ created_at: now.toISOString(),
208
+ run_id: layout.runId,
209
+ run_root: layout.runRoot,
210
+ report_path: layout.reportPath,
211
+ publish_request_path: layout.publishRequestPath,
212
+ },
213
+ ],
214
+ };
215
+ }
216
+ function buildNextActions(layout) {
217
+ return [
218
+ `inspect: ${layout.publishBundlePath}`,
219
+ `inspect: ${layout.publishRequestPath}`,
220
+ `run: tiangong publish run --input ${layout.publishRequestPath}`,
221
+ ];
222
+ }
223
+ export async function runLifecyclemodelPublishBuild(options) {
224
+ const now = options.now ?? new Date();
225
+ const layout = resolveLayout(options);
226
+ ensureRunRootExists(layout);
227
+ const runManifest = readRequiredRunManifest(layout);
228
+ const invocationIndex = readInvocationIndex(layout);
229
+ const lifecyclemodels = collectLifecyclemodelPayloads(layout);
230
+ const validation = readValidationSummary(layout);
231
+ const publishRequest = buildPublishRequest();
232
+ const normalizedPublishRequest = normalizePublishRequest(publishRequest, {
233
+ requestPath: layout.publishRequestPath,
234
+ now,
235
+ });
236
+ const publishBundle = {
237
+ generated_at_utc: now.toISOString(),
238
+ run_id: layout.runId,
239
+ run_root: layout.runRoot,
240
+ status: 'prepared_local_lifecyclemodel_publish_bundle',
241
+ source_run: {
242
+ run_manifest: copyJson(runManifest),
243
+ },
244
+ validation: copyJson(validation),
245
+ lifecyclemodels: copyJson(lifecyclemodels),
246
+ relations: [],
247
+ };
248
+ const publishIntent = buildPublishIntent(layout, lifecyclemodels.length);
249
+ const report = {
250
+ schema_version: 1,
251
+ generated_at_utc: now.toISOString(),
252
+ status: 'prepared_local_lifecyclemodel_publish_bundle',
253
+ run_id: layout.runId,
254
+ run_root: layout.runRoot,
255
+ counts: {
256
+ lifecyclemodels: lifecyclemodels.length,
257
+ },
258
+ publish_defaults: {
259
+ commit: normalizedPublishRequest.publish.commit,
260
+ publish_lifecyclemodels: normalizedPublishRequest.publish.publish_lifecyclemodels,
261
+ publish_processes: normalizedPublishRequest.publish.publish_processes,
262
+ publish_sources: normalizedPublishRequest.publish.publish_sources,
263
+ publish_relations: normalizedPublishRequest.publish.publish_relations,
264
+ publish_process_build_runs: normalizedPublishRequest.publish.publish_process_build_runs,
265
+ relation_mode: normalizedPublishRequest.publish.relation_mode,
266
+ },
267
+ validation,
268
+ files: {
269
+ run_manifest: layout.runManifestPath,
270
+ invocation_index: layout.invocationIndexPath,
271
+ publish_bundle: layout.publishBundlePath,
272
+ publish_request: layout.publishRequestPath,
273
+ publish_intent: layout.publishIntentPath,
274
+ report: layout.reportPath,
275
+ },
276
+ next_actions: buildNextActions(layout),
277
+ };
278
+ writeJsonArtifact(layout.invocationIndexPath, buildInvocationIndex(layout, invocationIndex, options, now));
279
+ writeJsonArtifact(layout.publishBundlePath, publishBundle);
280
+ writeJsonArtifact(layout.publishRequestPath, publishRequest);
281
+ writeJsonArtifact(layout.publishIntentPath, publishIntent);
282
+ writeJsonArtifact(layout.reportPath, report);
283
+ return report;
284
+ }
285
+ export const __testInternals = {
286
+ buildLayout,
287
+ resolveLayout,
288
+ readInvocationIndex,
289
+ collectLifecyclemodelPayloads,
290
+ readValidationSummary,
291
+ buildPublishRequest,
292
+ buildPublishIntent,
293
+ buildInvocationIndex,
294
+ buildNextActions,
295
+ };
296
+ //# sourceMappingURL=lifecyclemodel-publish-build.js.map