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.
- package/CHANGELOG.md +46 -0
- package/README.md +44 -27
- package/SECURITY.md +4 -2
- package/dist/bin/setup.js +43 -6
- package/dist/bin/setup.js.map +1 -1
- package/dist/hoi4_agent_tools/core/configuration.d.ts +1 -0
- package/dist/hoi4_agent_tools/core/configuration.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/core/configuration.js +3 -3
- package/dist/hoi4_agent_tools/core/configuration.js.map +1 -1
- package/dist/hoi4_agent_tools/core/engine.d.ts +1 -0
- package/dist/hoi4_agent_tools/core/engine.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/core/engine.js +1 -0
- package/dist/hoi4_agent_tools/core/engine.js.map +1 -1
- package/dist/hoi4_agent_tools/core/index.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/core/index.js +10 -2
- package/dist/hoi4_agent_tools/core/index.js.map +1 -1
- package/dist/hoi4_agent_tools/core/transactions.d.ts +2 -0
- package/dist/hoi4_agent_tools/core/transactions.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/core/transactions.js +49 -6
- package/dist/hoi4_agent_tools/core/transactions.js.map +1 -1
- package/dist/hoi4_agent_tools/core/workspace.js +1 -1
- package/dist/hoi4_agent_tools/core/workspace.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/compiler.d.ts +2 -1
- package/dist/hoi4_agent_tools/focus/compiler.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/compiler.js +12 -2
- package/dist/hoi4_agent_tools/focus/compiler.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/importer.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/importer.js +13 -2
- package/dist/hoi4_agent_tools/focus/importer.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/layout.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/layout.js +165 -42
- package/dist/hoi4_agent_tools/focus/layout.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/lint.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/lint.js +37 -8
- package/dist/hoi4_agent_tools/focus/lint.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/model.d.ts +5 -1
- package/dist/hoi4_agent_tools/focus/model.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/model.js +2 -0
- package/dist/hoi4_agent_tools/focus/model.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/presentation.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/presentation.js +13 -5
- package/dist/hoi4_agent_tools/focus/presentation.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/render.d.ts +4 -0
- package/dist/hoi4_agent_tools/focus/render.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/render.js +17 -3
- package/dist/hoi4_agent_tools/focus/render.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/service.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/service.js +142 -97
- package/dist/hoi4_agent_tools/focus/service.js.map +1 -1
- package/dist/hoi4_agent_tools/focus/source-update.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/focus/source-update.js +9 -4
- package/dist/hoi4_agent_tools/focus/source-update.js.map +1 -1
- package/dist/hoi4_agent_tools/gui/studio.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/gui/studio.js +3 -2
- package/dist/hoi4_agent_tools/gui/studio.js.map +1 -1
- package/dist/hoi4_agent_tools/map/service.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/map/service.js +11 -5
- package/dist/hoi4_agent_tools/map/service.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts +2 -1
- package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/prompts/register.js +35 -13
- package/dist/hoi4_agent_tools/mcp/prompts/register.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts +1 -1
- package/dist/hoi4_agent_tools/mcp/resources/register.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/resources/register.js +1 -0
- package/dist/hoi4_agent_tools/mcp/resources/register.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/security/auth.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/security/auth.js +1 -4
- package/dist/hoi4_agent_tools/mcp/security/auth.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts +12 -0
- package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/base-tools.js +297 -218
- package/dist/hoi4_agent_tools/mcp/server/base-tools.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/create.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/create.js +8 -2
- package/dist/hoi4_agent_tools/mcp/server/create.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts +5 -0
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.js +1 -0
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/result.js +1 -1
- package/dist/hoi4_agent_tools/mcp/server/result.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.d.ts +31 -0
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.d.ts.map +1 -0
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js +127 -0
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js.map +1 -0
- package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/tools/focus.js +131 -30
- package/dist/hoi4_agent_tools/mcp/tools/focus.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts +6 -0
- package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/tools/gui.js +40 -12
- package/dist/hoi4_agent_tools/mcp/tools/gui.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/tools/map.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/tools/map.js +39 -12
- package/dist/hoi4_agent_tools/mcp/tools/map.js.map +1 -1
- package/dist/hoi4_agent_tools/mcp/transports/http.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/mcp/transports/http.js +3 -0
- package/dist/hoi4_agent_tools/mcp/transports/http.js.map +1 -1
- package/dist/hoi4_agent_tools/schemas/focus.d.ts +1 -1
- package/dist/hoi4_agent_tools/schemas/focus.d.ts.map +1 -1
- package/dist/hoi4_agent_tools/schemas/focus.js +16 -2
- package/dist/hoi4_agent_tools/schemas/focus.js.map +1 -1
- package/dist/hoi4_agent_tools/version.d.ts +1 -1
- package/dist/hoi4_agent_tools/version.js +1 -1
- package/docs/README.md +3 -2
- package/docs/adr/0012-autonomous-rewrites.md +55 -0
- package/docs/adr/README.md +1 -0
- package/docs/agent-integration.md +146 -0
- package/docs/architecture.md +20 -4
- package/docs/artifacts.md +8 -5
- package/docs/completion-report.md +109 -79
- package/docs/configuration.md +30 -10
- package/docs/focus-workflow.md +134 -5
- package/docs/gui-workflow.md +7 -3
- package/docs/limitations.md +4 -2
- package/docs/map-workflow.md +15 -9
- package/docs/performance.md +1 -1
- package/docs/release.md +12 -7
- package/docs/research/mcp-2026-07-10.md +9 -3
- package/docs/security.md +12 -6
- package/docs/self-hosting.md +8 -6
- package/docs/transactions.md +45 -27
- package/docs/troubleshooting.md +12 -4
- package/package.json +7 -3
- package/schemas/configuration.schema.json +3 -2
- package/schemas/continuous-focus-palette.schema.json +1 -1
- package/schemas/focus-plan.schema.json +74 -49
- package/schemas/focus-planning-sidecar.schema.json +33 -18
- package/schemas/gui-animation-source.schema.json +1 -1
- package/schemas/gui-helper.schema.json +1 -1
- package/schemas/gui-scenario.schema.json +1 -1
- package/schemas/map-operation.schema.json +1 -1
- package/schemas/operation-result.schema.json +1 -1
- package/schemas/transaction-manifest.schema.json +1 -1
- 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
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
102
|
-
const parent = nodeFor(parentId);
|
|
103
|
-
if (parent === undefined)
|
|
120
|
+
if (!focuses.has(parentId))
|
|
104
121
|
continue;
|
|
105
|
-
|
|
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
|
|
149
|
-
const
|
|
150
|
-
|
|
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
|
-
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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
|
|
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 (${
|
|
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
|
|
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,
|
|
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:
|
|
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:
|
|
756
|
+
code: partial
|
|
757
|
+
? 'FOCUS_LOCALISATION_REFERENCE_PARTIAL'
|
|
758
|
+
: 'FOCUS_LOCALISATION_REFERENCE_MISSING',
|
|
735
759
|
severity: 'warning',
|
|
736
760
|
category: 'reference',
|
|
737
|
-
message:
|
|
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:
|
|
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 }),
|