hoi4-agent-tools 4.6.0 → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/hoi4_agent_tools/map/relief/macro-relief.js +107 -0
  3. package/dist/hoi4_agent_tools/map/relief/terrain-synthesis.js +21 -12
  4. package/dist/hoi4_agent_tools/reference/known-mistakes.js +3 -0
  5. package/dist/hoi4_agent_tools/version.js +1 -1
  6. package/docs/map.md +3 -1
  7. package/npm-shrinkwrap.json +2 -2
  8. package/package.json +1 -1
  9. package/schemas/configuration.schema.json +1 -1
  10. package/schemas/continuous-focus-palette.schema.json +1 -1
  11. package/schemas/custom-weighted-pool.schema.json +1 -1
  12. package/schemas/decision-inspect-input.schema.json +1 -1
  13. package/schemas/error-log-input.schema.json +1 -1
  14. package/schemas/event-feature-manifest.schema.json +1 -1
  15. package/schemas/focus-plan.schema.json +1 -1
  16. package/schemas/focus-planning-sidecar.schema.json +1 -1
  17. package/schemas/geography-model.schema.json +1 -1
  18. package/schemas/gui-animation-source.schema.json +1 -1
  19. package/schemas/gui-helper.schema.json +1 -1
  20. package/schemas/gui-scenario.schema.json +1 -1
  21. package/schemas/helper-expansion-request.schema.json +1 -1
  22. package/schemas/helper-expansion-summary.schema.json +1 -1
  23. package/schemas/impact-inspect-input.schema.json +1 -1
  24. package/schemas/map-operation.schema.json +1 -1
  25. package/schemas/mechanic-test-input.schema.json +1 -1
  26. package/schemas/mod-index-input.schema.json +1 -1
  27. package/schemas/operation-result.schema.json +1 -1
  28. package/schemas/package-check-input.schema.json +1 -1
  29. package/schemas/package-manifest.schema.json +1 -1
  30. package/schemas/probability-analysis-result.schema.json +1 -1
  31. package/schemas/probability-compare-input.schema.json +1 -1
  32. package/schemas/probability-evaluate-input.schema.json +1 -1
  33. package/schemas/probability-inspect-input.schema.json +1 -1
  34. package/schemas/probability-render-input.schema.json +1 -1
  35. package/schemas/probability-scenario-set.schema.json +1 -1
  36. package/schemas/probability-sequence-input.schema.json +1 -1
  37. package/schemas/probability-simulate-input.schema.json +1 -1
  38. package/schemas/probability-sweep-input.schema.json +1 -1
  39. package/schemas/reference-context-input.schema.json +1 -1
  40. package/schemas/reference-read-input.schema.json +1 -1
  41. package/schemas/reference-search-input.schema.json +1 -1
  42. package/schemas/reference-sheets.schema.json +1 -1
  43. package/schemas/scenario-suite.schema.json +1 -1
  44. package/schemas/scenario-test-input.schema.json +1 -1
  45. package/schemas/script-validate-input.schema.json +1 -1
  46. package/schemas/shared-scenario.schema.json +1 -1
  47. package/schemas/source-lookup-input.schema.json +1 -1
  48. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.6.1 - 2026-10-26
4
+
5
+ - Stop flagging `constant:<category>.<key>` script-constant reads as scoped temporary-variable reads (`KNOWN_MISTAKE_TEMP_VARIABLE_SCOPE_PREFIX`).
6
+ - Make declared passes saddles whatever else stands there (ADR 0072). After the macro relief is composed, the heights in a pass's corridor are capped at the pass's saddle level, so a volcano cone, plateau or neighbouring feature that overlaps a pass no longer fills the gap and no longer fails the world with `MAP_PASS_NOT_LOWER`. Another range's body is left alone. `create_world.synthesisCheck` now also reports `MAP_PASS_NOT_LOWER`, so a preview catches what the write would block on. Models whose passes were refused now write; worlds with no overlapping feature on a pass are unchanged.
7
+
3
8
  ## 4.6.0 - 2026-10-25
4
9
 
5
10
  - Add the territory assignment service (ADR 0060). `assign_territory` grows up to 512 countries over the states or provinces of a map from capital and anchor seeds (state, province or pixel) with forced and blocked land, preferred strategic regions, subjects inside an overlord, merges, island policies, size targets by weight, extra cores and claims, and writes owner, controller, cores and claims. Borders follow rivers, ranges, lake shores and terrain changes (a shortest-path growth with barrier-weighted steps, size balancing, a corridor for cut-off seeds and a local search that shortens the artificial border); the result reports sizes against targets and the same seeds grown on distance alone. With `unit: "province"` the states a border cuts are regrouped in one pass, conserving population, resources and buildings exactly. `repartition_states` regroups the states of chosen owners along natural lines, and `update_states` edits up to 5,000 states in one rewrite. New diagnostics `MAP_TERRITORY_*`.
@@ -478,6 +478,112 @@ function applyVolcano(volcano, base, kind, mw, mh, scale, seed, targets) {
478
478
  }
479
479
  }
480
480
  // ---------------------------------------------------------------------------------------------
481
+ /**
482
+ * A declared pass is authoritative over the other relief (ADR 0072). The saddle of a range's
483
+ * envelope is lowered by the range alone; a volcano cone, a plateau or a neighbouring range that
484
+ * overlaps the pass adds height back and the gap disappears. After everything is composed, the
485
+ * heights along the pass corridor are capped at the saddle level (base plus crest times the
486
+ * envelope), with a soft edge across the corridor, so the pass is lower than the crest on both
487
+ * sides wherever it lies.
488
+ */
489
+ function carvePassSaddles(geography, tables, heights, kind, mw, mh) {
490
+ const aspect = mh / mw;
491
+ // The line of every range in cell units, one point per table entry, with its footprint.
492
+ const lines = new Map();
493
+ for (const range of geography.ranges) {
494
+ const table = tables.find((candidate) => candidate.id === range.id);
495
+ if (table === undefined)
496
+ continue;
497
+ const x = new Float64Array(table.count);
498
+ const y = new Float64Array(table.count);
499
+ let widest = 0;
500
+ for (let j = 0; j < table.count; j += 1) {
501
+ const point = sampleAlong(range.path, geography.frame, j / (table.count - 1));
502
+ x[j] = point.x * mw;
503
+ y[j] = point.y * mh;
504
+ widest = Math.max(widest, table.halfWidth[j]);
505
+ }
506
+ lines.set(range.id, { x, y, reach: Math.max(2, widest * mw) });
507
+ }
508
+ for (const range of geography.ranges) {
509
+ const table = tables.find((candidate) => candidate.id === range.id);
510
+ const own = lines.get(range.id);
511
+ if (table === undefined || own === undefined)
512
+ continue;
513
+ const lineX = own.x;
514
+ const lineY = own.y;
515
+ for (const entry of table.passes) {
516
+ if (entry.depth <= 0)
517
+ continue;
518
+ const k = Math.min(table.count - 1, Math.max(0, Math.round(entry.at * (table.count - 1))));
519
+ // Half-width of the corridor in cells: the range's footprint, at least three cells, plus a
520
+ // soft edge of three more.
521
+ const corridor = Math.max(2, table.halfWidth[k] * mw);
522
+ const edge = 2;
523
+ const entries = Math.ceil((entry.halfLength / table.length) * (table.count - 1));
524
+ const first = Math.max(0, k - entries);
525
+ const last = Math.min(table.count - 1, k + entries);
526
+ let minX = Infinity;
527
+ let maxX = -Infinity;
528
+ let minY = Infinity;
529
+ let maxY = -Infinity;
530
+ for (let j = first; j <= last; j += 1) {
531
+ minX = Math.min(minX, lineX[j]);
532
+ maxX = Math.max(maxX, lineX[j]);
533
+ minY = Math.min(minY, lineY[j]);
534
+ maxY = Math.max(maxY, lineY[j]);
535
+ }
536
+ const reach = Math.ceil(corridor + edge) + 1;
537
+ const x0 = Math.max(0, Math.floor(minX) - reach);
538
+ const x1 = Math.min(mw - 1, Math.ceil(maxX) + reach);
539
+ const y0 = Math.max(0, Math.floor(minY) - reach);
540
+ const y1 = Math.min(mh - 1, Math.ceil(maxY) + reach);
541
+ const baseLevel = table.base[k];
542
+ const crestLevel = table.crest[k];
543
+ for (let y = y0; y <= y1; y += 1)
544
+ for (let x = x0; x <= x1; x += 1) {
545
+ const cell = y * mw + x;
546
+ if (kind[cell] !== LAND)
547
+ continue;
548
+ // The nearest point of the range line, which must lie inside the pass window.
549
+ let nearest = -1;
550
+ let nearestDistance = Infinity;
551
+ for (let j = 0; j < table.count; j += 1) {
552
+ const distance = Math.hypot(lineX[j] - (x + 0.5), lineY[j] - (y + 0.5));
553
+ if (distance < nearestDistance) {
554
+ nearestDistance = distance;
555
+ nearest = j;
556
+ }
557
+ }
558
+ if (nearest < first || nearest > last || nearestDistance > corridor + edge)
559
+ continue;
560
+ // A cell on the body of another range belongs to that range, not to this pass.
561
+ let onOther = false;
562
+ for (const [id, other] of lines) {
563
+ if (id === range.id)
564
+ continue;
565
+ for (let j = 0; j < other.x.length && !onOther; j += 1)
566
+ if (Math.hypot(other.x[j] - (x + 0.5), other.y[j] - (y + 0.5)) <= other.reach)
567
+ onOther = true;
568
+ if (onOther)
569
+ break;
570
+ }
571
+ if (onOther)
572
+ continue;
573
+ const along = ((nearest - k) / (table.count - 1)) * table.length;
574
+ const s = (along * along) / (entry.halfLength * entry.halfLength);
575
+ if (s >= 1)
576
+ continue;
577
+ const bump = (1 - s) * (1 - s);
578
+ const cap = baseLevel + (crestLevel - baseLevel) * (1 - entry.depth * bump);
579
+ const weight = nearestDistance <= corridor ? 1 : 1 - smoothstep((nearestDistance - corridor) / edge);
580
+ if (cap < heights[cell])
581
+ heights[cell] = heights[cell] + (cap - heights[cell]) * weight;
582
+ }
583
+ }
584
+ }
585
+ void aspect;
586
+ }
481
587
  /** Build the macro relief of the model. */
482
588
  export function synthesizeMacroRelief(input) {
483
589
  const { geography, width, height, seed } = input;
@@ -519,6 +625,7 @@ export function synthesizeMacroRelief(input) {
519
625
  heights[index] = Math.min(HEIGHT_CEILING, heights[index] + targets.delta[index]);
520
626
  footprint[index] = Math.max(footprint[index], targets.footprint[index]);
521
627
  }
628
+ carvePassSaddles(geography, ranges, heights, kind, mw, mh);
522
629
  return {
523
630
  width: mw,
524
631
  height: mh,
@@ -115,18 +115,27 @@ export function checkTerrainRivers(input) {
115
115
  if (macro.kind[cell] === LAND)
116
116
  macro.heights[cell] = adjust(2 * x + 1, 2 * y + 1, macro.heights[cell]);
117
117
  }
118
- return [
119
- ...synthesizeHydrology({
120
- geography,
121
- macro,
122
- seed,
123
- density: input.rivers?.density,
124
- count: input.rivers?.count,
125
- rainfall: input.rainfall,
126
- landPixels,
127
- signal: input.signal,
128
- }).notes,
129
- ];
118
+ const hydrology = synthesizeHydrology({
119
+ geography,
120
+ macro,
121
+ seed,
122
+ density: input.rivers?.density,
123
+ count: input.rivers?.count,
124
+ rainfall: input.rainfall,
125
+ landPixels,
126
+ signal: input.signal,
127
+ });
128
+ const notes = [...hydrology.notes];
129
+ // The pass test of the write, on the macro grid: a declared pass must be a saddle lower than
130
+ // the crest on both sides. Only its error is reported, so a preview never blocks on a warning
131
+ // the full-resolution write would not raise.
132
+ const quantised = new Uint8Array(macro.width * macro.height);
133
+ for (let index = 0; index < quantised.length; index += 1)
134
+ quantised[index] = Math.max(0, Math.min(255, Math.round(hydrology.heights[index])));
135
+ for (const note of checkRangesAndFeatures(geography, macro.ranges, { width: macro.width, height: macro.height, kind: macro.kind, heights: quantised }, (peak) => peakHeight(peak, macro.scale), (peak) => peakHeight(peak, macro.scale)))
136
+ if (note.code === 'MAP_PASS_NOT_LOWER')
137
+ notes.push(note);
138
+ return notes;
130
139
  }
131
140
  /** Build relief, hydrology, normals and fields for a geography model on a map of the given size. */
132
141
  export function synthesizeTerrain(input) {
@@ -256,6 +256,9 @@ const detectors = {
256
256
  const findings = [];
257
257
  for (const { node, token } of names) {
258
258
  const name = token.slice(token.lastIndexOf('.') + 1);
259
+ // `constant:category.key` reads a script constant, not a scoped variable.
260
+ if (token.startsWith('constant:'))
261
+ continue;
259
262
  if (!temporary.has(name) || regular.has(name))
260
263
  continue;
261
264
  if (!/^(?:[A-Za-z_][\w]*|[a-z_]+:[\w]+)(?:\.[A-Za-z_][\w]*)+$/u.test(token))
@@ -1,6 +1,6 @@
1
1
  import { LATEST_PROTOCOL_VERSION } from '@modelcontextprotocol/sdk/types.js';
2
2
  export const PACKAGE_NAME = 'hoi4-agent-tools';
3
- export const PACKAGE_VERSION = '4.6.0';
3
+ export const PACKAGE_VERSION = '4.6.1';
4
4
  export const MCP_PROTOCOL_VERSION = LATEST_PROTOCOL_VERSION;
5
5
  export const CONFIG_VERSION = 1;
6
6
  export const TRANSACTION_VERSION = 2;
package/docs/map.md CHANGED
@@ -557,7 +557,9 @@ A river the model draws is authoritative over the synthesised relief (ADR 0071).
557
557
 
558
558
  Only a course that cannot exist is refused with `MAP_RIVER_UNREACHABLE_MOUTH`: a mouth on another landmass or not reachable over land, an unreachable source or via point, a lake without a free shore. The error lists every such river in `details.rivers` with its reason, or `blockedBy` another failed river.
559
559
 
560
- To check all of this without a write, call `hoi4.map_rewrite` with `preview: true` and `synthesisCheck: true` on the `create_world` operation: it runs the relief and river synthesis only, writes nothing and returns `MAP_SYNTHESIS_CHECK_READY` or `MAP_SYNTHESIS_CHECK_BLOCKED` with `data.synthesisCheck` (unreachable rivers and carved crossings). It does not run the partition, the countries or the climate stage (ADR 0070). A world that fails to generate returns only its own blockers, never the findings of the map it would replace.
560
+ A declared pass is a saddle lower than the crest on both sides (ADR 0072): the heights in its corridor are capped at the saddle level after all relief is composed, so a volcano cone or plateau on the pass is cut down there (move the volcano if the cone should stay whole). Another range's body is not touched.
561
+
562
+ To check all of this without a write, call `hoi4.map_rewrite` with `preview: true` and `synthesisCheck: true` on the `create_world` operation: it runs the relief and river synthesis only, writes nothing and returns `MAP_SYNTHESIS_CHECK_READY` or `MAP_SYNTHESIS_CHECK_BLOCKED` with `data.synthesisCheck` (unreachable rivers, carved crossings and passes that are not lower than their crest). It does not run the partition, the countries or the climate stage (ADR 0070). A world that fails to generate returns only its own blockers, never the findings of the map it would replace.
561
563
 
562
564
  ### Feature-aware provinces, states and strategic regions
563
565
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "hoi4-agent-tools",
3
- "version": "4.6.0",
3
+ "version": "4.6.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "hoi4-agent-tools",
9
- "version": "4.6.0",
9
+ "version": "4.6.1",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@fontsource-variable/roboto": "5.3.0",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hoi4-agent-tools",
3
3
  "mcpName": "io.github.klimPaskov/hoi4-agent-tools",
4
- "version": "4.6.0",
4
+ "version": "4.6.1",
5
5
  "description": "Build HOI4 mods: focus trees, events, decisions, worlds, GUI previews, docs and AI balance.",
6
6
  "type": "module",
7
7
  "license": "Apache-2.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/configuration.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/configuration.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/continuous-focus-palette.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/continuous-focus-palette.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/custom-weighted-pool.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/custom-weighted-pool.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/decision-inspect-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/decision-inspect-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/error-log-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/error-log-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/event-feature-manifest.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/event-feature-manifest.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/focus-plan.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/focus-plan.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/focus-planning-sidecar.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/focus-planning-sidecar.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/geography-model.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/geography-model.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/gui-animation-source.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/gui-animation-source.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/gui-helper.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/gui-helper.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/gui-scenario.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/gui-scenario.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/helper-expansion-request.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/helper-expansion-request.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/helper-expansion-summary.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/helper-expansion-summary.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/impact-inspect-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/impact-inspect-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/map-operation.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/map-operation.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "oneOf": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/mechanic-test-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/mechanic-test-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/mod-index-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/mod-index-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/operation-result.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/operation-result.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/package-check-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/package-check-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/package-manifest.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/package-manifest.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-analysis-result.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-analysis-result.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-compare-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-compare-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-evaluate-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-evaluate-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-inspect-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-inspect-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-render-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-render-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-scenario-set.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-scenario-set.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-sequence-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-sequence-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-simulate-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-simulate-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/probability-sweep-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/probability-sweep-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/reference-context-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/reference-context-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/reference-read-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/reference-read-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/reference-search-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/reference-search-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/reference-sheets.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/reference-sheets.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/scenario-suite.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/scenario-suite.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/scenario-test-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/scenario-test-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/script-validate-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/script-validate-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/shared-scenario.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/shared-scenario.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.0/schemas/source-lookup-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v4.6.1/schemas/source-lookup-input.schema.json",
3
3
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4
4
  "type": "object",
5
5
  "properties": {
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.klimPaskov/hoi4-agent-tools",
4
4
  "title": "HOI4 Agent Tools",
5
5
  "description": "Build HOI4 mods: focus trees, events, decisions, worlds, GUI previews, docs and AI balance.",
6
- "version": "4.6.0",
6
+ "version": "4.6.1",
7
7
  "repository": {
8
8
  "url": "https://github.com/klimPaskov/hoi4-agent-tools",
9
9
  "source": "github"
@@ -13,7 +13,7 @@
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "hoi4-agent-tools",
16
- "version": "4.6.0",
16
+ "version": "4.6.1",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  }