hoi4-agent-tools 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +44 -27
  3. package/SECURITY.md +4 -2
  4. package/dist/bin/setup.js +43 -6
  5. package/dist/bin/setup.js.map +1 -1
  6. package/dist/hoi4_agent_tools/core/configuration.d.ts +1 -0
  7. package/dist/hoi4_agent_tools/core/configuration.d.ts.map +1 -1
  8. package/dist/hoi4_agent_tools/core/configuration.js +3 -3
  9. package/dist/hoi4_agent_tools/core/configuration.js.map +1 -1
  10. package/dist/hoi4_agent_tools/core/engine.d.ts +1 -0
  11. package/dist/hoi4_agent_tools/core/engine.d.ts.map +1 -1
  12. package/dist/hoi4_agent_tools/core/engine.js +1 -0
  13. package/dist/hoi4_agent_tools/core/engine.js.map +1 -1
  14. package/dist/hoi4_agent_tools/core/index.d.ts.map +1 -1
  15. package/dist/hoi4_agent_tools/core/index.js +10 -2
  16. package/dist/hoi4_agent_tools/core/index.js.map +1 -1
  17. package/dist/hoi4_agent_tools/core/transactions.d.ts +2 -0
  18. package/dist/hoi4_agent_tools/core/transactions.d.ts.map +1 -1
  19. package/dist/hoi4_agent_tools/core/transactions.js +49 -6
  20. package/dist/hoi4_agent_tools/core/transactions.js.map +1 -1
  21. package/dist/hoi4_agent_tools/core/workspace.js +1 -1
  22. package/dist/hoi4_agent_tools/core/workspace.js.map +1 -1
  23. package/dist/hoi4_agent_tools/focus/compiler.d.ts +2 -1
  24. package/dist/hoi4_agent_tools/focus/compiler.d.ts.map +1 -1
  25. package/dist/hoi4_agent_tools/focus/compiler.js +12 -2
  26. package/dist/hoi4_agent_tools/focus/compiler.js.map +1 -1
  27. package/dist/hoi4_agent_tools/focus/importer.d.ts.map +1 -1
  28. package/dist/hoi4_agent_tools/focus/importer.js +13 -2
  29. package/dist/hoi4_agent_tools/focus/importer.js.map +1 -1
  30. package/dist/hoi4_agent_tools/focus/layout.d.ts.map +1 -1
  31. package/dist/hoi4_agent_tools/focus/layout.js +165 -42
  32. package/dist/hoi4_agent_tools/focus/layout.js.map +1 -1
  33. package/dist/hoi4_agent_tools/focus/lint.d.ts.map +1 -1
  34. package/dist/hoi4_agent_tools/focus/lint.js +37 -8
  35. package/dist/hoi4_agent_tools/focus/lint.js.map +1 -1
  36. package/dist/hoi4_agent_tools/focus/model.d.ts +5 -1
  37. package/dist/hoi4_agent_tools/focus/model.d.ts.map +1 -1
  38. package/dist/hoi4_agent_tools/focus/model.js +2 -0
  39. package/dist/hoi4_agent_tools/focus/model.js.map +1 -1
  40. package/dist/hoi4_agent_tools/focus/presentation.d.ts.map +1 -1
  41. package/dist/hoi4_agent_tools/focus/presentation.js +13 -5
  42. package/dist/hoi4_agent_tools/focus/presentation.js.map +1 -1
  43. package/dist/hoi4_agent_tools/focus/render.d.ts +4 -0
  44. package/dist/hoi4_agent_tools/focus/render.d.ts.map +1 -1
  45. package/dist/hoi4_agent_tools/focus/render.js +17 -3
  46. package/dist/hoi4_agent_tools/focus/render.js.map +1 -1
  47. package/dist/hoi4_agent_tools/focus/service.d.ts.map +1 -1
  48. package/dist/hoi4_agent_tools/focus/service.js +142 -97
  49. package/dist/hoi4_agent_tools/focus/service.js.map +1 -1
  50. package/dist/hoi4_agent_tools/focus/source-update.d.ts.map +1 -1
  51. package/dist/hoi4_agent_tools/focus/source-update.js +9 -4
  52. package/dist/hoi4_agent_tools/focus/source-update.js.map +1 -1
  53. package/dist/hoi4_agent_tools/gui/studio.d.ts.map +1 -1
  54. package/dist/hoi4_agent_tools/gui/studio.js +3 -2
  55. package/dist/hoi4_agent_tools/gui/studio.js.map +1 -1
  56. package/dist/hoi4_agent_tools/map/service.d.ts.map +1 -1
  57. package/dist/hoi4_agent_tools/map/service.js +11 -5
  58. package/dist/hoi4_agent_tools/map/service.js.map +1 -1
  59. package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts +2 -1
  60. package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts.map +1 -1
  61. package/dist/hoi4_agent_tools/mcp/prompts/register.js +35 -13
  62. package/dist/hoi4_agent_tools/mcp/prompts/register.js.map +1 -1
  63. package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts +1 -1
  64. package/dist/hoi4_agent_tools/mcp/resources/register.d.ts.map +1 -1
  65. package/dist/hoi4_agent_tools/mcp/resources/register.js +1 -0
  66. package/dist/hoi4_agent_tools/mcp/resources/register.js.map +1 -1
  67. package/dist/hoi4_agent_tools/mcp/security/auth.d.ts.map +1 -1
  68. package/dist/hoi4_agent_tools/mcp/security/auth.js +1 -4
  69. package/dist/hoi4_agent_tools/mcp/security/auth.js.map +1 -1
  70. package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts +12 -0
  71. package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts.map +1 -1
  72. package/dist/hoi4_agent_tools/mcp/server/base-tools.js +297 -218
  73. package/dist/hoi4_agent_tools/mcp/server/base-tools.js.map +1 -1
  74. package/dist/hoi4_agent_tools/mcp/server/create.d.ts.map +1 -1
  75. package/dist/hoi4_agent_tools/mcp/server/create.js +8 -2
  76. package/dist/hoi4_agent_tools/mcp/server/create.js.map +1 -1
  77. package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts +5 -0
  78. package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts.map +1 -1
  79. package/dist/hoi4_agent_tools/mcp/server/output-schemas.js +1 -0
  80. package/dist/hoi4_agent_tools/mcp/server/output-schemas.js.map +1 -1
  81. package/dist/hoi4_agent_tools/mcp/server/result.js +1 -1
  82. package/dist/hoi4_agent_tools/mcp/server/result.js.map +1 -1
  83. package/dist/hoi4_agent_tools/mcp/server/transaction-execution.d.ts +31 -0
  84. package/dist/hoi4_agent_tools/mcp/server/transaction-execution.d.ts.map +1 -0
  85. package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js +127 -0
  86. package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js.map +1 -0
  87. package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts.map +1 -1
  88. package/dist/hoi4_agent_tools/mcp/tools/focus.js +131 -30
  89. package/dist/hoi4_agent_tools/mcp/tools/focus.js.map +1 -1
  90. package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts +6 -0
  91. package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts.map +1 -1
  92. package/dist/hoi4_agent_tools/mcp/tools/gui.js +40 -12
  93. package/dist/hoi4_agent_tools/mcp/tools/gui.js.map +1 -1
  94. package/dist/hoi4_agent_tools/mcp/tools/map.d.ts.map +1 -1
  95. package/dist/hoi4_agent_tools/mcp/tools/map.js +39 -12
  96. package/dist/hoi4_agent_tools/mcp/tools/map.js.map +1 -1
  97. package/dist/hoi4_agent_tools/mcp/transports/http.d.ts.map +1 -1
  98. package/dist/hoi4_agent_tools/mcp/transports/http.js +3 -0
  99. package/dist/hoi4_agent_tools/mcp/transports/http.js.map +1 -1
  100. package/dist/hoi4_agent_tools/schemas/focus.d.ts +1 -1
  101. package/dist/hoi4_agent_tools/schemas/focus.d.ts.map +1 -1
  102. package/dist/hoi4_agent_tools/schemas/focus.js +16 -2
  103. package/dist/hoi4_agent_tools/schemas/focus.js.map +1 -1
  104. package/dist/hoi4_agent_tools/version.d.ts +1 -1
  105. package/dist/hoi4_agent_tools/version.js +1 -1
  106. package/docs/README.md +3 -2
  107. package/docs/adr/0012-autonomous-rewrites.md +55 -0
  108. package/docs/adr/README.md +1 -0
  109. package/docs/agent-integration.md +146 -0
  110. package/docs/architecture.md +20 -4
  111. package/docs/artifacts.md +8 -5
  112. package/docs/completion-report.md +109 -79
  113. package/docs/configuration.md +30 -10
  114. package/docs/focus-workflow.md +134 -5
  115. package/docs/gui-workflow.md +7 -3
  116. package/docs/limitations.md +4 -2
  117. package/docs/map-workflow.md +15 -9
  118. package/docs/performance.md +1 -1
  119. package/docs/release.md +12 -7
  120. package/docs/research/mcp-2026-07-10.md +9 -3
  121. package/docs/security.md +12 -6
  122. package/docs/self-hosting.md +8 -6
  123. package/docs/transactions.md +45 -27
  124. package/docs/troubleshooting.md +12 -4
  125. package/package.json +7 -3
  126. package/schemas/configuration.schema.json +3 -2
  127. package/schemas/continuous-focus-palette.schema.json +1 -1
  128. package/schemas/focus-plan.schema.json +74 -49
  129. package/schemas/focus-planning-sidecar.schema.json +33 -18
  130. package/schemas/gui-animation-source.schema.json +1 -1
  131. package/schemas/gui-helper.schema.json +1 -1
  132. package/schemas/gui-scenario.schema.json +1 -1
  133. package/schemas/map-operation.schema.json +1 -1
  134. package/schemas/operation-result.schema.json +1 -1
  135. package/schemas/transaction-manifest.schema.json +1 -1
  136. package/server.json +4 -4
@@ -69,6 +69,32 @@ function laneBases(plan, discovered, spacing) {
69
69
  return [id, bounded];
70
70
  }));
71
71
  }
72
+ function laneBounds(plan) {
73
+ return new Map(plan.laneGroups.map((lane) => {
74
+ const minimumX = lane.minimumX ?? -Infinity;
75
+ const maximumX = lane.maximumX ?? Infinity;
76
+ if (minimumX > maximumX) {
77
+ throw new ServiceError('FOCUS_LAYOUT_LANE_BOUNDS_INVALID', 'Focus lane minimumX must be less than or equal to maximumX', { laneId: lane.id, minimumX, maximumX });
78
+ }
79
+ return [lane.id, { minimumX, maximumX }];
80
+ }));
81
+ }
82
+ function boundsForFocus(context, focusId) {
83
+ return (context.laneBounds.get(context.laneIds.get(focusId) ?? 'default') ?? {
84
+ minimumX: -Infinity,
85
+ maximumX: Infinity,
86
+ });
87
+ }
88
+ function coordinateWithinLane(context, focusId, x) {
89
+ const bounds = boundsForFocus(context, focusId);
90
+ return x >= bounds.minimumX && x <= bounds.maximumX;
91
+ }
92
+ function finiteLaneBoundDetails(bounds) {
93
+ return {
94
+ ...(Number.isFinite(bounds.minimumX) ? { minimumX: bounds.minimumX } : {}),
95
+ ...(Number.isFinite(bounds.maximumX) ? { maximumX: bounds.maximumX } : {}),
96
+ };
97
+ }
72
98
  function prerequisiteIds(focus) {
73
99
  return focus.prerequisites.groups.flatMap(({ focusIds }) => focusIds);
74
100
  }
@@ -86,25 +112,33 @@ function mutualExclusionMap(focuses) {
86
112
  }
87
113
  return result;
88
114
  }
89
- function* connectorEdges(context, candidate) {
90
- const nodeFor = (focusId) => candidate?.id === focusId ? candidate : context.placed.get(focusId);
91
- const edges = [];
92
- let focusIndex = 0;
93
- for (const focus of context.focuses.values()) {
94
- context.work.spend('connector edge construction');
95
- yield* cancellationCheckpoint(context.signal, focusIndex, 32);
96
- focusIndex += 1;
97
- const child = nodeFor(focus.id);
98
- if (child === undefined)
99
- continue;
115
+ function connectorDefinitionsByFocus(focuses) {
116
+ const definitions = new Map();
117
+ let key = 0;
118
+ for (const focus of focuses.values()) {
100
119
  for (const parentId of prerequisiteIds(focus)) {
101
- context.work.spend('connector edge construction');
102
- const parent = nodeFor(parentId);
103
- if (parent === undefined)
120
+ if (!focuses.has(parentId))
104
121
  continue;
105
- edges.push({ parentId, childId: focus.id, parent, child });
122
+ const definition = { key, parentId, childId: focus.id };
123
+ key += 1;
124
+ for (const focusId of new Set([parentId, focus.id])) {
125
+ const adjacent = definitions.get(focusId) ?? [];
126
+ adjacent.push(definition);
127
+ definitions.set(focusId, adjacent);
128
+ }
106
129
  }
107
130
  }
131
+ return definitions;
132
+ }
133
+ function* connectorEdges(context) {
134
+ const edges = [];
135
+ let edgeIndex = 0;
136
+ for (const edge of context.placedConnectors.values()) {
137
+ context.work.spend('connector edge snapshot');
138
+ yield* cancellationCheckpoint(context.signal, edgeIndex, 32);
139
+ edgeIndex += 1;
140
+ edges.push(edge);
141
+ }
108
142
  return edges.sort((left, right) => compareCodeUnits(left.parentId, right.parentId) ||
109
143
  compareCodeUnits(left.childId, right.childId));
110
144
  }
@@ -134,7 +168,7 @@ function* connectorCrossings(edges, context) {
134
168
  }
135
169
  return crossings;
136
170
  }
137
- function* crossingCountForCandidate(context, focusId, x, y) {
171
+ function* crossingCountForCandidate(context, focusId, x, y, stopAt = Infinity) {
138
172
  yield* cancellationCheckpoint(context.signal);
139
173
  const focus = context.focuses.get(focusId);
140
174
  const candidate = {
@@ -145,32 +179,48 @@ function* crossingCountForCandidate(context, focusId, x, y) {
145
179
  preserved: false,
146
180
  sourceMode: focus?.position.mode ?? 'auto',
147
181
  };
148
- const edges = yield* connectorEdges(context, candidate);
149
- const candidateEdges = edges.filter((edge) => edge.parentId === focusId || edge.childId === focusId);
150
- const existingEdges = edges.filter((edge) => edge.parentId !== focusId && edge.childId !== focusId);
182
+ const candidateEdges = [];
183
+ for (const definition of context.connectorDefinitionsByFocus.get(focusId) ?? []) {
184
+ context.work.spend('candidate connector edge construction');
185
+ const parent = definition.parentId === focusId ? candidate : context.placed.get(definition.parentId);
186
+ const child = definition.childId === focusId ? candidate : context.placed.get(definition.childId);
187
+ if (parent !== undefined && child !== undefined) {
188
+ candidateEdges.push({
189
+ parentId: definition.parentId,
190
+ childId: definition.childId,
191
+ parent,
192
+ child,
193
+ });
194
+ }
195
+ }
196
+ const existingEdges = context.placedConnectors.values();
151
197
  let crossings = 0;
152
198
  for (const [candidateIndex, candidateEdge] of candidateEdges.entries()) {
153
199
  yield* cancellationCheckpoint(context.signal, candidateIndex, 16);
154
- for (const [existingIndex, existingEdge] of existingEdges.entries()) {
200
+ let existingIndex = 0;
201
+ for (const existingEdge of existingEdges) {
155
202
  yield* cancellationCheckpoint(context.signal, existingIndex, 64);
203
+ existingIndex += 1;
156
204
  context.work.spend('candidate connector crossing comparison');
157
205
  if (connectorsShareEndpoint(candidateEdge, existingEdge))
158
206
  continue;
159
- if (focusConnectorSegmentsProperlyCross(candidateEdge.parent, candidateEdge.child, existingEdge.parent, existingEdge.child))
207
+ if (focusConnectorSegmentsProperlyCross(candidateEdge.parent, candidateEdge.child, existingEdge.parent, existingEdge.child)) {
160
208
  crossings += 1;
209
+ if (crossings >= stopAt)
210
+ return crossings;
211
+ }
161
212
  }
162
213
  }
163
214
  return crossings;
164
215
  }
165
216
  function candidateConflicts(context, focusId, x, y) {
166
- const candidate = { x, y };
167
- const visibleOverlaps = [];
168
- for (const placed of context.placed.values()) {
169
- context.work.spend('candidate overlap comparison');
170
- if (focusNodesVisiblyOverlap(candidate, placed))
171
- visibleOverlaps.push(placed.id);
172
- }
173
- visibleOverlaps.sort((left, right) => compareCodeUnits(left, right));
217
+ context.work.spend('candidate overlap lookup');
218
+ // Focus coordinates are integers and the rendered node is smaller than one
219
+ // grid step on both axes, so visible overlap is exactly a coordinate-key
220
+ // collision. Use the maintained spatial index instead of rescanning every
221
+ // placed node for every automatic candidate.
222
+ const occupiedBy = context.occupied.get(coordinateKey(x, y));
223
+ const visibleOverlaps = occupiedBy === undefined || occupiedBy === focusId ? [] : [occupiedBy];
174
224
  const mutualExclusions = [];
175
225
  for (const otherId of context.mutualExclusions.get(focusId) ?? []) {
176
226
  context.work.spend('candidate mutual-exclusion comparison');
@@ -211,24 +261,60 @@ function recordOccupied(context, node) {
211
261
  context.occupied.set(key, node.id);
212
262
  }
213
263
  }
264
+ function recordPlaced(context, node) {
265
+ context.placed.set(node.id, node);
266
+ recordOccupied(context, node);
267
+ for (const definition of context.connectorDefinitionsByFocus.get(node.id) ?? []) {
268
+ context.work.spend('connector adjacency update');
269
+ const parent = context.placed.get(definition.parentId);
270
+ const child = context.placed.get(definition.childId);
271
+ if (parent === undefined || child === undefined)
272
+ continue;
273
+ context.placedConnectors.set(definition.key, {
274
+ parentId: definition.parentId,
275
+ childId: definition.childId,
276
+ parent,
277
+ child,
278
+ });
279
+ }
280
+ }
214
281
  function* availableX(context, focusId, preferred, y) {
215
282
  const conflictsAtPreferred = candidateConflicts(context, focusId, preferred, y);
216
283
  const crossingsAtPreferred = yield* crossingCountForCandidate(context, focusId, preferred, y);
217
- let best;
218
- const optimizationSteps = Math.max(32, context.focuses.size * 2);
219
- for (let distance = 0; distance <= optimizationSteps; distance += 1) {
284
+ if (!conflictsCandidate(conflictsAtPreferred) && crossingsAtPreferred === 0) {
285
+ return {
286
+ x: preferred,
287
+ moved: false,
288
+ conflictsAtPreferred,
289
+ crossingsAtPreferred,
290
+ crossings: 0,
291
+ };
292
+ }
293
+ let best = conflictsCandidate(conflictsAtPreferred)
294
+ ? undefined
295
+ : { x: preferred, crossings: crossingsAtPreferred, distance: 0, directionOrder: 0 };
296
+ // Crossing optimization is deliberately local to the declared lane or
297
+ // preferred coordinate. Scaling the radius with total tree size made one
298
+ // unavoidable crossing consume the entire global work budget on large
299
+ // authored trees. Thirty-two spacing steps still cover a 129-column search
300
+ // window with the default spacing while keeping every node's soft search
301
+ // predictably bounded.
302
+ const optimizationSteps = 32;
303
+ for (let distance = 1; distance <= optimizationSteps; distance += 1) {
220
304
  yield* cancellationCheckpoint(context.signal, distance, 8);
221
- const offsets = distance === 0 ? [0] : [distance, -distance];
305
+ const offsets = [distance, -distance];
222
306
  for (let directionOrder = 0; directionOrder < offsets.length; directionOrder += 1) {
223
307
  const offset = offsets[directionOrder];
224
308
  if (offset === undefined)
225
309
  continue;
226
310
  context.work.spend('automatic placement candidate');
227
311
  const x = preferred + offset * context.nodeSpacing;
312
+ if (!coordinateWithinLane(context, focusId, x))
313
+ continue;
228
314
  const conflicts = candidateConflicts(context, focusId, x, y);
229
315
  if (conflictsCandidate(conflicts))
230
316
  continue;
231
- const crossings = yield* crossingCountForCandidate(context, focusId, x, y);
317
+ const crossings = yield* crossingCountForCandidate(context, focusId, x, y, best?.crossings);
232
318
  if (best === undefined ||
233
319
  crossings < best.crossings ||
234
320
  (crossings === best.crossings && distance < best.distance) ||
@@ -262,6 +348,8 @@ function* availableX(context, focusId, preferred, y) {
262
348
  for (const offset of [distance, -distance]) {
263
349
  context.work.spend('automatic placement fallback candidate');
264
350
  const x = preferred + offset * context.nodeSpacing;
351
+ if (!coordinateWithinLane(context, focusId, x))
352
+ continue;
265
353
  if (conflictsCandidate(candidateConflicts(context, focusId, x, y)))
266
354
  continue;
267
355
  return {
@@ -273,7 +361,9 @@ function* availableX(context, focusId, preferred, y) {
273
361
  };
274
362
  }
275
363
  }
276
- throw new Error('Unable to find a free focus coordinate');
364
+ const laneId = context.laneIds.get(focusId) ?? 'default';
365
+ const bounds = boundsForFocus(context, focusId);
366
+ throw new ServiceError('FOCUS_LAYOUT_LANE_CAPACITY_BLOCKED', 'No collision-free coordinate is available inside the focus lane bounds', { focusId, laneId, ...finiteLaneBoundDetails(bounds) });
277
367
  }
278
368
  function* placeFocus(context, focusId, inheritedStack = new Set()) {
279
369
  yield* cancellationCheckpoint(context.signal);
@@ -301,8 +391,7 @@ function* placeFocus(context, focusId, inheritedStack = new Set()) {
301
391
  preserved: false,
302
392
  sourceMode: focus.position.mode,
303
393
  };
304
- context.placed.set(focusId, fallback);
305
- recordOccupied(context, fallback);
394
+ recordPlaced(context, fallback);
306
395
  return fallback;
307
396
  }
308
397
  if (inheritedStack.size >= FOCUS_GRAPH_MAX_DEPTH) {
@@ -386,7 +475,9 @@ function* placeFocus(context, focusId, inheritedStack = new Set()) {
386
475
  const convergenceX = focus.convergence && parents.length > 1
387
476
  ? Math.floor(parents.reduce((total, parent) => total + parent.x, 0) / parents.length)
388
477
  : undefined;
389
- const preferredX = focus.position.preferredX ?? convergenceX ?? context.laneBases.get(laneId) ?? 0;
478
+ const requestedPreferredX = focus.position.preferredX ?? convergenceX ?? context.laneBases.get(laneId) ?? 0;
479
+ const bounds = boundsForFocus(context, focusId);
480
+ const preferredX = Math.max(bounds.minimumX, Math.min(bounds.maximumX, requestedPreferredX));
390
481
  const preferredY = Math.max(requiredY, focus.position.preferredY ?? requiredY);
391
482
  const coordinate = yield* availableX(context, focusId, preferredX, preferredY);
392
483
  node = {
@@ -398,6 +489,9 @@ function* placeFocus(context, focusId, inheritedStack = new Set()) {
398
489
  sourceMode: 'auto',
399
490
  };
400
491
  const explanations = [];
492
+ if (preferredX !== requestedPreferredX) {
493
+ explanations.push(`lane ${laneId} bounds clamped x ${requestedPreferredX} -> ${preferredX}`);
494
+ }
401
495
  if (coordinate.conflictsAtPreferred.visibleOverlaps.length > 0) {
402
496
  explanations.push(`visible overlap with ${coordinate.conflictsAtPreferred.visibleOverlaps.join(', ')}`);
403
497
  }
@@ -416,16 +510,15 @@ function* placeFocus(context, focusId, inheritedStack = new Set()) {
416
510
  focusId,
417
511
  kind: coordinate.moved ? movedKind : 'placed',
418
512
  message: coordinate.moved
419
- ? `Moved from preferred (${preferredX}, ${preferredY}) to (${node.x}, ${node.y}) to resolve ${explanations.join(' and ')}`
420
- : `Placed in lane ${laneId} at (${node.x}, ${node.y}); connector crossings ${coordinate.crossings}`,
513
+ ? `Moved from preferred (${requestedPreferredX}, ${preferredY}) to (${node.x}, ${node.y}) to resolve ${explanations.join(' and ')}`
514
+ : `Placed in lane ${laneId} at (${node.x}, ${node.y}); connector crossings ${coordinate.crossings}${preferredX === requestedPreferredX ? '' : `; requested x ${requestedPreferredX} was clamped to lane bounds`}`,
421
515
  });
422
516
  }
423
517
  }
424
518
  const cycleFallback = context.placed.get(focusId);
425
519
  if (cycleFallback !== undefined)
426
520
  return cycleFallback;
427
- context.placed.set(focusId, node);
428
- recordOccupied(context, node);
521
+ recordPlaced(context, node);
429
522
  return node;
430
523
  }
431
524
  function* visibleOverlapDiagnostics(context) {
@@ -557,6 +650,32 @@ function* parentOrderDiagnostics(context) {
557
650
  }
558
651
  }
559
652
  }
653
+ function* laneBoundsDiagnostics(context) {
654
+ let nodeIndex = 0;
655
+ for (const node of context.placed.values()) {
656
+ context.work.spend('lane-bounds diagnostic');
657
+ yield* cancellationCheckpoint(context.signal, nodeIndex, 32);
658
+ nodeIndex += 1;
659
+ const bounds = boundsForFocus(context, node.id);
660
+ if (node.x >= bounds.minimumX && node.x <= bounds.maximumX)
661
+ continue;
662
+ const focus = context.focuses.get(node.id);
663
+ context.diagnostics.push({
664
+ code: 'FOCUS_LAYOUT_LANE_BOUNDS_VIOLATION',
665
+ severity: 'error',
666
+ category: 'layout',
667
+ message: `Focus ${node.id} is at x ${node.x}, outside lane ${node.laneId} bounds ${bounds.minimumX} through ${bounds.maximumX}`,
668
+ ...(focus?.sourceLocation === undefined ? {} : { location: focus.sourceLocation }),
669
+ details: {
670
+ focusId: node.id,
671
+ laneId: node.laneId,
672
+ x: node.x,
673
+ ...finiteLaneBoundDetails(bounds),
674
+ preserved: node.preserved,
675
+ },
676
+ });
677
+ }
678
+ }
560
679
  function* layoutFocusTreeSteps(plan, options = {}) {
561
680
  yield* cancellationCheckpoint(options.signal);
562
681
  if (plan.focuses.length > FOCUS_GRAPH_MAX_NODES) {
@@ -604,8 +723,11 @@ function* layoutFocusTreeSteps(plan, options = {}) {
604
723
  previous: new Map(options.previous?.nodes.map((node) => [node.id, node]) ?? []),
605
724
  placed: new Map(),
606
725
  occupied: new Map(),
726
+ connectorDefinitionsByFocus: connectorDefinitionsByFocus(focuses),
727
+ placedConnectors: new Map(),
607
728
  mutualExclusions: mutualExclusionMap(focuses),
608
729
  laneBases: laneBases(plan, discoveredLanes, options.laneSpacing ?? 8),
730
+ laneBounds: laneBounds(plan),
609
731
  laneIds,
610
732
  nodeSpacing: options.nodeSpacing ?? 2,
611
733
  minimumMutualExclusionSpacing: options.nodeSpacing ?? 2,
@@ -629,6 +751,7 @@ function* layoutFocusTreeSteps(plan, options = {}) {
629
751
  yield* placeFocus(context, focus.id);
630
752
  }
631
753
  yield* parentOrderDiagnostics(context);
754
+ yield* laneBoundsDiagnostics(context);
632
755
  yield* visibleOverlapDiagnostics(context);
633
756
  yield* mutualExclusionSpacingDiagnostics(context);
634
757
  yield* connectorCrossingDiagnostics(context);
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/hoi4_agent_tools/focus/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/hoi4_agent_tools/focus/layout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/hoi4_agent_tools/focus/lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAapD,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAE/B,KAAK,qBAAqB,EAE1B,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,0BAA0B,GAAG,UAAU,EAAE,CAsDzF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AA+KrB,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,gBAAqB,GAAG,UAAU,EAAE,CA8nB/F"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/hoi4_agent_tools/focus/lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,kBAAkB,CAAC;AAahE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAE/B,KAAK,qBAAqB,EAE1B,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,0BAA0B,GAAG,UAAU,EAAE,CAsDzF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAkMrB,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,gBAAqB,GAAG,UAAU,EAAE,CA0oB/F"}
@@ -74,6 +74,24 @@ function referenceSet(catalog, kind) {
74
74
  return undefined;
75
75
  return values instanceof Set ? values : new Set(values);
76
76
  }
77
+ function referenceSymbolKind(kind) {
78
+ switch (kind) {
79
+ case 'decision':
80
+ return 'decision';
81
+ case 'decision_category':
82
+ return 'decision_category';
83
+ case 'event':
84
+ return 'event';
85
+ case 'idea':
86
+ return 'idea';
87
+ case 'leader':
88
+ return 'leader';
89
+ case 'formable':
90
+ return 'formable';
91
+ case 'helper':
92
+ return 'scripted_effect';
93
+ }
94
+ }
77
95
  function graphCycles(focuses, edges, work) {
78
96
  const state = new Map();
79
97
  const path = [];
@@ -705,11 +723,14 @@ export function lintFocusTree(plan, options = {}) {
705
723
  for (const icon of focus.icons) {
706
724
  if (options.index === undefined || options.index.find('sprite', icon.sprite) !== undefined)
707
725
  continue;
726
+ const partial = options.index.hasSkippedSourceForKind('sprite');
708
727
  diagnostics.push({
709
- code: 'FOCUS_ICON_REFERENCE_MISSING',
710
- severity: 'error',
728
+ code: partial ? 'FOCUS_ICON_REFERENCE_PARTIAL' : 'FOCUS_ICON_REFERENCE_MISSING',
729
+ severity: partial ? 'warning' : 'error',
711
730
  category: 'reference',
712
- message: `Focus ${focus.id} references missing sprite ${icon.sprite}`,
731
+ message: partial
732
+ ? `The partial shared inventory cannot verify sprite ${icon.sprite} for focus ${focus.id}`
733
+ : `Focus ${focus.id} references missing sprite ${icon.sprite}`,
713
734
  ...(icon.sourceLocation === undefined
714
735
  ? withFocusLocation(focus)
715
736
  : { location: icon.sourceLocation }),
@@ -730,11 +751,16 @@ export function lintFocusTree(plan, options = {}) {
730
751
  for (const key of [focus.localisation.titleKey, focus.localisation.descriptionKey]) {
731
752
  if (options.index.find('localisation', `${language}:${key}`) !== undefined)
732
753
  continue;
754
+ const partial = options.index.hasSkippedSourceForKind('localisation');
733
755
  diagnostics.push({
734
- code: 'FOCUS_LOCALISATION_REFERENCE_MISSING',
756
+ code: partial
757
+ ? 'FOCUS_LOCALISATION_REFERENCE_PARTIAL'
758
+ : 'FOCUS_LOCALISATION_REFERENCE_MISSING',
735
759
  severity: 'warning',
736
760
  category: 'reference',
737
- message: `Focus ${focus.id} has no ${language} localisation for ${key}`,
761
+ message: partial
762
+ ? `The partial shared inventory cannot verify ${language} localisation ${key} for focus ${focus.id}`
763
+ : `Focus ${focus.id} has no ${language} localisation for ${key}`,
738
764
  ...withFocusLocation(focus),
739
765
  details: { language, key },
740
766
  });
@@ -765,11 +791,14 @@ export function lintFocusTree(plan, options = {}) {
765
791
  const available = referenceSet(options.references, link.kind);
766
792
  if (available === undefined || available.has(link.target))
767
793
  continue;
794
+ const partial = options.index?.hasSkippedSourceForKind(referenceSymbolKind(link.kind)) ?? false;
768
795
  diagnostics.push({
769
- code: 'FOCUS_GAMEPLAY_REFERENCE_MISSING',
770
- severity: 'error',
796
+ code: partial ? 'FOCUS_GAMEPLAY_REFERENCE_PARTIAL' : 'FOCUS_GAMEPLAY_REFERENCE_MISSING',
797
+ severity: partial ? 'warning' : 'error',
771
798
  category: 'reference',
772
- message: `Focus ${focus.id} references missing ${link.kind} ${link.target}`,
799
+ message: partial
800
+ ? `The partial shared inventory cannot verify ${link.kind} ${link.target} for focus ${focus.id}`
801
+ : `Focus ${focus.id} references missing ${link.kind} ${link.target}`,
773
802
  ...(link.sourceLocation === undefined
774
803
  ? withFocusLocation(focus)
775
804
  : { location: link.sourceLocation }),