hoi4-agent-tools 3.9.0 → 3.10.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 +9 -0
- package/dist/bin/http.js +2 -0
- package/dist/bin/stdio.js +2 -0
- package/dist/hoi4_agent_tools/core/engine.js +27 -8
- package/dist/hoi4_agent_tools/core/index.js +45 -20
- package/dist/hoi4_agent_tools/core/server-registry.js +138 -0
- package/dist/hoi4_agent_tools/core/server-status-resource.js +22 -0
- package/dist/hoi4_agent_tools/core/source/cache.js +89 -20
- package/dist/hoi4_agent_tools/event/service.js +7 -0
- package/dist/hoi4_agent_tools/gui/scenario-generator.js +11 -3
- package/dist/hoi4_agent_tools/gui/studio.js +20 -7
- package/dist/hoi4_agent_tools/mcp/resources/register-modern.js +13 -1
- package/dist/hoi4_agent_tools/mcp/resources/register.js +6 -0
- package/dist/hoi4_agent_tools/mcp/tools/technology.js +5 -2
- package/dist/hoi4_agent_tools/mcp/transports/stdio-lifetime.js +6 -10
- package/dist/hoi4_agent_tools/schemas/technology.js +4 -2
- package/dist/hoi4_agent_tools/technology/service.js +7 -0
- package/dist/hoi4_agent_tools/version.js +1 -1
- package/docs/setup.md +1 -0
- package/npm-shrinkwrap.json +12 -8
- 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/decision-inspect-input.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 +1 -1
- package/schemas/helper-expansion-request.schema.json +1 -1
- package/schemas/helper-expansion-summary.schema.json +1 -1
- package/schemas/impact-inspect-input.schema.json +1 -1
- package/schemas/map-operation.schema.json +1 -1
- package/schemas/mechanic-test-input.schema.json +1 -1
- package/schemas/operation-result.schema.json +1 -1
- package/schemas/package-check-input.schema.json +1 -1
- package/schemas/package-manifest.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/schemas/reference-context-input.schema.json +1 -1
- package/schemas/reference-read-input.schema.json +1 -1
- package/schemas/reference-search-input.schema.json +1 -1
- package/schemas/scenario-suite.schema.json +1 -1
- package/schemas/scenario-test-input.schema.json +1 -1
- package/schemas/script-validate-input.schema.json +1 -1
- package/schemas/shared-scenario.schema.json +1 -1
- package/schemas/source-lookup-input.schema.json +1 -1
- package/server.json +2 -2
|
@@ -917,6 +917,8 @@ export function guiArtifactProvenance(graph, kind, primaryScene, scenarioScenes
|
|
|
917
917
|
};
|
|
918
918
|
}
|
|
919
919
|
const sharedGuiGraphs = new WeakMap();
|
|
920
|
+
/** Graphs kept per engine: one for each scope a preview builds, across a few workspaces. */
|
|
921
|
+
const GUI_GRAPH_CACHE_SCOPES = 6;
|
|
920
922
|
export class ScriptedGuiStudio {
|
|
921
923
|
engine;
|
|
922
924
|
resolver;
|
|
@@ -953,12 +955,21 @@ export class ScriptedGuiStudio {
|
|
|
953
955
|
return cached;
|
|
954
956
|
}
|
|
955
957
|
const retainedFiles = [...files];
|
|
958
|
+
// The previous graph of this scope still indexes every unchanged file.
|
|
959
|
+
const previous = [...this.#graphCache].find(([existing]) => existing.startsWith(`${scope}:`))?.[1].index;
|
|
960
|
+
const index = this.engine.indexFiles(retainedFiles, previous);
|
|
956
961
|
const scanned = {
|
|
957
962
|
files: retainedFiles,
|
|
958
|
-
graph: buildGuiSourceGraph(retainedFiles,
|
|
963
|
+
graph: buildGuiSourceGraph(retainedFiles, index, additionalLocalisationKeys),
|
|
964
|
+
index,
|
|
959
965
|
};
|
|
966
|
+
// One graph per scope: a preview builds layout, game-layout and definition graphs, and a
|
|
967
|
+
// single shared slot made each repeat call rebuild all of them.
|
|
968
|
+
for (const existing of this.#graphCache.keys())
|
|
969
|
+
if (existing.startsWith(`${scope}:`))
|
|
970
|
+
this.#graphCache.delete(existing);
|
|
960
971
|
this.#graphCache.set(key, scanned);
|
|
961
|
-
while (this.#graphCache.size >
|
|
972
|
+
while (this.#graphCache.size > GUI_GRAPH_CACHE_SCOPES) {
|
|
962
973
|
const oldest = this.#graphCache.keys().next().value;
|
|
963
974
|
if (oldest === undefined)
|
|
964
975
|
break;
|
|
@@ -1004,7 +1015,7 @@ export class ScriptedGuiStudio {
|
|
|
1004
1015
|
const gameGraph = this.graphForFiles(gameLayouts.files, `game-layout:${workspaceId}`).graph;
|
|
1005
1016
|
const selectedPaths = new Set(selectedElements(gameGraph, windowName, [...requiredNames]).map(({ sourcePath }) => sourcePath));
|
|
1006
1017
|
layoutFiles = mergeScannedFiles(layoutFiles, gameLayouts.files.filter(({ displayPath }) => selectedPaths.has(displayPath)));
|
|
1007
|
-
layoutGraph = this.graphForFiles(layoutFiles, `layout:${workspaceId}`).graph;
|
|
1018
|
+
layoutGraph = this.graphForFiles(layoutFiles, `merged-layout:${workspaceId}`).graph;
|
|
1008
1019
|
}
|
|
1009
1020
|
if (!layoutGraph.elements.some(({ name }) => name === windowName))
|
|
1010
1021
|
assertTargetWindowAvailable(layoutGraph, windowName);
|
|
@@ -1062,12 +1073,13 @@ export class ScriptedGuiStudio {
|
|
|
1062
1073
|
? undefined
|
|
1063
1074
|
: parseGeneratedScenarioOptions(input.generatedScenarios);
|
|
1064
1075
|
const scanned = await this.scanWindow(input.workspaceId, input.windowName, input.principal, input.signal, [placeholderScenario.language, ...explicitRelatedScenarios.map(({ language }) => language)], scenarioSpriteNames([placeholderScenario, ...explicitRelatedScenarios], generatedOptions?.textSamples), scenarioTemplateNames([placeholderScenario, ...explicitRelatedScenarios]), scenarioCountryFlagPatterns([placeholderScenario, ...explicitRelatedScenarios]), scenarioLocalisationKeys([placeholderScenario, ...explicitRelatedScenarios]), [placeholderScenario, ...explicitRelatedScenarios].some(({ tooltip }) => tooltip !== undefined));
|
|
1065
|
-
|
|
1076
|
+
let builtDefinitions;
|
|
1077
|
+
const evaluationDefinitions = () => (builtDefinitions ??= ClausewitzEvaluationDefinitions.build(scanned));
|
|
1066
1078
|
const resolveLocalisation = (target) => resolveScenarioScriptedLocalisation(scanned.graph, input.windowName, target, evaluationDefinitions);
|
|
1067
1079
|
const suppliedScenario = resolveLocalisation(placeholderScenario);
|
|
1068
1080
|
const generatedScenarios = generatedOptions === undefined
|
|
1069
1081
|
? []
|
|
1070
|
-
: generateGuiPreviewScenarios(scanned.graph, input.windowName, placeholderScenario, generatedOptions, evaluationDefinitions);
|
|
1082
|
+
: generateGuiPreviewScenarios(scanned.graph, input.windowName, placeholderScenario, generatedOptions, evaluationDefinitions());
|
|
1071
1083
|
const scenario = generatedScenarios[0] ?? suppliedScenario;
|
|
1072
1084
|
const relatedScenarios = [
|
|
1073
1085
|
...(generatedOptions?.preservePlaceholder === true && generatedScenarios.length > 0
|
|
@@ -1160,12 +1172,13 @@ export class ScriptedGuiStudio {
|
|
|
1160
1172
|
...(requestedBaselineScenario === undefined ? [] : [requestedBaselineScenario]),
|
|
1161
1173
|
...explicitRelatedScenarios,
|
|
1162
1174
|
].some(({ tooltip }) => tooltip !== undefined));
|
|
1163
|
-
|
|
1175
|
+
let builtDefinitions;
|
|
1176
|
+
const evaluationDefinitions = () => (builtDefinitions ??= ClausewitzEvaluationDefinitions.build(scanned));
|
|
1164
1177
|
const resolveLocalisation = (target) => resolveScenarioScriptedLocalisation(scanned.graph, input.windowName, target, evaluationDefinitions);
|
|
1165
1178
|
const suppliedScenario = resolveLocalisation(placeholderScenario);
|
|
1166
1179
|
const generatedScenarios = generatedOptions === undefined
|
|
1167
1180
|
? []
|
|
1168
|
-
: generateGuiPreviewScenarios(scanned.graph, input.windowName, placeholderScenario, generatedOptions, evaluationDefinitions);
|
|
1181
|
+
: generateGuiPreviewScenarios(scanned.graph, input.windowName, placeholderScenario, generatedOptions, evaluationDefinitions());
|
|
1169
1182
|
const scenario = generatedScenarios[0] ?? suppliedScenario;
|
|
1170
1183
|
const relatedScenarios = [
|
|
1171
1184
|
...(generatedOptions?.preservePlaceholder === true && generatedScenarios.length > 0
|
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import { ReadResourceResultSchema } from '@modelcontextprotocol/core';
|
|
2
2
|
import { ProtocolError, ProtocolErrorCode, ResourceNotFoundError, } from '@modelcontextprotocol/server';
|
|
3
3
|
import { artifactResourceDefinition, readArtifactResource } from '../../core/artifact-resource.js';
|
|
4
|
+
import { readServerStatus, serverStatusResource } from '../../core/server-status-resource.js';
|
|
4
5
|
import { ServiceError } from '../../core/result.js';
|
|
5
6
|
/** Modern wire projection of the same non-enumerating, authorization-bound resource reader. */
|
|
6
7
|
export function registerModernResources(server, engine, context) {
|
|
7
|
-
|
|
8
|
+
// Process details are offered to the local client only, never to authenticated remote ones.
|
|
9
|
+
const local = context.principal === undefined;
|
|
10
|
+
server.setRequestHandler('resources/list', () => ({
|
|
11
|
+
resources: local ? [serverStatusResource] : [],
|
|
12
|
+
}));
|
|
8
13
|
server.setRequestHandler('resources/templates/list', () => ({
|
|
9
14
|
resourceTemplates: [artifactResourceDefinition],
|
|
10
15
|
}));
|
|
11
16
|
server.setRequestHandler('resources/read', async (request, extra) => {
|
|
17
|
+
if (local && request.params.uri === serverStatusResource.uri)
|
|
18
|
+
return ReadResourceResultSchema.parse({
|
|
19
|
+
...(await readServerStatus(engine)),
|
|
20
|
+
resultType: 'complete',
|
|
21
|
+
ttlMs: 0,
|
|
22
|
+
cacheScope: 'private',
|
|
23
|
+
});
|
|
12
24
|
try {
|
|
13
25
|
return ReadResourceResultSchema.parse({
|
|
14
26
|
...(await readArtifactResource(engine, request.params.uri, context, extra.mcpReq.signal)),
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { artifactResourceDefinition, readArtifactResource } from '../../core/artifact-resource.js';
|
|
3
|
+
import { readServerStatus, serverStatusResource } from '../../core/server-status-resource.js';
|
|
3
4
|
/** SDK-v1 registration only; ownership and byte-range behavior live in the shared core. */
|
|
4
5
|
export function registerMcpResources(server, engine, context) {
|
|
5
6
|
const { name, uriTemplate, ...metadata } = artifactResourceDefinition;
|
|
6
7
|
server.registerResource(name, new ResourceTemplate(uriTemplate, { list: undefined }), metadata, (uri, _variables, extra) => readArtifactResource(engine, uri.href, context, extra.signal));
|
|
8
|
+
// Process details are offered to the local client only, never to authenticated remote ones.
|
|
9
|
+
if (context.principal !== undefined)
|
|
10
|
+
return;
|
|
11
|
+
const { name: statusName, uri: statusUri, ...statusMetadata } = serverStatusResource;
|
|
12
|
+
server.registerResource(statusName, statusUri, statusMetadata, () => readServerStatus(engine));
|
|
7
13
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { registerLegacyTaskTools } from '../server/legacy-task-tools.js';
|
|
2
2
|
import { z } from 'zod/v4';
|
|
3
3
|
import { helperExpansionRequestSchema, helperExpansionSummarySchema, } from '../../schemas/helper-expansion.js';
|
|
4
|
-
import { technologyAnalysisModeSchema, technologyCompareRequestSchema, technologyGraphReferenceSchema, technologyImpactSchema, technologyInspectRequestSchema, technologyProposedSourceSchema, technologyRenderRequestSchema, technologyRenderViewSchema, validateTechnologyCompareRequest, validateTechnologyInspectRequest, } from '../../schemas/technology.js';
|
|
4
|
+
import { technologyAnalysisModeSchema, technologyCompareRequestSchema, technologyGraphReferenceSchema, technologyImpactSchema, technologyInspectRequestSchema, technologyProposedSourceSchema, technologyRenderRequestSchema, validateTechnologyRenderRequest, technologyRenderViewSchema, validateTechnologyCompareRequest, validateTechnologyInspectRequest, } from '../../schemas/technology.js';
|
|
5
5
|
import { compactValidatedInputSchema } from '../server/context-schemas.js';
|
|
6
6
|
import { nonNegativeIntegerSchema, sha256Schema } from '../server/output-schemas.js';
|
|
7
7
|
import { strictOperationResultSchema } from '../server/result.js';
|
|
@@ -13,7 +13,10 @@ const inspectInputSchema = z
|
|
|
13
13
|
})
|
|
14
14
|
.strict()
|
|
15
15
|
.superRefine(validateTechnologyInspectRequest);
|
|
16
|
-
const renderInputSchema = z
|
|
16
|
+
const renderInputSchema = z
|
|
17
|
+
.object({ ...technologyRenderRequestSchema.shape })
|
|
18
|
+
.strict()
|
|
19
|
+
.superRefine(validateTechnologyRenderRequest);
|
|
17
20
|
const compareInputSchema = z
|
|
18
21
|
.object({
|
|
19
22
|
...technologyCompareRequestSchema.shape,
|
|
@@ -5,17 +5,9 @@
|
|
|
5
5
|
* pipe, and a client keeps an idle connection it will never use again. The first is detected
|
|
6
6
|
* by polling the parent process; the second by an optional idle limit.
|
|
7
7
|
*/
|
|
8
|
+
import { processAlive } from '../../core/server-registry.js';
|
|
8
9
|
const PARENT_POLL_MS = 5_000;
|
|
9
|
-
|
|
10
|
-
export function processAlive(pid) {
|
|
11
|
-
try {
|
|
12
|
-
process.kill(pid, 0);
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
return error.code === 'EPERM';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
10
|
+
export { processAlive };
|
|
19
11
|
export class StdioLifetime {
|
|
20
12
|
#options;
|
|
21
13
|
#open = new Set();
|
|
@@ -57,6 +49,10 @@ export class StdioLifetime {
|
|
|
57
49
|
if (id !== undefined)
|
|
58
50
|
this.#open.delete(id);
|
|
59
51
|
}
|
|
52
|
+
/** When the client last sent or received a message, in epoch milliseconds. */
|
|
53
|
+
lastActivity() {
|
|
54
|
+
return this.#lastActivity;
|
|
55
|
+
}
|
|
60
56
|
check() {
|
|
61
57
|
if (this.#stopped)
|
|
62
58
|
return;
|
|
@@ -143,14 +143,16 @@ export const technologyRenderRequestSchema = z
|
|
|
143
143
|
refresh: z.boolean().optional(),
|
|
144
144
|
})
|
|
145
145
|
.strict()
|
|
146
|
-
.superRefine(
|
|
146
|
+
.superRefine(validateTechnologyRenderRequest);
|
|
147
|
+
/** Shared by the request schema and the published tool input, so clients see the same rule. */
|
|
148
|
+
export function validateTechnologyRenderRequest(value, context) {
|
|
147
149
|
if (value.view === 'folder' && value.folderId === undefined)
|
|
148
150
|
context.addIssue({
|
|
149
151
|
code: 'custom',
|
|
150
152
|
path: ['folderId'],
|
|
151
153
|
message: 'Folder view requires folderId',
|
|
152
154
|
});
|
|
153
|
-
}
|
|
155
|
+
}
|
|
154
156
|
export function validateTechnologyCompareRequest(value, context) {
|
|
155
157
|
if (value.after !== undefined && value.proposedSources !== undefined)
|
|
156
158
|
context.addIssue({
|
|
@@ -880,6 +880,13 @@ export class TechnologyTreeViewer {
|
|
|
880
880
|
input.signal?.throwIfAborted();
|
|
881
881
|
if (input.proposedSources !== undefined)
|
|
882
882
|
assertProposedBounds(input.proposedSources);
|
|
883
|
+
// Without references the comparison uses the previous cached revision; with none cached,
|
|
884
|
+
// say so before scanning the workspace.
|
|
885
|
+
if (input.before === undefined &&
|
|
886
|
+
input.after === undefined &&
|
|
887
|
+
input.proposedSources === undefined &&
|
|
888
|
+
(this.#state.history.get(input.workspaceId)?.size ?? 0) === 0)
|
|
889
|
+
throw new ServiceError('TECH_COMPARISON_BASELINE_REQUIRED', 'Provide a cached revision, graph artifact, or proposed source overlay');
|
|
883
890
|
const current = await this.scan(input.workspaceId, {
|
|
884
891
|
refresh: input.refresh ?? input.proposedSources !== undefined,
|
|
885
892
|
...(input.principal === undefined ? {} : { principal: input.principal }),
|
|
@@ -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.
|
|
3
|
+
export const PACKAGE_VERSION = '3.10.0';
|
|
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/setup.md
CHANGED
|
@@ -97,3 +97,4 @@ Some clients start a server for every subagent and keep each connection open aft
|
|
|
97
97
|
A server with no client traffic and no open request for `stdioIdleExitMinutes` minutes exits.
|
|
98
98
|
That setting applies to every client sharing the server configuration, so prefer the `HOI4_AGENT_STDIO_IDLE_EXIT_MINUTES` environment variable in the affected client's registration; the Codex registrations printed by `hoi4-agent-tools-setup --print-client-config` set it to 30.
|
|
99
99
|
A client that later calls an exited server reports it as disconnected, so leave the limit at `0` (never) for a single long-lived session.
|
|
100
|
+
Over stdio, read the `hoi4-agent://server/status` resource to see every server process that shares the server state root, with its transport, memory, last client activity and the execution limits in effect. Records of exited processes are removed on read; a server that has not updated its record for five minutes is listed as stale.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hoi4-agent-tools",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.10.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "hoi4-agent-tools",
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.10.0",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@fontsource-variable/roboto": "5.3.0",
|
|
@@ -5744,9 +5744,9 @@
|
|
|
5744
5744
|
"license": "MIT"
|
|
5745
5745
|
},
|
|
5746
5746
|
"node_modules/proxy-addr": {
|
|
5747
|
-
"version": "2.0.
|
|
5748
|
-
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.
|
|
5749
|
-
"integrity": "sha512-
|
|
5747
|
+
"version": "2.0.8",
|
|
5748
|
+
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz",
|
|
5749
|
+
"integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==",
|
|
5750
5750
|
"license": "MIT",
|
|
5751
5751
|
"dependencies": {
|
|
5752
5752
|
"forwarded": "0.2.0",
|
|
@@ -5754,6 +5754,10 @@
|
|
|
5754
5754
|
},
|
|
5755
5755
|
"engines": {
|
|
5756
5756
|
"node": ">= 0.10"
|
|
5757
|
+
},
|
|
5758
|
+
"funding": {
|
|
5759
|
+
"type": "opencollective",
|
|
5760
|
+
"url": "https://opencollective.com/express"
|
|
5757
5761
|
}
|
|
5758
5762
|
},
|
|
5759
5763
|
"node_modules/punycode": {
|
|
@@ -6256,9 +6260,9 @@
|
|
|
6256
6260
|
}
|
|
6257
6261
|
},
|
|
6258
6262
|
"node_modules/source-map-js": {
|
|
6259
|
-
"version": "1.2.
|
|
6260
|
-
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.
|
|
6261
|
-
"integrity": "sha512-
|
|
6263
|
+
"version": "1.2.2",
|
|
6264
|
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
|
|
6265
|
+
"integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
|
|
6262
6266
|
"dev": true,
|
|
6263
6267
|
"license": "BSD-3-Clause",
|
|
6264
6268
|
"engines": {
|
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.
|
|
4
|
+
"version": "3.10.0",
|
|
5
5
|
"description": "HOI4 modding tools for agents: local references, visual previews, focus trees, interfaces 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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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/v3.
|
|
2
|
+
"$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v3.10.0/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": "HOI4 modding tools for agents: local references, visual previews, focus trees, interfaces and maps.",
|
|
6
|
-
"version": "3.
|
|
6
|
+
"version": "3.10.0",
|
|
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.
|
|
16
|
+
"version": "3.10.0",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
}
|