@onimaxxing/sussy-seeds-mcp 0.4.0 → 0.6.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/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "@onimaxxing/sussy-seeds-mcp",
10
- version: "0.4.0",
10
+ version: "0.6.0",
11
11
  description: "MCP server for Oxygen Not Included seed hunting. Runs the sussy-seeds wasm scanner over stdio; the LLM composes Builder AST specs and drives cluster / summary / map-tier scans against the game's real worldgen.",
12
12
  keywords: [
13
13
  "claude",
@@ -53,7 +53,7 @@ var package_default = {
53
53
  },
54
54
  dependencies: {
55
55
  "@modelcontextprotocol/sdk": "1.26.0",
56
- "@onimaxxing/worldgen-node": "0.24.0",
56
+ "@onimaxxing/worldgen-node": "0.29.0",
57
57
  zod: "^3.25.0"
58
58
  },
59
59
  devDependencies: {
@@ -61,9 +61,9 @@ var package_default = {
61
61
  "@onimaxxing/i18n": "workspace:*",
62
62
  "@onimaxxing/knowledge-graph": "workspace:*",
63
63
  "@onimaxxing/prefab-kind": "workspace:*",
64
- "@onimaxxing/worldgen": "0.24.0",
64
+ "@onimaxxing/worldgen": "0.29.0",
65
65
  "@onimaxxing/worldmaxxing-registry": "workspace:*",
66
- "@tigin-backwards/oxygen-not-included-gambling": "0.6.1",
66
+ "@tigin-backwards/oxygen-not-included-gambling": "0.6.2",
67
67
  "@tigin-backwards/oxygen-not-included-mod-extensions": "0.11.0",
68
68
  "@types/node": "^24.10.1",
69
69
  oxfmt: "0.53.0",
@@ -17306,6 +17306,7 @@ var STORY_DB_ORDER = [
17306
17306
  { dbId: "HijackHeadquarters", wikiId: "HijackHeadquarters" }
17307
17307
  ];
17308
17308
  var STORY_RANGE = 3n;
17309
+ var SEED_MAX = 2147483647;
17309
17310
  var WIKI_TO_DB = new Map(STORY_DB_ORDER.map((m) => [m.wikiId, m.dbId]));
17310
17311
  var DB_TO_WIKI = new Map(STORY_DB_ORDER.map((m) => [m.dbId, m.wikiId]));
17311
17312
  function prefixesSorted(extra) {
@@ -17374,7 +17375,7 @@ function encodeMixingSegment(mixings, gameVersion = DEFAULT_GAME_VERSION) {
17374
17375
  let n = 0n;
17375
17376
  for (const slot of mixingSlotsForVersion(gameVersion)) {
17376
17377
  const lvl = mixings[slot.id] ?? 0;
17377
- const safe = Math.max(0, Math.min(4, Math.floor(lvl)));
17378
+ const safe = Number.isFinite(lvl) ? Math.max(0, Math.min(4, Math.floor(lvl))) : 0;
17378
17379
  n = n * MIXING_RANGE + BigInt(safe);
17379
17380
  }
17380
17381
  return bigIntToBase36LE(n);
@@ -17417,7 +17418,8 @@ function decodeCoord(rawCoord, opts) {
17417
17418
  const otherRaw = parts[1] ?? ZERO;
17418
17419
  const storyRaw = parts[2] ?? ZERO;
17419
17420
  const mixingRaw = parts[3] ?? ZERO;
17420
- const seed = /^\d+$/.test(seedStr) ? Number(seedStr) : 0;
17421
+ const parsedSeed = /^\d+$/.test(seedStr) ? Number(seedStr) : 0;
17422
+ const seed = parsedSeed <= SEED_MAX ? parsedSeed : 0;
17421
17423
  return {
17422
17424
  clusterPrefix: prefix,
17423
17425
  seed,
@@ -17427,7 +17429,8 @@ function decodeCoord(rawCoord, opts) {
17427
17429
  };
17428
17430
  }
17429
17431
  function encodeCoord(state, gameVersion = DEFAULT_GAME_VERSION) {
17430
- const safeSeed = Number.isFinite(state.seed) ? Math.max(0, Math.floor(state.seed)) : 0;
17432
+ const floored = Number.isFinite(state.seed) ? Math.max(0, Math.floor(state.seed)) : 0;
17433
+ const safeSeed = floored <= SEED_MAX ? floored : 0;
17431
17434
  const seedStr = String(safeSeed);
17432
17435
  const story = encodeStoryTraitsSegment(state.storyTraits);
17433
17436
  const mixing = encodeMixingSegment(state.mixings, gameVersion);
@@ -34591,7 +34594,7 @@ var jsYaml = {
34591
34594
  safeDump
34592
34595
  };
34593
34596
 
34594
- // ../../node_modules/.pnpm/@onimaxxing+worldgen@0.24.0/node_modules/@onimaxxing/worldgen/yaml.js
34597
+ // ../../node_modules/.pnpm/@onimaxxing+worldgen@0.29.0/node_modules/@onimaxxing/worldgen/yaml.js
34595
34598
  var KleiBool = new jsYaml.Type("tag:yaml.org,2002:bool", {
34596
34599
  kind: "scalar",
34597
34600
  // Single-letter `y`/`n` are intentionally EXCLUDED: many files
@@ -598354,22 +598357,26 @@ function traitCount(summary, traitSubstring) {
598354
598357
  for (const ts of summary.world_traits) if (anyTraitContains(ts, traitSubstring)) n++;
598355
598358
  return n;
598356
598359
  }
598360
+ function poiTypeMatches(entry, poiType) {
598361
+ if (entry === poiType) return true;
598362
+ return entry.startsWith("HarvestableSpacePOI_") && entry.slice("HarvestableSpacePOI_".length) === poiType;
598363
+ }
598357
598364
  function findPoiIdx(summary, poiType) {
598358
598365
  for (let i = 0; i < summary.poi_types.length; i++) {
598359
- if (summary.poi_types[i] === poiType) return i;
598366
+ if (poiTypeMatches(summary.poi_types[i], poiType)) return i;
598360
598367
  }
598361
598368
  return -1;
598362
598369
  }
598363
598370
  function countPoi(summary, poiType) {
598364
598371
  let n = 0;
598365
- for (const t2 of summary.poi_types) if (t2 === poiType) n++;
598372
+ for (const t2 of summary.poi_types) if (poiTypeMatches(t2, poiType)) n++;
598366
598373
  return n;
598367
598374
  }
598368
598375
  function poiCapMean(summary, poiType) {
598369
598376
  let sum = 0;
598370
598377
  let n = 0;
598371
598378
  for (let i = 0; i < summary.poi_types.length; i++) {
598372
- if (summary.poi_types[i] !== poiType) continue;
598379
+ if (!poiTypeMatches(summary.poi_types[i], poiType)) continue;
598373
598380
  const r = summary.poi_capacity_roll[i];
598374
598381
  if (r === void 0 || !Number.isFinite(r)) continue;
598375
598382
  sum += r;
@@ -598381,7 +598388,7 @@ function poiCapMax(summary, poiType) {
598381
598388
  let max = 0;
598382
598389
  let saw = false;
598383
598390
  for (let i = 0; i < summary.poi_types.length; i++) {
598384
- if (summary.poi_types[i] !== poiType) continue;
598391
+ if (!poiTypeMatches(summary.poi_types[i], poiType)) continue;
598385
598392
  const r = summary.poi_capacity_roll[i];
598386
598393
  if (r === void 0 || !Number.isFinite(r)) continue;
598387
598394
  if (!saw || r > max) {
@@ -598395,7 +598402,7 @@ function poiRechMean(summary, poiType) {
598395
598402
  let sum = 0;
598396
598403
  let n = 0;
598397
598404
  for (let i = 0; i < summary.poi_types.length; i++) {
598398
- if (summary.poi_types[i] !== poiType) continue;
598405
+ if (!poiTypeMatches(summary.poi_types[i], poiType)) continue;
598399
598406
  const r = summary.poi_recharge_roll[i];
598400
598407
  if (r === void 0 || !Number.isFinite(r)) continue;
598401
598408
  sum += r;
@@ -598417,7 +598424,7 @@ function countPoiCapRech(summary, capThr, rechThr) {
598417
598424
  function countPoiCapRechOfType(summary, poiType, capThr, rechThr) {
598418
598425
  let n = 0;
598419
598426
  for (let i = 0; i < summary.poi_types.length; i++) {
598420
- if (summary.poi_types[i] !== poiType) continue;
598427
+ if (!poiTypeMatches(summary.poi_types[i], poiType)) continue;
598421
598428
  const cap = summary.poi_capacity_roll[i];
598422
598429
  const rech = summary.poi_recharge_roll[i];
598423
598430
  if (cap === void 0 || !Number.isFinite(cap) || cap < capThr) continue;
@@ -599440,7 +599447,7 @@ import { createRequire as createRequire2 } from "module";
599440
599447
  import { dirname, join } from "path";
599441
599448
  import { fileURLToPath } from "url";
599442
599449
 
599443
- // ../../node_modules/.pnpm/@tigin-backwards+oxygen-not-included-gambling@0.6.1/node_modules/@tigin-backwards/oxygen-not-included-gambling/oni_roll_wasm.js
599450
+ // ../../node_modules/.pnpm/@tigin-backwards+oxygen-not-included-gambling@0.6.2/node_modules/@tigin-backwards/oxygen-not-included-gambling/oni_roll_wasm.js
599444
599451
  var Roller = class {
599445
599452
  __destroy_into_raw() {
599446
599453
  const ptr = this.__wbg_ptr;
@@ -608242,7 +608249,7 @@ function parse3(input, options) {
608242
608249
  return Parser.parse(input, options);
608243
608250
  }
608244
608251
 
608245
- // ../../node_modules/.pnpm/@tigin-backwards+oxygen-not-included-gambling@0.6.1/node_modules/@tigin-backwards/oxygen-not-included-gambling/query.js
608252
+ // ../../node_modules/.pnpm/@tigin-backwards+oxygen-not-included-gambling@0.6.2/node_modules/@tigin-backwards/oxygen-not-included-gambling/query.js
608246
608253
  var OP = {
608247
608254
  Nop: 0,
608248
608255
  PushI32: 1,
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onimaxxing/sussy-seeds-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "MCP server for Oxygen Not Included seed hunting. Runs the sussy-seeds wasm scanner over stdio; the LLM composes Builder AST specs and drives cluster / summary / map-tier scans against the game's real worldgen.",
5
5
  "keywords": [
6
6
  "claude",
@@ -37,12 +37,12 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@modelcontextprotocol/sdk": "1.26.0",
40
- "@onimaxxing/worldgen-node": "0.24.0",
40
+ "@onimaxxing/worldgen-node": "0.29.0",
41
41
  "zod": "^3.25.0"
42
42
  },
43
43
  "devDependencies": {
44
- "@onimaxxing/worldgen": "0.24.0",
45
- "@tigin-backwards/oxygen-not-included-gambling": "0.6.1",
44
+ "@onimaxxing/worldgen": "0.29.0",
45
+ "@tigin-backwards/oxygen-not-included-gambling": "0.6.2",
46
46
  "@tigin-backwards/oxygen-not-included-mod-extensions": "0.11.0",
47
47
  "@types/node": "^24.10.1",
48
48
  "oxfmt": "0.53.0",