hoi4-agent-tools 3.0.1 → 3.0.2
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 +6 -0
- package/dist/hoi4_agent_tools/gui/assets.js +26 -14
- package/dist/hoi4_agent_tools/gui/renderer.js +4 -11
- package/dist/hoi4_agent_tools/gui/scenario.js +7 -1
- package/dist/hoi4_agent_tools/mcp/tools/gui.js +6 -1
- package/dist/hoi4_agent_tools/version.js +1 -1
- package/docs/gui.md +2 -0
- package/package.json +1 -1
- package/schemas/configuration.schema.json +1 -1
- package/schemas/continuous-focus-palette.schema.json +1 -1
- package/schemas/custom-weighted-pool.schema.json +1 -1
- package/schemas/event-feature-manifest.schema.json +1 -1
- package/schemas/focus-plan.schema.json +1 -1
- package/schemas/focus-planning-sidecar.schema.json +1 -1
- package/schemas/gui-animation-source.schema.json +1 -1
- package/schemas/gui-helper.schema.json +1 -1
- package/schemas/gui-scenario.schema.json +59 -55
- package/schemas/map-operation.schema.json +1 -1
- package/schemas/operation-result.schema.json +1 -1
- package/schemas/probability-analysis-result.schema.json +1 -1
- package/schemas/probability-compare-input.schema.json +1 -1
- package/schemas/probability-evaluate-input.schema.json +1 -1
- package/schemas/probability-inspect-input.schema.json +1 -1
- package/schemas/probability-render-input.schema.json +1 -1
- package/schemas/probability-scenario-set.schema.json +1 -1
- package/schemas/probability-sequence-input.schema.json +1 -1
- package/schemas/probability-simulate-input.schema.json +1 -1
- package/schemas/probability-sweep-input.schema.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
No unreleased changes.
|
|
6
6
|
|
|
7
|
+
## 3.0.2 - 2026-08-31
|
|
8
|
+
|
|
9
|
+
- Render enlarged HOI4 bitmap glyphs as pre-scaled atlas masks so VPS and Linux output stays crisp instead of depending on platform SVG interpolation.
|
|
10
|
+
- Apply bitmap-font face, border, and localisation colours with portable alpha masks instead of SVG colour-matrix filters that could be ignored by remote rasterizers.
|
|
11
|
+
- Clarify that GUI `uiScale` represents the in-game layout scale and is not an artifact zoom control.
|
|
12
|
+
|
|
7
13
|
## 3.0.1 - 2026-08-31
|
|
8
14
|
|
|
9
15
|
- Render technology folders with the source GUI's actual small and regular item geometry, infer small items from equipment unlock behavior, and include horizontal or vertical year guides.
|
|
@@ -664,7 +664,7 @@ export class GuiAssetCatalog {
|
|
|
664
664
|
const pageFile = this.resolveBmFontPage(entry, pagePath ?? '', metric.page);
|
|
665
665
|
const raster = pageFile === undefined
|
|
666
666
|
? undefined
|
|
667
|
-
: await this.loadBmFontGlyph(entry, pageFile, metric, codePoint);
|
|
667
|
+
: await this.loadBmFontGlyph(entry, pageFile, metric, codePoint, scale);
|
|
668
668
|
if (raster !== undefined && pageFile !== undefined) {
|
|
669
669
|
pageHashes.add(pageFile.sha256);
|
|
670
670
|
glyphs.push({
|
|
@@ -674,8 +674,8 @@ export class GuiAssetCatalog {
|
|
|
674
674
|
...(raster.borderDataUri === undefined ? {} : { borderDataUri: raster.borderDataUri }),
|
|
675
675
|
x: penX + metric.xOffset * scale,
|
|
676
676
|
y: metric.yOffset * scale,
|
|
677
|
-
width: raster.width * scale,
|
|
678
|
-
height: raster.height * scale,
|
|
677
|
+
width: raster.width * (scale > 1 ? 1 : scale),
|
|
678
|
+
height: raster.height * (scale > 1 ? 1 : scale),
|
|
679
679
|
});
|
|
680
680
|
}
|
|
681
681
|
else if (metric.width > 0 &&
|
|
@@ -782,10 +782,13 @@ export class GuiAssetCatalog {
|
|
|
782
782
|
this.metrics.set(key, null);
|
|
783
783
|
return undefined;
|
|
784
784
|
}
|
|
785
|
-
loadBmFontGlyph(entry, pageFile, metric, codePoint) {
|
|
785
|
+
loadBmFontGlyph(entry, pageFile, metric, codePoint, scale) {
|
|
786
786
|
if (metric.width <= 0 || metric.height <= 0)
|
|
787
787
|
return Promise.resolve(undefined);
|
|
788
|
-
const
|
|
788
|
+
const rasterScale = scale > 1 ? scale : 1;
|
|
789
|
+
const targetWidth = Math.max(1, Math.round(metric.width * rasterScale));
|
|
790
|
+
const targetHeight = Math.max(1, Math.round(metric.height * rasterScale));
|
|
791
|
+
const key = `${entry.sourceFile.sha256}:${pageFile.sha256}:${codePoint}:${metric.x}:${metric.y}:${metric.width}:${metric.height}:${targetWidth}:${targetHeight}`;
|
|
789
792
|
let promise = this.glyphRasters.get(key);
|
|
790
793
|
if (promise === undefined) {
|
|
791
794
|
promise = (async () => {
|
|
@@ -799,7 +802,7 @@ export class GuiAssetCatalog {
|
|
|
799
802
|
metric.y + metric.height > raster.height)
|
|
800
803
|
return undefined;
|
|
801
804
|
this.budget.reserveRasterOperation(`gui-bmfont-glyph:${key}`, `GUI BMFont glyph rasterization U+${codePoint.toString(16).toUpperCase()}`);
|
|
802
|
-
this.budget.reserve(
|
|
805
|
+
this.budget.reserve(targetWidth, targetHeight, `GUI BMFont glyph U+${codePoint.toString(16).toUpperCase()}`, { maximumPixels: RENDER_MAX_DECODED_PIXELS });
|
|
803
806
|
const extracted = await sharp(raster.data, {
|
|
804
807
|
raw: { width: raster.width, height: raster.height, channels: 4 },
|
|
805
808
|
limitInputPixels: RENDER_MAX_DECODED_PIXELS,
|
|
@@ -919,12 +922,21 @@ export class GuiAssetCatalog {
|
|
|
919
922
|
}
|
|
920
923
|
}
|
|
921
924
|
}
|
|
922
|
-
const encodeMask = (pixels) =>
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
.
|
|
925
|
+
const encodeMask = (pixels) => {
|
|
926
|
+
let pipeline = sharp(pixels, {
|
|
927
|
+
raw: { width: extracted.info.width, height: extracted.info.height, channels: 4 },
|
|
928
|
+
limitInputPixels: RENDER_MAX_DECODED_PIXELS,
|
|
929
|
+
});
|
|
930
|
+
if (targetWidth !== extracted.info.width || targetHeight !== extracted.info.height) {
|
|
931
|
+
pipeline = pipeline.resize(targetWidth, targetHeight, {
|
|
932
|
+
fit: 'fill',
|
|
933
|
+
kernel: scale >= 1 ? sharp.kernel.nearest : sharp.kernel.lanczos3,
|
|
934
|
+
});
|
|
935
|
+
}
|
|
936
|
+
return pipeline
|
|
937
|
+
.png({ compressionLevel: 9, adaptiveFiltering: false, palette: false })
|
|
938
|
+
.toBuffer();
|
|
939
|
+
};
|
|
928
940
|
const png = await encodeMask(facePixels);
|
|
929
941
|
const borderPng = borderPixels === undefined ? undefined : await encodeMask(borderPixels);
|
|
930
942
|
return {
|
|
@@ -932,8 +944,8 @@ export class GuiAssetCatalog {
|
|
|
932
944
|
...(borderPng === undefined
|
|
933
945
|
? {}
|
|
934
946
|
: { borderDataUri: `data:image/png;base64,${borderPng.toString('base64')}` }),
|
|
935
|
-
width:
|
|
936
|
-
height:
|
|
947
|
+
width: targetWidth,
|
|
948
|
+
height: targetHeight,
|
|
937
949
|
};
|
|
938
950
|
})();
|
|
939
951
|
this.glyphRasters.set(key, promise);
|
|
@@ -60,22 +60,15 @@ function sceneGlyphDefinitions(scene) {
|
|
|
60
60
|
.map(([key, glyphPath]) => `<path id="${outlineDefinitionId(key)}" d="${glyphPath}"/>`),
|
|
61
61
|
...[...bitmaps.entries()]
|
|
62
62
|
.sort(([left], [right]) => compareCodeUnits(left, right))
|
|
63
|
-
.map(([key, glyph]) => `<image id="${bitmapDefinitionId(key)}" width="${finite(glyph.width)}" height="${finite(glyph.height)}" href="${glyph.dataUri}" preserveAspectRatio="none" image-rendering="optimizeSpeed"/>${glyph.borderDataUri === undefined ? '' : `<image id="${bitmapDefinitionId(key, 'border')}" width="${finite(glyph.width)}" height="${finite(glyph.height)}" href="${glyph.borderDataUri}" preserveAspectRatio="none" image-rendering="optimizeSpeed"/>`}`),
|
|
63
|
+
.map(([key, glyph]) => `<image id="${bitmapDefinitionId(key)}" width="${finite(glyph.width)}" height="${finite(glyph.height)}" href="${glyph.dataUri}" preserveAspectRatio="none" image-rendering="optimizeSpeed" style="image-rendering:pixelated"/>${glyph.borderDataUri === undefined ? '' : `<image id="${bitmapDefinitionId(key, 'border')}" width="${finite(glyph.width)}" height="${finite(glyph.height)}" href="${glyph.borderDataUri}" preserveAspectRatio="none" image-rendering="optimizeSpeed" style="image-rendering:pixelated"/>`}`),
|
|
64
64
|
].join('');
|
|
65
65
|
}
|
|
66
66
|
function bitmapTintMarkup(id, colour, glyphs, rect) {
|
|
67
67
|
const match = /^#([0-9a-f]{6})([0-9a-f]{2})?$/iu.exec(colour);
|
|
68
68
|
const rgb = match?.[1] ?? 'ffffff';
|
|
69
69
|
const alpha = match?.[2] ?? 'ff';
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
Number.parseInt(rgb.slice(2, 4), 16) / 255,
|
|
73
|
-
Number.parseInt(rgb.slice(4, 6), 16) / 255,
|
|
74
|
-
Number.parseInt(alpha, 16) / 255,
|
|
75
|
-
].map(finite);
|
|
76
|
-
const [red, green, blue, opacity] = channels;
|
|
77
|
-
const matrix = `${red} 0 0 0 0 0 ${green} 0 0 0 0 0 ${blue} 0 0 0 0 0 ${opacity} 0`;
|
|
78
|
-
return `<defs><filter id="${id}" filterUnits="userSpaceOnUse" ${rectAttributes(rect)} color-interpolation-filters="sRGB"><feColorMatrix type="matrix" values="${matrix}"/></filter></defs><g filter="url(#${id})">${glyphs}</g>`;
|
|
70
|
+
const opacity = finite(Number.parseInt(alpha, 16) / 255);
|
|
71
|
+
return `<defs><mask id="${id}" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse" ${rectAttributes(rect)} style="mask-type:alpha"><g>${glyphs}</g></mask></defs><rect ${rectAttributes(rect)} fill="#${rgb}"${opacity >= 1 ? '' : ` fill-opacity="${opacity}"`} mask="url(#${id})"/>`;
|
|
79
72
|
}
|
|
80
73
|
function actualGlyphMarkup(glyphLine, originX, baseline, horizontalScale, bitmapLayer = 'face') {
|
|
81
74
|
if (glyphLine.source === 'fontkit-path')
|
|
@@ -92,7 +85,7 @@ function actualGlyphMarkup(glyphLine, originX, baseline, horizontalScale, bitmap
|
|
|
92
85
|
[glyph.x, glyph.y, glyph.width, glyph.height, glyphLine.baseline].every((value) => Math.abs(value - Math.round(value)) < 0.000_001);
|
|
93
86
|
const x = originX + glyph.x * horizontalScale;
|
|
94
87
|
const y = baseline + glyph.y - glyphLine.baseline;
|
|
95
|
-
return `<use href="#${bitmapDefinitionId(glyph.key, bitmapLayer)}" transform="translate(${finite(nativePixelGrid ? Math.round(x) : x)} ${finite(nativePixelGrid ? Math.round(y) : y)}) scale(${finite(horizontalScale)} 1)"/>`;
|
|
88
|
+
return `<use href="#${bitmapDefinitionId(glyph.key, bitmapLayer)}" transform="translate(${finite(nativePixelGrid ? Math.round(x) : x)} ${finite(nativePixelGrid ? Math.round(y) : y)}) scale(${finite(horizontalScale)} 1)" image-rendering="optimizeSpeed" style="image-rendering:pixelated"/>`;
|
|
96
89
|
})
|
|
97
90
|
.join('');
|
|
98
91
|
return '';
|
|
@@ -104,7 +104,13 @@ const GuiPreviewScenarioBodySchema = z
|
|
|
104
104
|
.regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/u),
|
|
105
105
|
description: z.string().max(500).optional(),
|
|
106
106
|
resolution: GuiPreviewResolutionSchema.default({ width: 1920, height: 1080 }),
|
|
107
|
-
uiScale: z
|
|
107
|
+
uiScale: z
|
|
108
|
+
.number()
|
|
109
|
+
.positive()
|
|
110
|
+
.min(0.25)
|
|
111
|
+
.max(4)
|
|
112
|
+
.default(1)
|
|
113
|
+
.describe('In-game UI scale. Use 1 for the normal 1920x1080 layout; this changes layout geometry and is not an output-image zoom.'),
|
|
108
114
|
state: previewStateSchema.default('normal'),
|
|
109
115
|
language: z
|
|
110
116
|
.string()
|
|
@@ -136,7 +136,12 @@ const resolutionSchema = z
|
|
|
136
136
|
.object({
|
|
137
137
|
width: z.number().int().min(320).max(RENDER_MAX_DIMENSION),
|
|
138
138
|
height: z.number().int().min(200).max(RENDER_MAX_DIMENSION),
|
|
139
|
-
uiScale: z
|
|
139
|
+
uiScale: z
|
|
140
|
+
.number()
|
|
141
|
+
.min(0.25)
|
|
142
|
+
.max(4)
|
|
143
|
+
.optional()
|
|
144
|
+
.describe('In-game UI scale for this resolution. Use 1 at 1920x1080; do not use it to enlarge an artifact.'),
|
|
140
145
|
})
|
|
141
146
|
.strict()
|
|
142
147
|
.superRefine(({ width, height }, context) => {
|
|
@@ -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 = '3.0.
|
|
3
|
+
export const PACKAGE_VERSION = '3.0.2';
|
|
4
4
|
export const MCP_PROTOCOL_VERSION = LATEST_PROTOCOL_VERSION;
|
|
5
5
|
export const CONFIG_VERSION = 1;
|
|
6
6
|
export const TRANSACTION_VERSION = 1;
|
package/docs/gui.md
CHANGED
|
@@ -35,6 +35,8 @@ The renderer resolves sprites and fonts through the complete mod, dependency, an
|
|
|
35
35
|
|
|
36
36
|
Bitmap text uses the language-appropriate HOI4 font definition and its real glyph atlas. Header, serif, compact, typewriter, black, inverted, and other declared faces keep their own glyph shapes, native metrics, face colour, border colour, language override, and font-specific `textcolors` palette. The renderer reads BMFont channel roles, separates face and outline coverage, and recognizes both vanilla black-on-white masks and conventional white-on-transparent custom masks. HOI4 localisation colour runs such as `§Y` and `§R` therefore colour the glyph face while retaining its sharp antialiasing and declared border instead of flattening the glyph into a blurred monochrome mask or switching to the tool font. The default language uses the base font rather than an unrelated language override, and the renderer recognizes installed-game atlases whose filename omits a page suffix declared by the matching `.fnt` file.
|
|
37
37
|
|
|
38
|
+
`uiScale` is the in-game UI scale, not an image zoom. Use `1` for the normal 1920×1080 layout. Enlarged bitmap-font glyphs are pre-scaled from their real atlas with deterministic pixel sampling, and bitmap colours use alpha masks so local and VPS renders produce the same pixels.
|
|
39
|
+
|
|
38
40
|
Layout follows Clausewitz orientation and element-origin anchors, including `CENTER_LEFT`, `CENTER_RIGHT`, `CENTER_UP`, `CENTER_DOWN`, `origo`, `centerposition`, inherited container coordinate origins, local scale, and both `%` and `%%` relative dimensions. Text boxes use native font metrics together with `maxWidth`, `maxHeight`, alignment, wrapping, and `fixedsize` clipping. Cornered tile sprites use fixed nine-slice borders and optional center tiling; progress bars composite their filled and background textures; masked shields composite their background and mask textures.
|
|
39
41
|
|
|
40
42
|
Scripted-GUI composition follows `parent_scripted_gui` chains even when the linked child window is a top-level sibling in the `.gui` file. Literal `always = yes` and `always = no` visibility and click-enabled blocks are applied automatically. A scenario's `values` object supplies concrete runtime values in one place: variable names resolve numeric text, scripted-localisation names resolve dynamic labels, a progress-bar element name sets its fill value, and element keys ending in `.image`, `.frame`, `.x`, `.y`, `.visible`, or `.enabled` update that visual property. Scripted-GUI property expressions such as `image = "[GetMeterSprite]"` or `x = meter_fill_width` consume matching scenario values automatically. Dynamic text is parsed after scenario and scripted-localisation substitution, so a runtime string containing `£command_power` or `£[GetResourceIcon]` renders the resolved inline HOI4 text icon instead of literal marker text. Dynamic lists instantiate their declared `entry_container` or `country_scope_entry_container`; each scenario row can select the country template with `countryScope`, choose an explicit `entryContainer`, provide `countryTag` and `ideology` for `GetFlag`, and supply row-scoped text, image, frame, position, visibility, and enabled values. Masked country sprites use the actual mask and overlay dimensions, so custom flag sizes are discovered from GFX assets rather than assumed by the renderer.
|
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": "3.0.
|
|
4
|
+
"version": "3.0.2",
|
|
5
5
|
"description": "Analyze HOI4 events, tech trees, AI weights, and MTTH; build focus trees, GUIs, and maps.",
|
|
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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/schemas/gui-scenario.schema.json",
|
|
3
3
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"properties": {
|
|
@@ -16,61 +16,61 @@
|
|
|
16
16
|
"$ref": "#/$defs/__schema5"
|
|
17
17
|
},
|
|
18
18
|
"state": {
|
|
19
|
-
"$ref": "#/$defs/
|
|
19
|
+
"$ref": "#/$defs/__schema7"
|
|
20
20
|
},
|
|
21
21
|
"language": {
|
|
22
|
-
"$ref": "#/$defs/
|
|
22
|
+
"$ref": "#/$defs/__schema9"
|
|
23
23
|
},
|
|
24
24
|
"animationTimeSeconds": {
|
|
25
|
-
"$ref": "#/$defs/
|
|
25
|
+
"$ref": "#/$defs/__schema10"
|
|
26
26
|
},
|
|
27
27
|
"visibleTimeSeconds": {
|
|
28
|
-
"$ref": "#/$defs/
|
|
28
|
+
"$ref": "#/$defs/__schema11"
|
|
29
29
|
},
|
|
30
30
|
"country": {
|
|
31
|
-
"$ref": "#/$defs/
|
|
31
|
+
"$ref": "#/$defs/__schema12"
|
|
32
32
|
},
|
|
33
33
|
"stateValues": {
|
|
34
|
-
"$ref": "#/$defs/
|
|
34
|
+
"$ref": "#/$defs/__schema14"
|
|
35
35
|
},
|
|
36
36
|
"variables": {
|
|
37
|
-
"$ref": "#/$defs/
|
|
37
|
+
"$ref": "#/$defs/__schema15"
|
|
38
38
|
},
|
|
39
39
|
"flags": {
|
|
40
|
-
"$ref": "#/$defs/
|
|
40
|
+
"$ref": "#/$defs/__schema16"
|
|
41
41
|
},
|
|
42
42
|
"lists": {
|
|
43
|
-
"$ref": "#/$defs/
|
|
43
|
+
"$ref": "#/$defs/__schema17"
|
|
44
44
|
},
|
|
45
45
|
"localisation": {
|
|
46
|
-
"$ref": "#/$defs/
|
|
46
|
+
"$ref": "#/$defs/__schema18"
|
|
47
47
|
},
|
|
48
48
|
"values": {
|
|
49
|
-
"$ref": "#/$defs/
|
|
49
|
+
"$ref": "#/$defs/__schema19"
|
|
50
50
|
},
|
|
51
51
|
"scriptedGui": {
|
|
52
|
-
"$ref": "#/$defs/
|
|
52
|
+
"$ref": "#/$defs/__schema20"
|
|
53
53
|
},
|
|
54
54
|
"visibility": {
|
|
55
|
-
"$ref": "#/$defs/
|
|
55
|
+
"$ref": "#/$defs/__schema21"
|
|
56
56
|
},
|
|
57
57
|
"elementStates": {
|
|
58
|
-
"$ref": "#/$defs/
|
|
58
|
+
"$ref": "#/$defs/__schema22"
|
|
59
59
|
},
|
|
60
60
|
"selectedFrames": {
|
|
61
|
-
"$ref": "#/$defs/
|
|
61
|
+
"$ref": "#/$defs/__schema23"
|
|
62
62
|
},
|
|
63
63
|
"scrollOffsets": {
|
|
64
|
-
"$ref": "#/$defs/
|
|
64
|
+
"$ref": "#/$defs/__schema24"
|
|
65
65
|
},
|
|
66
66
|
"guiCosts": {
|
|
67
|
-
"$ref": "#/$defs/
|
|
67
|
+
"$ref": "#/$defs/__schema25"
|
|
68
68
|
},
|
|
69
69
|
"scriptCosts": {
|
|
70
|
-
"$ref": "#/$defs/
|
|
70
|
+
"$ref": "#/$defs/__schema26"
|
|
71
71
|
},
|
|
72
72
|
"expectations": {
|
|
73
|
-
"$ref": "#/$defs/
|
|
73
|
+
"$ref": "#/$defs/__schema27"
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"required": [
|
|
@@ -120,15 +120,19 @@
|
|
|
120
120
|
},
|
|
121
121
|
"__schema5": {
|
|
122
122
|
"default": 1,
|
|
123
|
+
"description": "In-game UI scale. Use 1 for the normal 1920x1080 layout; this changes layout geometry and is not an output-image zoom.",
|
|
124
|
+
"$ref": "#/$defs/__schema6"
|
|
125
|
+
},
|
|
126
|
+
"__schema6": {
|
|
123
127
|
"type": "number",
|
|
124
128
|
"minimum": 0.25,
|
|
125
129
|
"maximum": 4
|
|
126
130
|
},
|
|
127
|
-
"
|
|
131
|
+
"__schema7": {
|
|
128
132
|
"default": "normal",
|
|
129
|
-
"$ref": "#/$defs/
|
|
133
|
+
"$ref": "#/$defs/__schema8"
|
|
130
134
|
},
|
|
131
|
-
"
|
|
135
|
+
"__schema8": {
|
|
132
136
|
"type": "string",
|
|
133
137
|
"enum": [
|
|
134
138
|
"normal",
|
|
@@ -147,26 +151,26 @@
|
|
|
147
151
|
"missing-localisation"
|
|
148
152
|
]
|
|
149
153
|
},
|
|
150
|
-
"
|
|
154
|
+
"__schema9": {
|
|
151
155
|
"default": "l_english",
|
|
152
156
|
"type": "string",
|
|
153
157
|
"pattern": "^l_[a-z_]+$"
|
|
154
158
|
},
|
|
155
|
-
"
|
|
159
|
+
"__schema10": {
|
|
156
160
|
"default": 0,
|
|
157
161
|
"type": "number",
|
|
158
162
|
"minimum": 0,
|
|
159
163
|
"maximum": 86400
|
|
160
164
|
},
|
|
161
|
-
"
|
|
165
|
+
"__schema11": {
|
|
162
166
|
"type": "number",
|
|
163
167
|
"minimum": 0,
|
|
164
168
|
"maximum": 86400
|
|
165
169
|
},
|
|
166
|
-
"__schema11": {
|
|
167
|
-
"$ref": "#/$defs/__schema12"
|
|
168
|
-
},
|
|
169
170
|
"__schema12": {
|
|
171
|
+
"$ref": "#/$defs/__schema13"
|
|
172
|
+
},
|
|
173
|
+
"__schema13": {
|
|
170
174
|
"type": "object",
|
|
171
175
|
"propertyNames": {
|
|
172
176
|
"type": "string"
|
|
@@ -186,10 +190,10 @@
|
|
|
186
190
|
]
|
|
187
191
|
}
|
|
188
192
|
},
|
|
189
|
-
"__schema13": {
|
|
190
|
-
"$ref": "#/$defs/__schema12"
|
|
191
|
-
},
|
|
192
193
|
"__schema14": {
|
|
194
|
+
"$ref": "#/$defs/__schema13"
|
|
195
|
+
},
|
|
196
|
+
"__schema15": {
|
|
193
197
|
"default": {},
|
|
194
198
|
"type": "object",
|
|
195
199
|
"propertyNames": {
|
|
@@ -199,7 +203,7 @@
|
|
|
199
203
|
"type": "number"
|
|
200
204
|
}
|
|
201
205
|
},
|
|
202
|
-
"
|
|
206
|
+
"__schema16": {
|
|
203
207
|
"default": {},
|
|
204
208
|
"type": "object",
|
|
205
209
|
"propertyNames": {
|
|
@@ -209,7 +213,7 @@
|
|
|
209
213
|
"type": "boolean"
|
|
210
214
|
}
|
|
211
215
|
},
|
|
212
|
-
"
|
|
216
|
+
"__schema17": {
|
|
213
217
|
"default": {},
|
|
214
218
|
"type": "object",
|
|
215
219
|
"propertyNames": {
|
|
@@ -219,11 +223,11 @@
|
|
|
219
223
|
"maxItems": 10000,
|
|
220
224
|
"type": "array",
|
|
221
225
|
"items": {
|
|
222
|
-
"$ref": "#/$defs/
|
|
226
|
+
"$ref": "#/$defs/__schema13"
|
|
223
227
|
}
|
|
224
228
|
}
|
|
225
229
|
},
|
|
226
|
-
"
|
|
230
|
+
"__schema18": {
|
|
227
231
|
"default": {},
|
|
228
232
|
"type": "object",
|
|
229
233
|
"propertyNames": {
|
|
@@ -233,15 +237,15 @@
|
|
|
233
237
|
"type": "string"
|
|
234
238
|
}
|
|
235
239
|
},
|
|
236
|
-
"__schema18": {
|
|
237
|
-
"default": {},
|
|
238
|
-
"$ref": "#/$defs/__schema12"
|
|
239
|
-
},
|
|
240
240
|
"__schema19": {
|
|
241
241
|
"default": {},
|
|
242
|
-
"$ref": "#/$defs/
|
|
242
|
+
"$ref": "#/$defs/__schema13"
|
|
243
243
|
},
|
|
244
244
|
"__schema20": {
|
|
245
|
+
"default": {},
|
|
246
|
+
"$ref": "#/$defs/__schema13"
|
|
247
|
+
},
|
|
248
|
+
"__schema21": {
|
|
245
249
|
"default": {},
|
|
246
250
|
"type": "object",
|
|
247
251
|
"propertyNames": {
|
|
@@ -251,17 +255,17 @@
|
|
|
251
255
|
"type": "boolean"
|
|
252
256
|
}
|
|
253
257
|
},
|
|
254
|
-
"
|
|
258
|
+
"__schema22": {
|
|
255
259
|
"default": {},
|
|
256
260
|
"type": "object",
|
|
257
261
|
"propertyNames": {
|
|
258
262
|
"type": "string"
|
|
259
263
|
},
|
|
260
264
|
"additionalProperties": {
|
|
261
|
-
"$ref": "#/$defs/
|
|
265
|
+
"$ref": "#/$defs/__schema8"
|
|
262
266
|
}
|
|
263
267
|
},
|
|
264
|
-
"
|
|
268
|
+
"__schema23": {
|
|
265
269
|
"default": {},
|
|
266
270
|
"type": "object",
|
|
267
271
|
"propertyNames": {
|
|
@@ -273,7 +277,7 @@
|
|
|
273
277
|
"maximum": 9007199254740991
|
|
274
278
|
}
|
|
275
279
|
},
|
|
276
|
-
"
|
|
280
|
+
"__schema24": {
|
|
277
281
|
"default": {},
|
|
278
282
|
"type": "object",
|
|
279
283
|
"propertyNames": {
|
|
@@ -284,7 +288,7 @@
|
|
|
284
288
|
"minimum": 0
|
|
285
289
|
}
|
|
286
290
|
},
|
|
287
|
-
"
|
|
291
|
+
"__schema25": {
|
|
288
292
|
"default": {},
|
|
289
293
|
"type": "object",
|
|
290
294
|
"propertyNames": {
|
|
@@ -294,7 +298,7 @@
|
|
|
294
298
|
"type": "number"
|
|
295
299
|
}
|
|
296
300
|
},
|
|
297
|
-
"
|
|
301
|
+
"__schema26": {
|
|
298
302
|
"default": {},
|
|
299
303
|
"type": "object",
|
|
300
304
|
"propertyNames": {
|
|
@@ -304,7 +308,7 @@
|
|
|
304
308
|
"type": "number"
|
|
305
309
|
}
|
|
306
310
|
},
|
|
307
|
-
"
|
|
311
|
+
"__schema27": {
|
|
308
312
|
"default": {
|
|
309
313
|
"visible": [],
|
|
310
314
|
"hidden": [],
|
|
@@ -318,7 +322,7 @@
|
|
|
318
322
|
"maxItems": 10000,
|
|
319
323
|
"type": "array",
|
|
320
324
|
"items": {
|
|
321
|
-
"$ref": "#/$defs/
|
|
325
|
+
"$ref": "#/$defs/__schema28"
|
|
322
326
|
}
|
|
323
327
|
},
|
|
324
328
|
"hidden": {
|
|
@@ -326,33 +330,33 @@
|
|
|
326
330
|
"maxItems": 10000,
|
|
327
331
|
"type": "array",
|
|
328
332
|
"items": {
|
|
329
|
-
"$ref": "#/$defs/
|
|
333
|
+
"$ref": "#/$defs/__schema28"
|
|
330
334
|
}
|
|
331
335
|
},
|
|
332
336
|
"containedBy": {
|
|
333
337
|
"default": {},
|
|
334
338
|
"type": "object",
|
|
335
339
|
"propertyNames": {
|
|
336
|
-
"$ref": "#/$defs/
|
|
340
|
+
"$ref": "#/$defs/__schema28"
|
|
337
341
|
},
|
|
338
342
|
"additionalProperties": {
|
|
339
|
-
"$ref": "#/$defs/
|
|
343
|
+
"$ref": "#/$defs/__schema28"
|
|
340
344
|
}
|
|
341
345
|
},
|
|
342
346
|
"centeredOn": {
|
|
343
347
|
"default": {},
|
|
344
348
|
"type": "object",
|
|
345
349
|
"propertyNames": {
|
|
346
|
-
"$ref": "#/$defs/
|
|
350
|
+
"$ref": "#/$defs/__schema28"
|
|
347
351
|
},
|
|
348
352
|
"additionalProperties": {
|
|
349
|
-
"$ref": "#/$defs/
|
|
353
|
+
"$ref": "#/$defs/__schema28"
|
|
350
354
|
}
|
|
351
355
|
}
|
|
352
356
|
},
|
|
353
357
|
"additionalProperties": false
|
|
354
358
|
},
|
|
355
|
-
"
|
|
359
|
+
"__schema28": {
|
|
356
360
|
"type": "string",
|
|
357
361
|
"minLength": 1,
|
|
358
362
|
"maxLength": 256
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/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/v3.0.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.0.2/schemas/probability-sweep-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": "Analyze HOI4 events, tech trees, AI weights, and MTTH; build focus trees, GUIs, and maps.",
|
|
6
|
-
"version": "3.0.
|
|
6
|
+
"version": "3.0.2",
|
|
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": "3.0.
|
|
16
|
+
"version": "3.0.2",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
}
|