hoi4-agent-tools 2.3.4 → 2.3.5

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 (30) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/hoi4_agent_tools/core/domain-scan-patterns.js +66 -0
  3. package/dist/hoi4_agent_tools/mcp/server/base-tools.js +9 -1
  4. package/dist/hoi4_agent_tools/mcp/tools/chaosx.js +3 -1
  5. package/dist/hoi4_agent_tools/mcp/tools/focus.js +5 -4
  6. package/dist/hoi4_agent_tools/mcp/tools/map.js +5 -7
  7. package/dist/hoi4_agent_tools/probability/service.js +8 -4
  8. package/dist/hoi4_agent_tools/version.js +1 -1
  9. package/package.json +1 -1
  10. package/schemas/configuration.schema.json +1 -1
  11. package/schemas/continuous-focus-palette.schema.json +1 -1
  12. package/schemas/custom-weighted-pool.schema.json +1 -1
  13. package/schemas/event-feature-manifest.schema.json +1 -1
  14. package/schemas/focus-plan.schema.json +1 -1
  15. package/schemas/focus-planning-sidecar.schema.json +1 -1
  16. package/schemas/gui-animation-source.schema.json +1 -1
  17. package/schemas/gui-helper.schema.json +1 -1
  18. package/schemas/gui-scenario.schema.json +1 -1
  19. package/schemas/map-operation.schema.json +1 -1
  20. package/schemas/operation-result.schema.json +1 -1
  21. package/schemas/probability-analysis-result.schema.json +1 -1
  22. package/schemas/probability-compare-input.schema.json +1 -1
  23. package/schemas/probability-evaluate-input.schema.json +1 -1
  24. package/schemas/probability-inspect-input.schema.json +1 -1
  25. package/schemas/probability-render-input.schema.json +1 -1
  26. package/schemas/probability-scenario-set.schema.json +1 -1
  27. package/schemas/probability-sequence-input.schema.json +1 -1
  28. package/schemas/probability-simulate-input.schema.json +1 -1
  29. package/schemas/probability-sweep-input.schema.json +1 -1
  30. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.3.5 - 2026-08-02
4
+
5
+ - Replaced all-domain scans in focus, map, probability, rewrite validation, and country-asset discovery with domain-specific source inventories.
6
+ - Prevented large unrelated mod files from producing `SCAN_BYTE_LIMIT` errors in otherwise bounded MCP work and added low-ceiling regression coverage.
7
+
3
8
  ## 2.3.4 - 2026-07-28
4
9
 
5
10
  - Bounded large game-backed event scans before workspace-wide lifecycle and helper analysis could exhaust the MCP process and close the stdio transport.
@@ -0,0 +1,66 @@
1
+ import { compareCodeUnits } from './canonical.js';
2
+ function under(roots, glob) {
3
+ return roots.map((root) => `${root.replaceAll('\\', '/').replace(/\/$/u, '')}/${glob}`);
4
+ }
5
+ function uniquePatterns(patterns) {
6
+ return [...new Set(patterns)].sort(compareCodeUnits);
7
+ }
8
+ function englishLocalisationPatterns(roots) {
9
+ return [...under(roots, 'english/**/*.{yml,yaml}'), ...under(roots, '*.{yml,yaml}')];
10
+ }
11
+ /** Sources required to import, link, lint, render, and rewrite focus content. */
12
+ export function focusDomainScanPatterns(workspace) {
13
+ const roots = workspace.registration.roots;
14
+ return uniquePatterns([
15
+ ...under(roots.focus, '**/*.txt'),
16
+ ...under(roots.focus, '**/*.focus-plan.json'),
17
+ 'common/continuous_focus/**/*.txt',
18
+ 'common/decisions/**/*.txt',
19
+ 'common/ideas/**/*.txt',
20
+ 'common/characters/**/*.txt',
21
+ 'common/scripted_effects/**/*.txt',
22
+ 'common/scripted_triggers/**/*.txt',
23
+ 'common/script_constants/**/*.txt',
24
+ 'common/mtth/**/*.txt',
25
+ 'events/**/*.txt',
26
+ ...under(roots.interface, '**/*.gfx'),
27
+ ...under(roots.gfx, '**/*.gfx'),
28
+ ...englishLocalisationPatterns(roots.localisation),
29
+ ]);
30
+ }
31
+ /** Weighted source surfaces and shared definitions used by probability analysis. */
32
+ export function probabilityDomainScanPatterns(workspace, sourcePaths = []) {
33
+ const roots = workspace.registration.roots;
34
+ const normalizedSourcePaths = sourcePaths.map((sourcePath) => sourcePath.replace(/^.*?:/u, '').replaceAll('\\', '/').replace(/^\.\//u, ''));
35
+ return uniquePatterns([
36
+ ...normalizedSourcePaths,
37
+ ...under(roots.focus, '**/*.txt'),
38
+ 'common/decisions/**/*.txt',
39
+ 'common/technologies/**/*.txt',
40
+ 'common/doctrines/**/*.txt',
41
+ 'common/ai_strategy/**/*.txt',
42
+ 'common/ai_strategy_plans/**/*.txt',
43
+ 'common/ai_focuses/**/*.txt',
44
+ 'common/on_actions/**/*.txt',
45
+ 'common/scripted_effects/**/*.txt',
46
+ 'common/scripted_triggers/**/*.txt',
47
+ 'common/script_constants/**/*.txt',
48
+ 'common/mtth/**/*.txt',
49
+ 'events/**/*.txt',
50
+ ]);
51
+ }
52
+ /** Text sources needed to discover country flags and leader portraits. */
53
+ export function countryAssetDiscoveryPatterns(workspace) {
54
+ const roots = workspace.registration.roots;
55
+ return uniquePatterns([
56
+ 'history/countries/**/*.txt',
57
+ 'common/characters/**/*.txt',
58
+ 'common/scripted_effects/**/*.txt',
59
+ 'events/**/*.txt',
60
+ ...under(roots.interface, '**/*.gfx'),
61
+ ...under(roots.gfx, '**/*.gfx'),
62
+ ]);
63
+ }
64
+ export function exactChangedFilePatterns(relativePaths) {
65
+ return uniquePatterns(relativePaths.map((relativePath) => relativePath.replaceAll('\\', '/').replace(/^\.\//u, '')));
66
+ }
@@ -1,5 +1,6 @@
1
1
  import { boundedSourceHashEvidence, publicArtifactLink } from '../../core/artifacts.js';
2
2
  import { canonicalJson } from '../../core/canonical.js';
3
+ import { exactChangedFilePatterns, focusDomainScanPatterns, } from '../../core/domain-scan-patterns.js';
3
4
  import { ServiceError } from '../../core/result.js';
4
5
  import { parseClausewitz } from '../../core/source/index.js';
5
6
  import { TRANSACTION_MAX_DIAGNOSTICS } from '../../core/transaction-limits.js';
@@ -35,7 +36,14 @@ function focusReferences(engineSnapshot) {
35
36
  }
36
37
  export async function postValidateTransaction(engine, transaction, principal, signal) {
37
38
  engine.invalidate(transaction.workspaceId);
38
- const snapshot = await engine.scan(transaction.workspaceId, {}, principal, signal);
39
+ const workspace = engine.resolver.get(transaction.workspaceId, principal);
40
+ const focusTransaction = transaction.operationKind === 'focus-plan-changes' ||
41
+ transaction.operationKind === 'continuous-focus-plan-changes';
42
+ const snapshot = await engine.scan(transaction.workspaceId, {
43
+ patterns: focusTransaction
44
+ ? focusDomainScanPatterns(workspace)
45
+ : exactChangedFilePatterns(transaction.files.map(({ relativePath }) => relativePath)),
46
+ }, principal, signal);
39
47
  const changed = new Set(transaction.files.map(({ relativePath }) => sourcePathComparisonKey(relativePath)));
40
48
  const diagnostics = snapshot.diagnostics.filter(({ location }) => {
41
49
  if (location === undefined)
@@ -3,6 +3,7 @@ import sharp from 'sharp';
3
3
  import { z } from 'zod/v4';
4
4
  import { publicArtifactLink } from '../../core/artifacts.js';
5
5
  import { compareCodeUnits, hashCanonical } from '../../core/canonical.js';
6
+ import { countryAssetDiscoveryPatterns } from '../../core/domain-scan-patterns.js';
6
7
  import { emptyServiceResult } from '../../core/result.js';
7
8
  import { RenderBudget } from '../../core/render-budget.js';
8
9
  import { workspaceIdSchema } from '../../schemas/common.js';
@@ -382,7 +383,8 @@ export function registerChaosxTools(server, engine, context) {
382
383
  try {
383
384
  const progress = progressReporter(extra);
384
385
  await progress.report(0, 3, 'Resolving ChaosX country assets');
385
- const snapshot = await engine.scan(workspaceId, {}, context.principal, progress.signal);
386
+ const discoveryWorkspace = engine.resolver.get(workspaceId, context.principal);
387
+ const snapshot = await engine.scan(workspaceId, { patterns: countryAssetDiscoveryPatterns(discoveryWorkspace) }, context.principal, progress.signal);
386
388
  const tags = [...new Set(input.countryTags)];
387
389
  const { selections, catalog } = await selectCountryAssets(engine, snapshot, workspaceId, tags, input.eventId, context, progress.signal);
388
390
  await progress.report(1, 3, 'Rasterizing ChaosX country assets');
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod/v4';
2
2
  import { boundedSourceHashEvidence, publicArtifactLink } from '../../core/artifacts.js';
3
3
  import { compareCodeUnits, canonicalJson, hashCanonical } from '../../core/canonical.js';
4
+ import { focusDomainScanPatterns } from '../../core/domain-scan-patterns.js';
4
5
  import { RenderBudget } from '../../core/render-budget.js';
5
6
  import { emptyServiceResult, ServiceError } from '../../core/result.js';
6
7
  import { parseClausewitz } from '../../core/source/index.js';
@@ -351,9 +352,9 @@ async function executeFocusVisualTool(engine, workbench, context, input, extra,
351
352
  try {
352
353
  const progress = progressReporter(extra);
353
354
  await progress.report(0, 4, 'Importing and indexing focus source');
354
- const snapshot = await engine.scan(workspaceId, {}, context.principal, progress.signal);
355
- await progress.report(1, 4, 'Focus source index complete');
356
355
  const workspace = engine.resolver.get(workspaceId, context.principal);
356
+ const snapshot = await engine.scan(workspaceId, { patterns: focusDomainScanPatterns(workspace) }, context.principal, progress.signal);
357
+ await progress.report(1, 4, 'Focus source index complete');
357
358
  const renderBudget = new RenderBudget();
358
359
  if (input.mode === 'continuous') {
359
360
  selectedContinuousFocusFile(snapshot, relativePath);
@@ -610,8 +611,8 @@ export function registerFocusTools(server, engine, context) {
610
611
  try {
611
612
  const progress = progressReporter(extra);
612
613
  await progress.report(0, 3, 'Building shared workspace index');
613
- const snapshot = await engine.scan(workspaceId, {}, context.principal, progress.signal);
614
614
  const workspace = engine.resolver.get(workspaceId, context.principal);
615
+ const snapshot = await engine.scan(workspaceId, { patterns: focusDomainScanPatterns(workspace) }, context.principal, progress.signal);
615
616
  if (input.mode === 'continuous') {
616
617
  const selectedFiles = activeContinuousFocusFiles(snapshot).filter((file) => relativePath === undefined || file.relativePath === relativePath);
617
618
  if (selectedFiles.length === 0) {
@@ -849,8 +850,8 @@ export function registerFocusTools(server, engine, context) {
849
850
  requireServerScope(context, 'hoi4:write');
850
851
  const progress = progressReporter(extra);
851
852
  await progress.report(0, 5, 'Validating shared index and current source');
852
- const snapshot = await engine.scan(workspaceId, {}, context.principal, progress.signal);
853
853
  const workspace = engine.resolver.get(workspaceId, context.principal);
854
+ const snapshot = await engine.scan(workspaceId, { patterns: focusDomainScanPatterns(workspace) }, context.principal, progress.signal);
854
855
  if (input.mode === 'continuous') {
855
856
  const plan = input.plan;
856
857
  if (createIfMissing &&
@@ -369,10 +369,8 @@ export function registerMapTools(server, engine, context) {
369
369
  try {
370
370
  const progress = progressReporter(extra);
371
371
  await progress.report(0, 3, 'Inspecting and validating the map');
372
- const [shared, { snapshot, validation }] = await Promise.all([
373
- engine.scan(workspaceId, {}, context.principal, progress.signal),
374
- nudger.validate(workspaceId, context.principal, progress.signal),
375
- ]);
372
+ const { snapshot, validation } = await nudger.validate(workspaceId, context.principal, progress.signal);
373
+ const sharedRevision = snapshot.revision;
376
374
  const selected = selectedMapEntities(snapshot, provinceIds, stateIds, regionIds);
377
375
  const provinceGeometry = provinceIds.length === 0
378
376
  ? undefined
@@ -392,7 +390,7 @@ export function registerMapTools(server, engine, context) {
392
390
  schemaVersion: 'map-inspect.v1',
393
391
  sourceHashes: sourceEvidence.bounded.sourceHashes,
394
392
  metadata: {
395
- sharedRevision: shared.revision,
393
+ sharedRevision,
396
394
  sourceHashInventory: sourceEvidence.bounded.inventory,
397
395
  },
398
396
  };
@@ -403,7 +401,7 @@ export function registerMapTools(server, engine, context) {
403
401
  content: `${canonicalJson({
404
402
  schemaVersion: 1,
405
403
  revision: snapshot.revision,
406
- sharedRevision: shared.revision,
404
+ sharedRevision,
407
405
  dimensions: snapshot.index.raster === undefined
408
406
  ? null
409
407
  : {
@@ -471,7 +469,7 @@ export function registerMapTools(server, engine, context) {
471
469
  const artifacts = await engine.artifacts.withAtomicChunkedWrites(workspace, artifactWrites, (stored) => Promise.resolve([...stored]), progress.signal);
472
470
  const result = emptyServiceResult(workspaceId, {
473
471
  revision: snapshot.revision,
474
- sharedRevision: shared.revision,
472
+ sharedRevision,
475
473
  width: snapshot.index.raster?.width ?? null,
476
474
  height: snapshot.index.raster?.height ?? null,
477
475
  definitions: snapshot.index.definitions.length,
@@ -2,6 +2,7 @@ import { readFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { canonicalJson, hashCanonical } from '../core/canonical.js';
4
4
  import { ClausewitzEvaluationDefinitions } from '../core/clausewitz-evaluation.js';
5
+ import { probabilityDomainScanPatterns } from '../core/domain-scan-patterns.js';
5
6
  import { publicArtifactLink } from '../core/artifacts.js';
6
7
  import { ServiceError } from '../core/result.js';
7
8
  import { PACKAGE_VERSION } from '../version.js';
@@ -590,10 +591,13 @@ export class ProbabilityAnalyzer {
590
591
  this.engine = engine;
591
592
  this.state = analyzerState(engine);
592
593
  }
593
- async scan(context) {
594
+ async scan(context, sourcePaths = []) {
594
595
  if (context.refresh === true)
595
596
  this.engine.invalidate(context.workspaceId);
596
- return this.engine.scan(context.workspaceId, {}, context.principal, context.signal);
597
+ const workspace = this.engine.resolver.get(context.workspaceId, context.principal);
598
+ return this.engine.scan(context.workspaceId, {
599
+ patterns: probabilityDomainScanPatterns(workspace, sourcePaths.filter((sourcePath) => sourcePath !== undefined)),
600
+ }, context.principal, context.signal);
597
601
  }
598
602
  async verifyGameVersion(context, adapter) {
599
603
  const workspace = this.engine.resolver.get(context.workspaceId, context.principal);
@@ -774,7 +778,7 @@ export class ProbabilityAnalyzer {
774
778
  if (adapter === undefined || source === undefined)
775
779
  return { adapters: probabilityAdapters(), artifacts: [], filesScanned: [] };
776
780
  const gameVersionVerification = await this.verifyGameVersion(context, adapter);
777
- const snapshot = await this.scan(context);
781
+ const snapshot = await this.scan(context, [source.path]);
778
782
  const surface = discoverWeightedSurface(snapshot, adapter, source, candidatePool);
779
783
  const definitions = ClausewitzEvaluationDefinitions.build(snapshot);
780
784
  const inspectedCandidates = evaluateExactCandidates(surface, { id: 'inspection', state: {} }, definitions);
@@ -838,7 +842,7 @@ export class ProbabilityAnalyzer {
838
842
  request.scenarioSet.workspaceId !== request.workspaceId)
839
843
  throw new ServiceError('PROBABILITY_SCENARIO_WORKSPACE_MISMATCH', 'Scenario set belongs to a different workspace');
840
844
  const gameVersionVerification = await this.verifyGameVersion(request, request.adapter);
841
- const snapshot = await this.scan(request);
845
+ const snapshot = await this.scan(request, [request.source.path]);
842
846
  const surface = discoverWeightedSurface(snapshot, request.adapter, request.source, request.candidatePool ?? []);
843
847
  const definitions = ClausewitzEvaluationDefinitions.build(snapshot);
844
848
  const metadata = this.metadata(request, snapshot, surface, request.scenarioSet, request.candidatePool ?? [], gameVersionVerification, {
@@ -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 = '2.3.4';
3
+ export const PACKAGE_VERSION = '2.3.5';
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/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": "2.3.4",
4
+ "version": "2.3.5",
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/v2.3.4/schemas/configuration.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/continuous-focus-palette.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/custom-weighted-pool.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/event-feature-manifest.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/focus-plan.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/focus-planning-sidecar.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/gui-animation-source.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/gui-helper.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/gui-scenario.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/map-operation.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/operation-result.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-analysis-result.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-compare-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-evaluate-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-inspect-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-render-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-scenario-set.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-sequence-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-simulate-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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/v2.3.4/schemas/probability-sweep-input.schema.json",
2
+ "$id": "https://github.com/klimPaskov/hoi4-agent-tools/blob/v2.3.5/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": "2.3.4",
6
+ "version": "2.3.5",
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": "2.3.4",
16
+ "version": "2.3.5",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  }