@tscircuit/capacity-autorouter 0.0.639 → 0.0.641

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.
package/dist/index.d.ts CHANGED
@@ -5540,26 +5540,111 @@ declare class ComponentDetectionSolver extends BasePipelineSolver<ComponentDetec
5540
5540
  initialVisualize(): GraphicsObject | null;
5541
5541
  }
5542
5542
 
5543
- interface ComponentTopologyGeneratorSolverParams {
5544
- detectedComponents: DetectedComponent[];
5545
- inputSrj: SimpleRouteJson;
5543
+ /** Shared output collected from each component-specific topology generator. */
5544
+ interface TopologyGeneratorSolverOutput {
5545
+ routingRegions: CapacityMeshNode[];
5546
+ }
5547
+ type TopologyGeneratorSolver = BaseSolver$1 & {
5548
+ getOutput(): TopologyGeneratorSolverOutput;
5549
+ };
5550
+
5551
+ interface ComponentTopologyBatchSolverParams {
5552
+ componentSrjs: SimpleRouteJson[];
5553
+ componentIds: string[];
5554
+ componentKinds: ComponentKind[];
5546
5555
  viaDiameter?: number;
5547
5556
  obstacleMargin?: number;
5548
5557
  }
5549
- type ComponentTopologyGeneratorSolverOutput = CapacityMeshNode[];
5550
- declare class ComponentTopologyGeneratorSolver extends BaseSolver {
5551
- readonly inputProblem: ComponentTopologyGeneratorSolverParams;
5552
- private output;
5553
- private componentMeshNodes;
5554
- private currentComponentIndex;
5555
- private activeTopologyGenerator;
5556
- constructor(inputProblem: ComponentTopologyGeneratorSolverParams);
5557
- getConstructorParams(): readonly [ComponentTopologyGeneratorSolverParams];
5558
+ interface ComponentTopologyBatchSolverOutput {
5559
+ componentMeshNodes: CapacityMeshNode[][];
5560
+ }
5561
+ /** Runs one component-local topology solve per component SRJ and collects the routing regions. */
5562
+ declare class ComponentTopologyBatchSolver extends BaseSolver$1 {
5563
+ readonly inputProblem: ComponentTopologyBatchSolverParams;
5564
+ activeSubSolver: TopologyGeneratorSolver | null;
5565
+ currentIndex: number;
5566
+ componentMeshNodes: CapacityMeshNode[][];
5567
+ constructor(inputProblem: ComponentTopologyBatchSolverParams);
5568
+ getConstructorParams(): readonly [ComponentTopologyBatchSolverParams];
5569
+ /** Steps through component solves sequentially to keep solver state simple and explicit. */
5558
5570
  _step(): void;
5559
- private finalizeComponentTopology;
5560
- createComponentObstacleSrj(inputSrj?: SimpleRouteJson): SimpleRouteJson;
5571
+ getOutput(): ComponentTopologyBatchSolverOutput;
5572
+ visualize(): GraphicsObject;
5573
+ }
5574
+
5575
+ interface SerializedTopologyComponentInput {
5576
+ componentId: string;
5577
+ componentKind: ComponentKind;
5578
+ memberObstacleIds: string[];
5579
+ memberObstacles: Obstacle[];
5580
+ replacementObstacle: Obstacle & {
5581
+ obstacleId: string;
5582
+ };
5583
+ }
5584
+ interface MultiGraphTopologyPlannerSolverParams {
5585
+ inputSrj: SimpleRouteJson;
5586
+ globalNoConnectionSrj?: SimpleRouteJson;
5587
+ components?: SerializedTopologyComponentInput[];
5588
+ componentDetectionOutput?: DetectedComponent[];
5589
+ viaDiameter?: number;
5590
+ obstacleMargin?: number;
5591
+ brokenSrj?: {
5592
+ componentsAsObstaclesSrj: SimpleRouteJson;
5593
+ components: SerializedTopologyComponentInput[];
5594
+ };
5595
+ }
5596
+ interface MultiGraphTopologyPlannerSolverOutput {
5597
+ globalNoConnectionSrj: SimpleRouteJson;
5598
+ componentNoConnectionSrjs: SimpleRouteJson[];
5599
+ globalMeshNodes: CapacityMeshNode[];
5600
+ componentMeshNodes: CapacityMeshNode[][];
5601
+ mergedMeshNodes: CapacityMeshNode[];
5602
+ }
5603
+ /**
5604
+ * Produces a merged routing topology where component replacement regions from
5605
+ * the global solve are substituted with component-local routing regions.
5606
+ */
5607
+ declare class MultiGraphTopologyPlannerSolver extends BasePipelineSolver<MultiGraphTopologyPlannerSolverParams> {
5608
+ globalTopologySolver?: RectDiffPipeline;
5609
+ componentTopologyBatchSolver?: ComponentTopologyBatchSolver;
5610
+ private normalizedInput;
5611
+ pipelineDef: PipelineStep$a<BaseSolver$1>[];
5612
+ constructor(params: MultiGraphTopologyPlannerSolverParams);
5613
+ getConstructorParams(): readonly [MultiGraphTopologyPlannerSolverParams];
5614
+ /**
5615
+ * Returns the global solve, the per-component solves, and the merged routing
5616
+ * regions used by downstream stages.
5617
+ */
5618
+ getOutput(): MultiGraphTopologyPlannerSolverOutput;
5619
+ finalVisualize(): GraphicsObject | null;
5620
+ visualize(): GraphicsObject;
5621
+ preview(): GraphicsObject;
5622
+ /** Rebuilds each component-local SRJ from its original member obstacles. */
5623
+ private getComponentNoConnectionSrjs;
5624
+ /** Adapts the global no-connection SRJ into the RectDiffPipeline input shape. */
5625
+ private getGlobalTopologySolverInput;
5626
+ /**
5627
+ * Removes raw RectDiff node rects that are superseded by component-local
5628
+ * topology regions.
5629
+ *
5630
+ * @param params.visualization - Graphics output produced by the base
5631
+ * pipeline visualizer, including nested stage visualizations.
5632
+ * @returns A visualization with RectDiff node rectangles inside component
5633
+ * areas removed. Non-RectDiff rectangles and all lines, points, circles,
5634
+ * and text entries are returned unchanged.
5635
+ *
5636
+ * @note This keeps intermediate RectDiff visualization consistent with the
5637
+ * merged topology output, which already removes those nodes from solver data.
5638
+ */
5639
+ private filterGlobalRectDiffNodesFromVisualization;
5640
+ }
5641
+
5642
+ declare class MergedComponentTopologyView extends BaseSolver {
5643
+ private readonly topologyPlanningSolver;
5644
+ constructor(topologyPlanningSolver: MultiGraphTopologyPlannerSolver);
5645
+ getOutput(): CapacityMeshNode[];
5561
5646
  visualize(): GraphicsObject;
5562
- getOutput(): ComponentTopologyGeneratorSolverOutput;
5647
+ preview(): GraphicsObject;
5563
5648
  }
5564
5649
 
5565
5650
  interface CapacityMeshSolverOptions$2 {
@@ -5584,7 +5669,8 @@ declare class AutoroutingPipelineSolver7_MultiGraph extends BaseSolver {
5584
5669
  preprocessSimpleRouteJsonSolver?: PreprocessSimpleRouteJsonSolver$1;
5585
5670
  escapeViaLocationSolver?: EscapeViaLocationSolver;
5586
5671
  netToPointPairsSolver?: NetToPointPairsSolver;
5587
- componentTopologyGeneratorSolver?: ComponentTopologyGeneratorSolver;
5672
+ componentTopologyGeneratorSolver?: MergedComponentTopologyView;
5673
+ topologyPlanningSolver?: MultiGraphTopologyPlannerSolver;
5588
5674
  globalTopologyGeneratorSolver?: RectDiffPipeline;
5589
5675
  nodeDimensionSubdivisionSolver?: NodeDimensionSubdivisionSolver;
5590
5676
  nodeTargetMerger?: CapacityNodeTargetMerger;
@@ -5627,7 +5713,7 @@ declare class AutoroutingPipelineSolver7_MultiGraph extends BaseSolver {
5627
5713
  sharedEdgeSegmentsWithNecessaryCrampedPortPoints?: SharedEdgeSegment[];
5628
5714
  highDensityNodePortPoints?: NodeWithPortPoints[];
5629
5715
  cacheProvider: CacheProvider | null;
5630
- pipelineDef: (PipelineStep$2<typeof PreprocessSimpleRouteJsonSolver$1> | PipelineStep$2<typeof ComponentDetectionSolver> | PipelineStep$2<typeof ComponentTopologyGeneratorSolver> | PipelineStep$2<typeof EscapeViaLocationSolver> | PipelineStep$2<typeof NetToPointPairsSolver2_OffBoardConnection> | PipelineStep$2<typeof RectDiffPipeline> | PipelineStep$2<typeof NodeDimensionSubdivisionSolver> | PipelineStep$2<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep$2<typeof AvailableSegmentPointSolver> | PipelineStep$2<typeof MultiTargetNecessaryCrampedPortPointSolver> | PipelineStep$2<typeof TinyHypergraphPortPointPathingSolver> | PipelineStep$2<typeof UniformPortDistributionSolver> | PipelineStep$2<typeof HighDensitySolver> | PipelineStep$2<typeof HighDensityForceImproveSolver> | PipelineStep$2<typeof Pipeline4HighDensityRepairSolver> | PipelineStep$2<typeof MultipleHighDensityRouteStitchSolver3> | PipelineStep$2<typeof TraceSimplificationSolver> | PipelineStep$2<typeof TraceWidthSolver> | PipelineStep$2<typeof GlobalDrcForceImproveSolver>)[];
5716
+ pipelineDef: (PipelineStep$2<typeof PreprocessSimpleRouteJsonSolver$1> | PipelineStep$2<typeof ComponentDetectionSolver> | PipelineStep$2<typeof EscapeViaLocationSolver> | PipelineStep$2<typeof NetToPointPairsSolver2_OffBoardConnection> | PipelineStep$2<typeof MultiGraphTopologyPlannerSolver> | PipelineStep$2<typeof NodeDimensionSubdivisionSolver> | PipelineStep$2<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep$2<typeof AvailableSegmentPointSolver> | PipelineStep$2<typeof MultiTargetNecessaryCrampedPortPointSolver> | PipelineStep$2<typeof TinyHypergraphPortPointPathingSolver> | PipelineStep$2<typeof UniformPortDistributionSolver> | PipelineStep$2<typeof HighDensitySolver> | PipelineStep$2<typeof HighDensityForceImproveSolver> | PipelineStep$2<typeof Pipeline4HighDensityRepairSolver> | PipelineStep$2<typeof MultipleHighDensityRouteStitchSolver3> | PipelineStep$2<typeof TraceSimplificationSolver> | PipelineStep$2<typeof TraceWidthSolver> | PipelineStep$2<typeof GlobalDrcForceImproveSolver>)[];
5631
5717
  constructor(srj: SimpleRouteJson, opts?: CapacityMeshSolverOptions$2);
5632
5718
  private setSimpleRouteJson;
5633
5719
  getConstructorParams(): readonly [SimpleRouteJson, CapacityMeshSolverOptions$2];
@@ -6037,39 +6123,31 @@ interface RouteSection {
6037
6123
  startIndex: number;
6038
6124
  endIndex: number;
6039
6125
  z: number;
6040
- points: HighDensityRoute["route"];
6126
+ points: HighDensityRoute$1["route"];
6041
6127
  }
6128
+
6042
6129
  declare class SingleRouteUselessViaRemovalSolver extends BaseSolver {
6043
6130
  getSolverName(): string;
6044
6131
  obstacleSHI: ObstacleSpatialHashIndex;
6045
6132
  hdRouteSHI: HighDensityRouteSpatialIndex;
6046
6133
  unsimplifiedRoute: HighDensityRoute;
6134
+ connMap: ConnectivityMap;
6047
6135
  routeSections: Array<RouteSection>;
6048
6136
  currentSectionIndex: number;
6049
6137
  TRACE_THICKNESS: number;
6050
6138
  OBSTACLE_MARGIN: number;
6051
- ENDPOINT_LAYER_EPSILON: number;
6052
6139
  constructor(params: {
6053
6140
  obstacleSHI: ObstacleSpatialHashIndex;
6054
6141
  hdRouteSHI: HighDensityRouteSpatialIndex;
6055
6142
  unsimplifiedRoute: HighDensityRoute;
6143
+ connMap: ConnectivityMap;
6056
6144
  });
6057
- breakRouteIntoSections(route: HighDensityRoute): never[] | this["routeSections"];
6058
6145
  _step(): void;
6059
- /**
6060
- * Check if an endpoint (first or last point of the route) can connect
6061
- * to a different layer. This is only allowed if the obstacles the endpoint
6062
- * connects to support that layer.
6063
- */
6064
- canEndpointConnectOnLayer(endpointX: number, endpointY: number, targetZ: number): boolean;
6065
- canSectionMoveToLayer({ currentSection, targetZ, }: {
6066
- currentSection: RouteSection;
6067
- targetZ: number;
6068
- }): boolean;
6069
6146
  getConstructorParams(): {
6070
6147
  obstacleSHI: ObstacleSpatialHashIndex;
6071
6148
  hdRouteSHI: HighDensityRouteSpatialIndex;
6072
6149
  unsimplifiedRoute: HighDensityIntraNodeRoute;
6150
+ connMap: ConnectivityMap;
6073
6151
  };
6074
6152
  getOptimizedHdRoute(): HighDensityRoute;
6075
6153
  visualize(): GraphicsObject;
@@ -6080,6 +6158,7 @@ interface UselessViaRemovalSolverInput {
6080
6158
  obstacles: Obstacle[];
6081
6159
  colorMap: Record<string, string>;
6082
6160
  layerCount: number;
6161
+ connMap: ConnectivityMap;
6083
6162
  }
6084
6163
  declare class UselessViaRemovalSolver extends BaseSolver {
6085
6164
  private input;