@conquest-eth/tools 0.0.0 → 0.0.2
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/README.md +20 -51
- package/dist/cli-tool-generator.d.ts +2 -1
- package/dist/cli-tool-generator.d.ts.map +1 -1
- package/dist/cli.js +61 -32
- package/dist/cli.js.map +1 -1
- package/dist/contracts/space-info.d.ts.map +1 -1
- package/dist/contracts/space-info.js +22 -1
- package/dist/contracts/space-info.js.map +1 -1
- package/dist/fleet/resolve.d.ts +1 -1
- package/dist/fleet/resolve.d.ts.map +1 -1
- package/dist/fleet/resolve.js +5 -4
- package/dist/fleet/resolve.js.map +1 -1
- package/dist/fleet/send.d.ts.map +1 -1
- package/dist/fleet/send.js +8 -8
- package/dist/fleet/send.js.map +1 -1
- package/dist/index.d.ts +6 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -128
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +14 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +29 -0
- package/dist/mcp.js.map +1 -0
- package/dist/planet/acquire.d.ts +3 -2
- package/dist/planet/acquire.d.ts.map +1 -1
- package/dist/planet/acquire.js +6 -4
- package/dist/planet/acquire.js.map +1 -1
- package/dist/planet/exit.d.ts.map +1 -1
- package/dist/planet/exit.js +1 -0
- package/dist/planet/exit.js.map +1 -1
- package/dist/planet/manager.d.ts +63 -0
- package/dist/planet/manager.d.ts.map +1 -1
- package/dist/planet/manager.js +125 -2
- package/dist/planet/manager.js.map +1 -1
- package/dist/planet/withdraw.d.ts +17 -0
- package/dist/planet/withdraw.d.ts.map +1 -0
- package/dist/planet/withdraw.js +25 -0
- package/dist/planet/withdraw.js.map +1 -0
- package/dist/storage/interface.d.ts +6 -0
- package/dist/storage/interface.d.ts.map +1 -1
- package/dist/storage/json-storage.d.ts +1 -0
- package/dist/storage/json-storage.d.ts.map +1 -1
- package/dist/storage/json-storage.js +10 -1
- package/dist/storage/json-storage.js.map +1 -1
- package/dist/tool-handling/cli-tool-generator.d.ts +22 -0
- package/dist/tool-handling/cli-tool-generator.d.ts.map +1 -0
- package/dist/tool-handling/cli-tool-generator.js +345 -0
- package/dist/tool-handling/cli-tool-generator.js.map +1 -0
- package/dist/tool-handling/cli.d.ts +19 -0
- package/dist/tool-handling/cli.d.ts.map +1 -0
- package/dist/tool-handling/cli.js +472 -0
- package/dist/tool-handling/cli.js.map +1 -0
- package/dist/tool-handling/index.d.ts +15 -0
- package/dist/tool-handling/index.d.ts.map +1 -0
- package/dist/tool-handling/index.js +32 -0
- package/dist/tool-handling/index.js.map +1 -0
- package/dist/tool-handling/mcp.d.ts +22 -0
- package/dist/tool-handling/mcp.d.ts.map +1 -0
- package/dist/tool-handling/mcp.js +88 -0
- package/dist/tool-handling/mcp.js.map +1 -0
- package/dist/tool-handling/types.d.ts +72 -0
- package/dist/tool-handling/types.d.ts.map +1 -0
- package/dist/tool-handling/types.js +10 -0
- package/dist/tool-handling/types.js.map +1 -0
- package/dist/tools/acquire_planets.d.ts +7 -5
- package/dist/tools/acquire_planets.d.ts.map +1 -1
- package/dist/tools/acquire_planets.js +28 -42
- package/dist/tools/acquire_planets.js.map +1 -1
- package/dist/tools/exit_planets.d.ts +7 -3
- package/dist/tools/exit_planets.d.ts.map +1 -1
- package/dist/tools/exit_planets.js +20 -9
- package/dist/tools/exit_planets.js.map +1 -1
- package/dist/tools/get_my_planets.d.ts +3 -2
- package/dist/tools/get_my_planets.d.ts.map +1 -1
- package/dist/tools/get_my_planets.js +5 -4
- package/dist/tools/get_my_planets.js.map +1 -1
- package/dist/tools/get_native_token_balance.d.ts +6 -0
- package/dist/tools/get_native_token_balance.d.ts.map +1 -0
- package/dist/tools/get_native_token_balance.js +64 -0
- package/dist/tools/get_native_token_balance.js.map +1 -0
- package/dist/tools/get_pending_exits.d.ts +2 -1
- package/dist/tools/get_pending_exits.d.ts.map +1 -1
- package/dist/tools/get_pending_exits.js +5 -4
- package/dist/tools/get_pending_exits.js.map +1 -1
- package/dist/tools/get_pending_fleets.d.ts +2 -1
- package/dist/tools/get_pending_fleets.d.ts.map +1 -1
- package/dist/tools/get_pending_fleets.js +5 -4
- package/dist/tools/get_pending_fleets.js.map +1 -1
- package/dist/tools/get_planets_around.d.ts +8 -4
- package/dist/tools/get_planets_around.d.ts.map +1 -1
- package/dist/tools/get_planets_around.js +40 -15
- package/dist/tools/get_planets_around.js.map +1 -1
- package/dist/tools/get_play_token_balance.d.ts +6 -0
- package/dist/tools/get_play_token_balance.d.ts.map +1 -0
- package/dist/tools/get_play_token_balance.js +80 -0
- package/dist/tools/get_play_token_balance.js.map +1 -0
- package/dist/tools/index.d.ts +7 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/missiv_get_user.d.ts +6 -0
- package/dist/tools/missiv_get_user.d.ts.map +1 -0
- package/dist/tools/missiv_get_user.js +50 -0
- package/dist/tools/missiv_get_user.js.map +1 -0
- package/dist/tools/missiv_register.d.ts +6 -0
- package/dist/tools/missiv_register.d.ts.map +1 -0
- package/dist/tools/missiv_register.js +103 -0
- package/dist/tools/missiv_register.js.map +1 -0
- package/dist/tools/resolve_fleet.d.ts +3 -2
- package/dist/tools/resolve_fleet.d.ts.map +1 -1
- package/dist/tools/resolve_fleet.js +5 -4
- package/dist/tools/resolve_fleet.js.map +1 -1
- package/dist/tools/send_fleet.d.ts +3 -2
- package/dist/tools/send_fleet.d.ts.map +1 -1
- package/dist/tools/send_fleet.js +16 -15
- package/dist/tools/send_fleet.js.map +1 -1
- package/dist/tools/simulate.d.ts +14 -0
- package/dist/tools/simulate.d.ts.map +1 -0
- package/dist/tools/simulate.js +123 -0
- package/dist/tools/simulate.js.map +1 -0
- package/dist/tools/simulate_multiple.d.ts +17 -0
- package/dist/tools/simulate_multiple.d.ts.map +1 -0
- package/dist/tools/simulate_multiple.js +166 -0
- package/dist/tools/simulate_multiple.js.map +1 -0
- package/dist/tools/verify_exit_status.d.ts +5 -3
- package/dist/tools/verify_exit_status.d.ts.map +1 -1
- package/dist/tools/verify_exit_status.js +12 -8
- package/dist/tools/verify_exit_status.js.map +1 -1
- package/dist/tools/withdraw.d.ts +9 -0
- package/dist/tools/withdraw.d.ts.map +1 -0
- package/dist/tools/withdraw.js +86 -0
- package/dist/tools/withdraw.js.map +1 -0
- package/dist/types.d.ts +31 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -33
- package/dist/types.js.map +1 -1
- package/dist/util/time.d.ts +0 -30
- package/dist/util/time.d.ts.map +1 -1
- package/dist/util/time.js +0 -36
- package/dist/util/time.js.map +1 -1
- package/package.json +80 -77
- package/src/cli.ts +88 -59
- package/src/contracts/space-info.ts +24 -1
- package/src/fleet/resolve.ts +5 -4
- package/src/fleet/send.ts +9 -8
- package/src/index.ts +28 -162
- package/src/mcp.ts +46 -0
- package/src/planet/acquire.ts +6 -6
- package/src/planet/exit.ts +1 -0
- package/src/planet/manager.ts +163 -0
- package/src/planet/withdraw.ts +33 -0
- package/src/storage/interface.ts +7 -0
- package/src/storage/json-storage.ts +11 -1
- package/src/tool-handling/cli.ts +559 -0
- package/src/tool-handling/index.ts +45 -0
- package/src/tool-handling/mcp.ts +127 -0
- package/src/tool-handling/types.ts +86 -0
- package/src/tools/acquire_planets.ts +34 -60
- package/src/tools/exit_planets.ts +25 -12
- package/src/tools/get_native_token_balance.ts +72 -0
- package/src/tools/get_pending_exits.ts +8 -5
- package/src/tools/get_pending_fleets.ts +8 -5
- package/src/tools/get_planets_around.ts +45 -16
- package/src/tools/get_play_token_balance.ts +90 -0
- package/src/tools/index.ts +7 -1
- package/src/tools/missiv_get_user.ts +68 -0
- package/src/tools/missiv_register.ts +122 -0
- package/src/tools/resolve_fleet.ts +8 -5
- package/src/tools/send_fleet.ts +21 -18
- package/src/tools/simulate.ts +141 -0
- package/src/tools/simulate_multiple.ts +197 -0
- package/src/tools/verify_exit_status.ts +15 -11
- package/src/tools/withdraw.ts +100 -0
- package/src/types.ts +33 -71
- package/src/util/time.ts +0 -46
- package/src/cli-tool-generator.ts +0 -287
- package/src/helpers/index.ts +0 -59
- package/src/tools/get_my_planets.ts +0 -30
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../tool-handling/types.js';
|
|
3
|
+
const coordinatesSchema = z.object({
|
|
4
|
+
x: z.number().describe('X coordinate'),
|
|
5
|
+
y: z.number().describe('Y coordinate'),
|
|
6
|
+
});
|
|
7
|
+
// Schema for multiple fleets simulation
|
|
8
|
+
const schema = z.object({
|
|
9
|
+
fleets: z
|
|
10
|
+
.array(z.object({
|
|
11
|
+
from: coordinatesSchema.describe('Source planet coordinates {x, y}'),
|
|
12
|
+
quantity: z.number().positive().describe('Number of spaceships to send'),
|
|
13
|
+
}))
|
|
14
|
+
.min(1)
|
|
15
|
+
.describe('Array of fleets to send to the target'),
|
|
16
|
+
to: coordinatesSchema.describe('Target planet coordinates {x, y}'),
|
|
17
|
+
arrivalTime: z
|
|
18
|
+
.number()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Specific arrival time in seconds. If not provided, uses the maximum travel time from all fleets.'),
|
|
21
|
+
});
|
|
22
|
+
export const simulate_multiple = createTool({
|
|
23
|
+
description: 'Simulate the outcome of multiple fleets attacking the same target planet. Fleets are processed sequentially, with the planet state updated after each combat. Returns individual fleet outcomes and the final combined result.',
|
|
24
|
+
schema,
|
|
25
|
+
execute: async (env, { fleets, to, arrivalTime }) => {
|
|
26
|
+
try {
|
|
27
|
+
// Get planet info for target
|
|
28
|
+
const toPlanetId = env.planetManager.getPlanetIdByCoordinates(to.x, to.y);
|
|
29
|
+
if (!toPlanetId) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: `No planet found at target coordinates (${to.x}, ${to.y})`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const toPlanet = env.planetManager.getPlanetInfo(toPlanetId);
|
|
36
|
+
if (!toPlanet) {
|
|
37
|
+
return {
|
|
38
|
+
success: false,
|
|
39
|
+
error: `Could not get planet info for target planet at (${to.x}, ${to.y})`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Fetch current state of target planet
|
|
43
|
+
const planetsWithState = await env.planetManager.getPlanetsAround(to.x, to.y, 0);
|
|
44
|
+
if (planetsWithState.length === 0) {
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
error: `Could not fetch state for target planet at (${to.x}, ${to.y})`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const toPlanetState = planetsWithState[0].state;
|
|
51
|
+
// Build fleet inputs with planet info
|
|
52
|
+
const fleetInputs = [];
|
|
53
|
+
const fleetDetails = [];
|
|
54
|
+
for (const fleet of fleets) {
|
|
55
|
+
// Get planet info for source
|
|
56
|
+
const fromPlanetId = env.planetManager.getPlanetIdByCoordinates(fleet.from.x, fleet.from.y);
|
|
57
|
+
if (!fromPlanetId) {
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
error: `No planet found at source coordinates (${fleet.from.x}, ${fleet.from.y})`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const fromPlanet = env.planetManager.getPlanetInfo(fromPlanetId);
|
|
64
|
+
if (!fromPlanet) {
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
error: `Could not get planet info for source planet at (${fleet.from.x}, ${fleet.from.y})`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const travelTime = env.spaceInfo.timeToArrive(fromPlanet, toPlanet);
|
|
71
|
+
const distance = env.spaceInfo.distance(fromPlanet, toPlanet);
|
|
72
|
+
fleetInputs.push({
|
|
73
|
+
fromPlanet,
|
|
74
|
+
fleetAmount: fleet.quantity,
|
|
75
|
+
// We pass undefined for player-related params since we're doing a simple simulation
|
|
76
|
+
senderPlayer: undefined,
|
|
77
|
+
fromPlayer: undefined,
|
|
78
|
+
gift: false,
|
|
79
|
+
specific: undefined,
|
|
80
|
+
extra: undefined,
|
|
81
|
+
});
|
|
82
|
+
fleetDetails.push({
|
|
83
|
+
from: { x: fleet.from.x, y: fleet.from.y },
|
|
84
|
+
quantity: fleet.quantity,
|
|
85
|
+
travelTime,
|
|
86
|
+
distance,
|
|
87
|
+
attack: fromPlanet.stats.attack,
|
|
88
|
+
speed: fromPlanet.stats.speed,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Use outcomeMultipleFleets() to simulate the combined attack
|
|
92
|
+
const multipleOutcome = env.spaceInfo.outcomeMultipleFleets(fleetInputs, toPlanet, toPlanetState, arrivalTime, undefined);
|
|
93
|
+
// Format the fleet outcomes
|
|
94
|
+
const formattedFleetOutcomes = multipleOutcome.fleets.map((fleetOutcome, index) => ({
|
|
95
|
+
from: fleetDetails[index].from,
|
|
96
|
+
quantity: fleetDetails[index].quantity,
|
|
97
|
+
travelTime: fleetDetails[index].travelTime,
|
|
98
|
+
distance: fleetDetails[index].distance,
|
|
99
|
+
sourcePlanet: {
|
|
100
|
+
attack: fleetDetails[index].attack,
|
|
101
|
+
speed: fleetDetails[index].speed,
|
|
102
|
+
},
|
|
103
|
+
outcome: {
|
|
104
|
+
min: {
|
|
105
|
+
captured: fleetOutcome.outcome.min.captured,
|
|
106
|
+
numSpaceshipsLeft: fleetOutcome.outcome.min.numSpaceshipsLeft,
|
|
107
|
+
},
|
|
108
|
+
max: {
|
|
109
|
+
captured: fleetOutcome.outcome.max.captured,
|
|
110
|
+
numSpaceshipsLeft: fleetOutcome.outcome.max.numSpaceshipsLeft,
|
|
111
|
+
},
|
|
112
|
+
timeUntilFails: fleetOutcome.outcome.timeUntilFails,
|
|
113
|
+
nativeResist: fleetOutcome.outcome.nativeResist,
|
|
114
|
+
gift: fleetOutcome.outcome.gift,
|
|
115
|
+
allies: fleetOutcome.outcome.allies,
|
|
116
|
+
combat: fleetOutcome.outcome.combat
|
|
117
|
+
? {
|
|
118
|
+
defenderLoss: fleetOutcome.outcome.combat.defenderLoss,
|
|
119
|
+
attackerLoss: fleetOutcome.outcome.combat.attackerLoss,
|
|
120
|
+
}
|
|
121
|
+
: undefined,
|
|
122
|
+
tax: fleetOutcome.outcome.tax
|
|
123
|
+
? {
|
|
124
|
+
taxRate: fleetOutcome.outcome.tax.taxRate,
|
|
125
|
+
loss: fleetOutcome.outcome.tax.loss,
|
|
126
|
+
}
|
|
127
|
+
: undefined,
|
|
128
|
+
},
|
|
129
|
+
}));
|
|
130
|
+
return {
|
|
131
|
+
success: true,
|
|
132
|
+
result: {
|
|
133
|
+
to: { x: to.x, y: to.y },
|
|
134
|
+
arrivalTime: multipleOutcome.arrivalTime,
|
|
135
|
+
fleets: formattedFleetOutcomes,
|
|
136
|
+
finalOutcome: {
|
|
137
|
+
min: {
|
|
138
|
+
captured: multipleOutcome.finalOutcome.min.captured,
|
|
139
|
+
numSpaceshipsLeft: multipleOutcome.finalOutcome.min.numSpaceshipsLeft,
|
|
140
|
+
owner: multipleOutcome.finalOutcome.min.owner ?? null,
|
|
141
|
+
},
|
|
142
|
+
max: {
|
|
143
|
+
captured: multipleOutcome.finalOutcome.max.captured,
|
|
144
|
+
numSpaceshipsLeft: multipleOutcome.finalOutcome.max.numSpaceshipsLeft,
|
|
145
|
+
owner: multipleOutcome.finalOutcome.max.owner ?? null,
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
targetPlanet: {
|
|
149
|
+
owner: toPlanetState.owner ?? null,
|
|
150
|
+
numSpaceships: toPlanetState.numSpaceships,
|
|
151
|
+
natives: toPlanetState.natives,
|
|
152
|
+
active: toPlanetState.active,
|
|
153
|
+
exiting: toPlanetState.exiting,
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
error: error instanceof Error ? error.message : String(error),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=simulate_multiple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulate_multiple.js","sourceRoot":"","sources":["../../src/tools/simulate_multiple.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type { ConquestEnv } from '../types.js';
|
|
3
|
+
export declare const verify_exit_status: import("../tool-handling/types.js").Tool<z.ZodObject<{
|
|
4
|
+
x: z.ZodNumber;
|
|
5
|
+
y: z.ZodNumber;
|
|
6
|
+
}, z.core.$strip>, ConquestEnv>;
|
|
5
7
|
//# sourceMappingURL=verify_exit_status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify_exit_status.d.ts","sourceRoot":"","sources":["../../src/tools/verify_exit_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"verify_exit_status.d.ts","sourceRoot":"","sources":["../../src/tools/verify_exit_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAO7C,eAAO,MAAM,kBAAkB;;;+BAqC7B,CAAC"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { createTool } from '../types.js';
|
|
2
|
+
import { createTool } from '../tool-handling/types.js';
|
|
3
|
+
const schema = z.object({
|
|
4
|
+
x: z.number().describe('X coordinate of the planet'),
|
|
5
|
+
y: z.number().describe('Y coordinate of the planet'),
|
|
6
|
+
});
|
|
3
7
|
export const verify_exit_status = createTool({
|
|
4
8
|
description: "Check and update the status of a planet's exit operation. Verifies if the exit has completed or been interrupted.",
|
|
5
|
-
schema
|
|
6
|
-
|
|
7
|
-
.union([z.string(), z.number()])
|
|
8
|
-
.describe('Planet location ID to verify (as hex string or number)'),
|
|
9
|
-
}),
|
|
10
|
-
execute: async (env, { planetId }) => {
|
|
9
|
+
schema,
|
|
10
|
+
execute: async (env, { x, y }) => {
|
|
11
11
|
try {
|
|
12
|
-
const
|
|
12
|
+
const planetId = env.planetManager.getPlanetIdByCoordinates(x, y);
|
|
13
|
+
if (planetId === undefined) {
|
|
14
|
+
throw new Error(`No planet found at coordinates (${x}, ${y})`);
|
|
15
|
+
}
|
|
16
|
+
const result = await env.planetManager.verifyExitStatus(planetId);
|
|
13
17
|
// Calculate status based on exit state
|
|
14
18
|
const currentTime = Math.floor(Date.now() / 1000);
|
|
15
19
|
const completed = currentTime >= result.exit.exitCompleteTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify_exit_status.js","sourceRoot":"","sources":["../../src/tools/verify_exit_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"verify_exit_status.js","sourceRoot":"","sources":["../../src/tools/verify_exit_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACpD,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAA6B;IACxE,WAAW,EACV,mHAAmH;IACpH,MAAM;IACN,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,EAAE;QAC9B,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAElE,uCAAuC;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;YAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAEpD,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;oBAC9B,MAAM;oBACN,SAAS;oBACT,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,KAAK;oBACL,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;oBACxC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB;iBAC9C;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7D,CAAC;QACH,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ConquestEnv } from '../types.js';
|
|
3
|
+
export declare const withdraw: import("../tool-handling/types.js").Tool<z.ZodObject<{
|
|
4
|
+
coordinates: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
5
|
+
x: z.ZodNumber;
|
|
6
|
+
y: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>>>;
|
|
8
|
+
}, z.core.$strip>, ConquestEnv>;
|
|
9
|
+
//# sourceMappingURL=withdraw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../src/tools/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAgB7C,eAAO,MAAM,QAAQ;;;;;+BAiFnB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../tool-handling/types.js';
|
|
3
|
+
const schema = z.object({
|
|
4
|
+
coordinates: z
|
|
5
|
+
.array(z.object({
|
|
6
|
+
x: z.number().describe('X coordinate of the planet'),
|
|
7
|
+
y: z.number().describe('Y coordinate of the planet'),
|
|
8
|
+
}))
|
|
9
|
+
.optional()
|
|
10
|
+
.describe('Optional array of planet coordinates to withdraw tokens from. If not provided, automatically withdraws from all planets that have completed exits and are ready for withdrawal.'),
|
|
11
|
+
});
|
|
12
|
+
export const withdraw = createTool({
|
|
13
|
+
description: 'Withdraw staked tokens from planets that have completed their exit process. If coordinates are provided, withdraws from those specific planets. If no coordinates are provided, automatically finds and withdraws from all planets with completed exits that have not been withdrawn yet.',
|
|
14
|
+
schema,
|
|
15
|
+
execute: async (env, { coordinates }) => {
|
|
16
|
+
try {
|
|
17
|
+
// If coordinates are provided, withdraw from specific planets
|
|
18
|
+
if (coordinates && coordinates.length > 0) {
|
|
19
|
+
// Convert x,y coordinates to planet IDs
|
|
20
|
+
const planetIdsBigInt = [];
|
|
21
|
+
for (const coord of coordinates) {
|
|
22
|
+
const planetId = env.planetManager.getPlanetIdByCoordinates(coord.x, coord.y);
|
|
23
|
+
if (planetId === undefined) {
|
|
24
|
+
throw new Error(`No planet found at coordinates (${coord.x}, ${coord.y})`);
|
|
25
|
+
}
|
|
26
|
+
planetIdsBigInt.push(planetId);
|
|
27
|
+
}
|
|
28
|
+
// Call withdraw method
|
|
29
|
+
const result = await env.planetManager.withdraw(planetIdsBigInt);
|
|
30
|
+
return {
|
|
31
|
+
success: true,
|
|
32
|
+
result: {
|
|
33
|
+
transactionHash: result.hash,
|
|
34
|
+
coordinates: coordinates,
|
|
35
|
+
planetsWithdrawn: result.planetsWithdrawn.map((id) => id.toString()),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// No coordinates provided - automatically find and withdraw all ready exits
|
|
40
|
+
const withdrawableExits = await env.planetManager.getWithdrawableExits();
|
|
41
|
+
if (withdrawableExits.length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
success: true,
|
|
44
|
+
result: {
|
|
45
|
+
message: 'No planets with completed exits ready for withdrawal',
|
|
46
|
+
planetsWithdrawn: [],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Get coordinates for the withdrawable planets (for return value)
|
|
51
|
+
const withdrawableCoordinates = withdrawableExits
|
|
52
|
+
.map((exit) => {
|
|
53
|
+
const planet = env.planetManager.getPlanetInfo(exit.planetId);
|
|
54
|
+
return planet ? { x: planet.location.x, y: planet.location.y } : null;
|
|
55
|
+
})
|
|
56
|
+
.filter((c) => c !== null);
|
|
57
|
+
// Withdraw all
|
|
58
|
+
const result = await env.planetManager.withdrawAll();
|
|
59
|
+
if (!result) {
|
|
60
|
+
return {
|
|
61
|
+
success: true,
|
|
62
|
+
result: {
|
|
63
|
+
message: 'No planets with completed exits ready for withdrawal',
|
|
64
|
+
planetsWithdrawn: [],
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
success: true,
|
|
70
|
+
result: {
|
|
71
|
+
transactionHash: result.hash,
|
|
72
|
+
coordinates: withdrawableCoordinates,
|
|
73
|
+
planetsWithdrawn: result.planetsWithdrawn.map((id) => id.toString()),
|
|
74
|
+
message: `Successfully withdrew tokens from ${result.planetsWithdrawn.length} planet(s)`,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return {
|
|
80
|
+
success: false,
|
|
81
|
+
error: error instanceof Error ? error.message : String(error),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=withdraw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../src/tools/withdraw.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import type { Address, PublicClient, WalletClient } from 'viem';
|
|
2
|
-
import type { PlanetInfo } from 'conquest-eth-v0-contracts';
|
|
2
|
+
import type { PlanetInfo, SpaceInfo } from 'conquest-eth-v0-contracts';
|
|
3
3
|
import type { Abi_IOuterSpace } from 'conquest-eth-v0-contracts/abis/IOuterSpace.js';
|
|
4
|
-
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
-
import { z } from 'zod';
|
|
6
4
|
import type { FleetManager } from './fleet/manager.js';
|
|
7
5
|
import type { PlanetManager } from './planet/manager.js';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration options for creating the ConquestEnv
|
|
8
|
+
*/
|
|
9
|
+
export interface EnvFactoryOptions {
|
|
10
|
+
/** RPC URL for the Ethereum network */
|
|
11
|
+
rpcUrl: string;
|
|
12
|
+
/** Contract address of the game */
|
|
13
|
+
gameContract: `0x${string}`;
|
|
14
|
+
/** Optional private key for sending transactions */
|
|
15
|
+
privateKey?: `0x${string}`;
|
|
16
|
+
/** Path to storage directory (default: './data') */
|
|
17
|
+
storagePath?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Environment type for Conquest tools
|
|
21
|
+
* Contains the managers needed for tool execution
|
|
22
|
+
*/
|
|
23
|
+
export interface ConquestEnv {
|
|
24
|
+
fleetManager: FleetManager;
|
|
25
|
+
planetManager: PlanetManager;
|
|
26
|
+
spaceInfo: SpaceInfo;
|
|
27
|
+
contractConfig: ContractConfig;
|
|
28
|
+
clients: ClientsWithOptionalWallet;
|
|
29
|
+
options: EnvFactoryOptions;
|
|
30
|
+
}
|
|
8
31
|
export interface StorageConfig {
|
|
9
32
|
type: 'json' | 'sqlite';
|
|
10
33
|
dataDir?: string;
|
|
@@ -27,7 +50,9 @@ export interface ContractConfig {
|
|
|
27
50
|
timePerDistance: bigint;
|
|
28
51
|
exitDuration: bigint;
|
|
29
52
|
acquireNumSpaceships: number;
|
|
30
|
-
|
|
53
|
+
stakingToken: `0x${string}`;
|
|
54
|
+
numTokensPerNativeToken: bigint;
|
|
55
|
+
[key: string]: bigint | number | `0x${string}`;
|
|
31
56
|
}
|
|
32
57
|
export interface ExternalPlanet {
|
|
33
58
|
owner?: `0x${string}`;
|
|
@@ -59,6 +84,8 @@ export interface PendingExit {
|
|
|
59
84
|
completed: boolean;
|
|
60
85
|
interrupted: boolean;
|
|
61
86
|
lastCheckedAt: number;
|
|
87
|
+
withdrawn: boolean;
|
|
88
|
+
withdrawnAt?: number;
|
|
62
89
|
}
|
|
63
90
|
export interface PlanetWithDistance {
|
|
64
91
|
info: PlanetInfo;
|
|
@@ -99,28 +126,4 @@ export interface FleetResolution {
|
|
|
99
126
|
fleetSender: `0x${string}`;
|
|
100
127
|
operator: `0x${string}`;
|
|
101
128
|
}
|
|
102
|
-
export type ToolEnvironment = {
|
|
103
|
-
sendStatus: (message: string) => Promise<void>;
|
|
104
|
-
fleetManager: FleetManager;
|
|
105
|
-
planetManager: PlanetManager;
|
|
106
|
-
};
|
|
107
|
-
export type ToolResult = {
|
|
108
|
-
success: true;
|
|
109
|
-
result: Record<string, any>;
|
|
110
|
-
} | {
|
|
111
|
-
success: false;
|
|
112
|
-
error: string;
|
|
113
|
-
stack?: string;
|
|
114
|
-
};
|
|
115
|
-
export type Tool<S extends z.ZodObject<any> = z.ZodObject<any>> = {
|
|
116
|
-
description: string;
|
|
117
|
-
schema: S;
|
|
118
|
-
execute: (env: ToolEnvironment, params: z.infer<S>) => Promise<ToolResult>;
|
|
119
|
-
};
|
|
120
|
-
export declare function createTool<S extends z.ZodObject<any>>(config: {
|
|
121
|
-
description: string;
|
|
122
|
-
schema: S;
|
|
123
|
-
execute: (env: ToolEnvironment, params: z.infer<S>) => Promise<ToolResult>;
|
|
124
|
-
}): Tool<S>;
|
|
125
|
-
export declare function convertToCallToolResult(result: ToolResult): CallToolResult;
|
|
126
129
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAC,MAAM,MAAM,CAAC;AAC9D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export function createTool(config) {
|
|
3
|
-
return config;
|
|
4
|
-
}
|
|
5
|
-
// Convert ToolResult to CallToolResult format
|
|
6
|
-
export function convertToCallToolResult(result) {
|
|
7
|
-
// Import stringifyWithBigInt to handle BigInt serialization
|
|
8
|
-
const stringifyWithBigInt = (obj, space) => {
|
|
9
|
-
return JSON.stringify(obj, (_key, value) => (typeof value === 'bigint' ? value.toString() : value), space);
|
|
10
|
-
};
|
|
11
|
-
if (result.success === false) {
|
|
12
|
-
return {
|
|
13
|
-
content: [
|
|
14
|
-
{
|
|
15
|
-
type: 'text',
|
|
16
|
-
text: stringifyWithBigInt({
|
|
17
|
-
error: result.error,
|
|
18
|
-
...(result.stack ? { stack: result.stack } : {}),
|
|
19
|
-
}),
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
isError: true,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
content: [
|
|
27
|
-
{
|
|
28
|
-
type: 'text',
|
|
29
|
-
text: stringifyWithBigInt(result.result, 2),
|
|
30
|
-
},
|
|
31
|
-
],
|
|
32
|
-
};
|
|
33
|
-
}
|
|
1
|
+
export {};
|
|
34
2
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/util/time.d.ts
CHANGED
|
@@ -2,36 +2,6 @@
|
|
|
2
2
|
* Get current timestamp in seconds
|
|
3
3
|
*/
|
|
4
4
|
export declare function getCurrentTimestamp(): number;
|
|
5
|
-
/**
|
|
6
|
-
* Calculate estimated arrival time based on distance and timePerDistance
|
|
7
|
-
*
|
|
8
|
-
* @param distance - The distance between planets
|
|
9
|
-
* @param timePerDistance - Time multiplier from contract config (seconds per distance unit)
|
|
10
|
-
* @param genesis - Genesis timestamp from contract config
|
|
11
|
-
* @returns Estimated arrival time in seconds
|
|
12
|
-
*/
|
|
13
|
-
export declare function calculateEstimatedArrivalTime(params: {
|
|
14
|
-
startTime: bigint;
|
|
15
|
-
distance: bigint;
|
|
16
|
-
timePerDistance: bigint;
|
|
17
|
-
}): number;
|
|
18
|
-
/**
|
|
19
|
-
* Calculate when the resolve window opens
|
|
20
|
-
* A fleet can be resolved after it arrives and the resolve window has passed
|
|
21
|
-
*
|
|
22
|
-
* @param estimatedArrivalTime - When the fleet is estimated to arrive
|
|
23
|
-
* @param resolveWindow - The resolve window duration in seconds from contract config
|
|
24
|
-
* @returns The timestamp when the fleet can be resolved
|
|
25
|
-
*/
|
|
26
|
-
export declare function calculateResolveWindowOpen(estimatedArrivalTime: number, resolveWindow: bigint): number;
|
|
27
|
-
/**
|
|
28
|
-
* Check if a fleet can be resolved now
|
|
29
|
-
*
|
|
30
|
-
* @param estimatedArrivalTime - When the fleet was estimated to arrive
|
|
31
|
-
* @param resolveWindow - The resolve window duration in seconds
|
|
32
|
-
* @returns True if the fleet can be resolved now
|
|
33
|
-
*/
|
|
34
|
-
export declare function canResolveNow(estimatedArrivalTime: number, resolveWindow: bigint): boolean;
|
|
35
5
|
/**
|
|
36
6
|
* Format timestamp as ISO string
|
|
37
7
|
*/
|
package/dist/util/time.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/util/time.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/util/time.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
package/dist/util/time.js
CHANGED
|
@@ -4,42 +4,6 @@
|
|
|
4
4
|
export function getCurrentTimestamp() {
|
|
5
5
|
return Math.floor(Date.now() / 1000);
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
8
|
-
* Calculate estimated arrival time based on distance and timePerDistance
|
|
9
|
-
*
|
|
10
|
-
* @param distance - The distance between planets
|
|
11
|
-
* @param timePerDistance - Time multiplier from contract config (seconds per distance unit)
|
|
12
|
-
* @param genesis - Genesis timestamp from contract config
|
|
13
|
-
* @returns Estimated arrival time in seconds
|
|
14
|
-
*/
|
|
15
|
-
export function calculateEstimatedArrivalTime(params) {
|
|
16
|
-
const { startTime, distance, timePerDistance } = params;
|
|
17
|
-
const travelTime = Number(distance) * Number(timePerDistance);
|
|
18
|
-
return Number(startTime) + travelTime;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Calculate when the resolve window opens
|
|
22
|
-
* A fleet can be resolved after it arrives and the resolve window has passed
|
|
23
|
-
*
|
|
24
|
-
* @param estimatedArrivalTime - When the fleet is estimated to arrive
|
|
25
|
-
* @param resolveWindow - The resolve window duration in seconds from contract config
|
|
26
|
-
* @returns The timestamp when the fleet can be resolved
|
|
27
|
-
*/
|
|
28
|
-
export function calculateResolveWindowOpen(estimatedArrivalTime, resolveWindow) {
|
|
29
|
-
return estimatedArrivalTime + Number(resolveWindow);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Check if a fleet can be resolved now
|
|
33
|
-
*
|
|
34
|
-
* @param estimatedArrivalTime - When the fleet was estimated to arrive
|
|
35
|
-
* @param resolveWindow - The resolve window duration in seconds
|
|
36
|
-
* @returns True if the fleet can be resolved now
|
|
37
|
-
*/
|
|
38
|
-
export function canResolveNow(estimatedArrivalTime, resolveWindow) {
|
|
39
|
-
const currentTime = getCurrentTimestamp();
|
|
40
|
-
const resolveWindowOpen = calculateResolveWindowOpen(estimatedArrivalTime, resolveWindow);
|
|
41
|
-
return currentTime >= resolveWindowOpen;
|
|
42
|
-
}
|
|
43
7
|
/**
|
|
44
8
|
* Format timestamp as ISO string
|
|
45
9
|
*/
|
package/dist/util/time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/util/time.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACtC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/util/time.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAChD,OAAO,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACzD,CAAC"}
|