getcompetitive 5.0.0 → 6.1.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.
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Scouting: replay → normalized battle observations → set inference → rematch
3
+ * preparation, one deterministic pipeline. The player pastes their team (the
4
+ * sets the replay cannot contain), the log, and the opponent species to
5
+ * scout; this extracts what the log proves about it (Speed relations against
6
+ * known members, damage it took from them, item and ability reveals) and runs
7
+ * the shared SetInferenceEngine. The model explains the result;
8
+ * getcompetitive proved it.
9
+ */
10
+ import { z } from 'zod';
11
+ import { toID } from '../dex.js';
12
+ import { runInference } from '../inference.js';
13
+ import { ok, wrap, READ_ONLY_ANNOTATIONS } from '../result.js';
14
+ import { parseReplay } from './replay.js';
15
+ import { parsedSetSchema, resolveMembers } from './team.js';
16
+ export function registerScoutTool(server) {
17
+ server.registerTool('scout_opponent', {
18
+ title: 'Scout an opponent from a replay',
19
+ description: 'One deterministic pipeline: replay → battle observations → set inference → rematch preparation. Paste the battle log, your team with its real sets (the log cannot contain them), and the opponent species to scout; the tool extracts what the log proves about it — Speed relations against your known members, the damage it took from them, and any item or ability the log revealed — and runs the same SetInferenceEngine the "infer" mode uses, so the surviving candidate sets come with the narrowing shown. The rematch note points the result at `prepare_matchup`. A log proves only what it contains: every extracted observation is restated so the scouting is auditable. Read-only and offline.',
20
+ annotations: READ_ONLY_ANNOTATIONS,
21
+ inputSchema: {
22
+ log: z.string().describe('The battle log text, exactly as exported (lines beginning with |).'),
23
+ team: z
24
+ .array(parsedSetSchema)
25
+ .min(1)
26
+ .max(6)
27
+ .describe('Your team with its real sets — the Speed reference and the attackers\u2019 damage math need them.'),
28
+ species: z.string().describe('The opponent species to scout, e.g. "Sneasler"; must appear on the opposing side of the log.'),
29
+ regulation: z.string().optional().describe('Regulation id, e.g. "m-c"; scopes the meta prior for the inference.'),
30
+ },
31
+ outputSchema: {
32
+ target: z.string().describe('The scouted species as resolved.'),
33
+ observations: z.array(z.string()).describe('Every battle observation the log yielded, restated in order.'),
34
+ observedMoves: z.array(z.string()).optional().describe('Moves the log shows the target using; present when it used any.'),
35
+ inference: z
36
+ .object({
37
+ species: z.string().describe('The species as resolved.'),
38
+ priorSets: z.number().int().describe('Candidate sets considered before any observation.'),
39
+ survivingSets: z.number().int().describe('Candidates still possible after the last observation.'),
40
+ constraints: z.array(z.object({ observation: z.string(), before: z.number().int(), after: z.number().int(), eliminated: z.number().int() })).describe('The narrowing, shown.'),
41
+ candidates: z
42
+ .array(z.object({
43
+ item: z.string().optional(),
44
+ ability: z.string(),
45
+ nature: z.string(),
46
+ evs: z.record(z.string(), z.number()),
47
+ speed: z.number().int(),
48
+ probability: z.number(),
49
+ }))
50
+ .describe('The surviving sets, most likely first.'),
51
+ note: z.string().describe('The engine\u2019s assumptions.'),
52
+ })
53
+ .describe('The set inference over the extracted observations.'),
54
+ rematch: z.object({ note: z.string().describe('How to feed the result into prepare_matchup for the rematch.') }),
55
+ },
56
+ }, wrap(async (args) => {
57
+ const { members } = resolveMembers(args.team);
58
+ const replay = parseReplay(args.log);
59
+ const memberByName = new Map(members.map((m) => [toID(m.species), m]));
60
+ const ourSide = ['p1', 'p2'].find((side) => replay.teams[side].some((name) => memberByName.has(toID(name)))) ?? 'p1';
61
+ const theirSide = ourSide === 'p1' ? 'p2' : 'p1';
62
+ const targetKey = toID(args.species);
63
+ if (!replay.teams[theirSide].some((name) => toID(name) === targetKey)) {
64
+ throw new Error(`"${args.species}" was not seen on the opposing side (${replay.teams[theirSide].join(', ')}); your side resolved to ${ourSide}.`);
65
+ }
66
+ const targetName = replay.teams[theirSide].find((name) => toID(name) === targetKey);
67
+ const observations = [];
68
+ const observedMoves = new Set();
69
+ for (const s of replay.speed) {
70
+ if (observations.filter((o) => o.kind === 'speed').length >= 4)
71
+ break;
72
+ const fasterName = (s.faster.split(':')[1] ?? '').trim();
73
+ const slowerName = (s.slower.split(':')[1] ?? '').trim();
74
+ const fasterIsTarget = toID(fasterName) === targetKey;
75
+ const slowerIsTarget = toID(slowerName) === targetKey;
76
+ const ours = fasterIsTarget ? memberByName.get(toID(slowerName)) : slowerIsTarget ? memberByName.get(toID(fasterName)) : undefined;
77
+ if (!ours)
78
+ continue;
79
+ observations.push(fasterIsTarget
80
+ ? { kind: 'speed', referenceSpeed: ours.speed, relation: 'outsped' }
81
+ : { kind: 'speed', referenceSpeed: ours.speed, relation: 'outspeeds' });
82
+ }
83
+ for (const d of replay.damage) {
84
+ if (observations.filter((o) => o.kind === 'damageTaken').length >= 4)
85
+ break;
86
+ const defenderName = (d.defender.split(':')[1] ?? '').trim();
87
+ if (toID(defenderName) !== targetKey)
88
+ continue;
89
+ const attackerName = (d.attacker.split(':')[1] ?? '').trim();
90
+ const ours = memberByName.get(toID(attackerName));
91
+ if (!ours)
92
+ continue;
93
+ observations.push({
94
+ kind: 'damageTaken',
95
+ move: d.move,
96
+ attacker: {
97
+ species: ours.species,
98
+ ...(ours.set.nature ? { nature: ours.set.nature } : {}),
99
+ ...(ours.set.evs ? { evs: ours.set.evs } : {}),
100
+ ...(ours.set.championsPoints ? { championsPoints: ours.set.championsPoints } : {}),
101
+ ...(ours.set.item ? { item: ours.set.item } : {}),
102
+ ...(ours.set.ability ? { ability: ours.set.ability } : {}),
103
+ },
104
+ // The log reports cumulative HP; the observation needs the per-hit share.
105
+ percentTaken: d.taken,
106
+ });
107
+ }
108
+ for (const [posKey, name] of Object.entries(replay.positions)) {
109
+ if (toID(name) !== targetKey)
110
+ continue;
111
+ const item = replay.itemReveals[posKey];
112
+ if (item && !observations.some((o) => o.kind === 'item'))
113
+ observations.push({ kind: 'item', item });
114
+ const ability = replay.abilityReveals[posKey];
115
+ if (ability && !observations.some((o) => o.kind === 'ability'))
116
+ observations.push({ kind: 'ability', ability });
117
+ for (const move of replay.movesByPos[posKey] ?? [])
118
+ observedMoves.add(move);
119
+ }
120
+ if (!observations.length) {
121
+ throw new Error(`The log contains no usable observations about ${targetName}: no Speed relations against your members, no damage it took from them, and no reveals.`);
122
+ }
123
+ const inference = runInference(targetName, observations.slice(0, 8), args.regulation);
124
+ return ok({
125
+ target: inference.species,
126
+ observations: inference.constraints.map((c) => c.observation),
127
+ ...(observedMoves.size ? { observedMoves: [...observedMoves] } : {}),
128
+ inference,
129
+ rematch: {
130
+ note: 'Feed the surviving candidates into prepare_matchup as the opponent\u2019s sets — the top candidate is the set to prepare for, the spread across candidates is the uncertainty to respect.',
131
+ },
132
+ });
133
+ }));
134
+ }
135
+ //# sourceMappingURL=scout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/tools/scout.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "getcompetitive",
3
- "version": "5.0.0",
3
+ "version": "6.1.0",
4
4
  "description": "MCP server exposing competitive Pokemon data and battle mechanics for team building and decision making",
5
5
  "type": "module",
6
6
  "bin": {