@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 +23 -16
- package/dist/oni_roll_wasm_bg.wasm +0 -0
- package/package.json +4 -4
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.
|
|
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.
|
|
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.
|
|
64
|
+
"@onimaxxing/worldgen": "0.29.0",
|
|
65
65
|
"@onimaxxing/worldmaxxing-registry": "workspace:*",
|
|
66
|
-
"@tigin-backwards/oxygen-not-included-gambling": "0.6.
|
|
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
|
|
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
|
|
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.
|
|
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]
|
|
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
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
40
|
+
"@onimaxxing/worldgen-node": "0.29.0",
|
|
41
41
|
"zod": "^3.25.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@onimaxxing/worldgen": "0.
|
|
45
|
-
"@tigin-backwards/oxygen-not-included-gambling": "0.6.
|
|
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",
|