@conquest-eth/tools 0.0.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/LICENSE +21 -0
- package/README.md +259 -0
- package/dist/cli-tool-generator.d.ts +22 -0
- package/dist/cli-tool-generator.d.ts.map +1 -0
- package/dist/cli-tool-generator.js +217 -0
- package/dist/cli-tool-generator.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +76 -0
- package/dist/cli.js.map +1 -0
- package/dist/contracts/space-info.d.ts +7 -0
- package/dist/contracts/space-info.d.ts.map +1 -0
- package/dist/contracts/space-info.js +34 -0
- package/dist/contracts/space-info.js.map +1 -0
- package/dist/fleet/index.d.ts +4 -0
- package/dist/fleet/index.d.ts.map +1 -0
- package/dist/fleet/index.js +7 -0
- package/dist/fleet/index.js.map +1 -0
- package/dist/fleet/manager.d.ts +70 -0
- package/dist/fleet/manager.d.ts.map +1 -0
- package/dist/fleet/manager.js +92 -0
- package/dist/fleet/manager.js.map +1 -0
- package/dist/fleet/resolve.d.ts +51 -0
- package/dist/fleet/resolve.d.ts.map +1 -0
- package/dist/fleet/resolve.js +140 -0
- package/dist/fleet/resolve.js.map +1 -0
- package/dist/fleet/send.d.ts +29 -0
- package/dist/fleet/send.d.ts.map +1 -0
- package/dist/fleet/send.js +81 -0
- package/dist/fleet/send.js.map +1 -0
- package/dist/helpers/index.d.ts +14 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +28 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +143 -0
- package/dist/index.js.map +1 -0
- package/dist/planet/acquire.d.ts +16 -0
- package/dist/planet/acquire.d.ts.map +1 -0
- package/dist/planet/acquire.js +27 -0
- package/dist/planet/acquire.js.map +1 -0
- package/dist/planet/exit.d.ts +17 -0
- package/dist/planet/exit.d.ts.map +1 -0
- package/dist/planet/exit.js +56 -0
- package/dist/planet/exit.js.map +1 -0
- package/dist/planet/index.d.ts +4 -0
- package/dist/planet/index.d.ts.map +1 -0
- package/dist/planet/index.js +6 -0
- package/dist/planet/index.js.map +1 -0
- package/dist/planet/manager.d.ts +106 -0
- package/dist/planet/manager.d.ts.map +1 -0
- package/dist/planet/manager.js +253 -0
- package/dist/planet/manager.js.map +1 -0
- package/dist/storage/interface.d.ts +93 -0
- package/dist/storage/interface.d.ts.map +1 -0
- package/dist/storage/interface.js +2 -0
- package/dist/storage/interface.js.map +1 -0
- package/dist/storage/json-storage.d.ts +28 -0
- package/dist/storage/json-storage.d.ts.map +1 -0
- package/dist/storage/json-storage.js +148 -0
- package/dist/storage/json-storage.js.map +1 -0
- package/dist/tools/acquire_planets.d.ts +7 -0
- package/dist/tools/acquire_planets.d.ts.map +1 -0
- package/dist/tools/acquire_planets.js +63 -0
- package/dist/tools/acquire_planets.js.map +1 -0
- package/dist/tools/exit_planets.d.ts +5 -0
- package/dist/tools/exit_planets.d.ts.map +1 -0
- package/dist/tools/exit_planets.js +31 -0
- package/dist/tools/exit_planets.js.map +1 -0
- package/dist/tools/get_my_planets.d.ts +5 -0
- package/dist/tools/get_my_planets.d.ts.map +1 -0
- package/dist/tools/get_my_planets.js +30 -0
- package/dist/tools/get_my_planets.js.map +1 -0
- package/dist/tools/get_pending_exits.d.ts +3 -0
- package/dist/tools/get_pending_exits.d.ts.map +1 -0
- package/dist/tools/get_pending_exits.js +37 -0
- package/dist/tools/get_pending_exits.js.map +1 -0
- package/dist/tools/get_pending_fleets.d.ts +3 -0
- package/dist/tools/get_pending_fleets.d.ts.map +1 -0
- package/dist/tools/get_pending_fleets.js +41 -0
- package/dist/tools/get_pending_fleets.js.map +1 -0
- package/dist/tools/get_planets_around.d.ts +7 -0
- package/dist/tools/get_planets_around.d.ts.map +1 -0
- package/dist/tools/get_planets_around.js +41 -0
- package/dist/tools/get_planets_around.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/resolve_fleet.d.ts +5 -0
- package/dist/tools/resolve_fleet.d.ts.map +1 -0
- package/dist/tools/resolve_fleet.js +37 -0
- package/dist/tools/resolve_fleet.js.map +1 -0
- package/dist/tools/send_fleet.d.ts +16 -0
- package/dist/tools/send_fleet.d.ts.map +1 -0
- package/dist/tools/send_fleet.js +62 -0
- package/dist/tools/send_fleet.js.map +1 -0
- package/dist/tools/verify_exit_status.d.ts +5 -0
- package/dist/tools/verify_exit_status.d.ts.map +1 -0
- package/dist/tools/verify_exit_status.js +39 -0
- package/dist/tools/verify_exit_status.js.map +1 -0
- package/dist/types.d.ts +126 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +34 -0
- package/dist/types.js.map +1 -0
- package/dist/util/hashing.d.ts +33 -0
- package/dist/util/hashing.d.ts.map +1 -0
- package/dist/util/hashing.js +38 -0
- package/dist/util/hashing.js.map +1 -0
- package/dist/util/time.d.ts +43 -0
- package/dist/util/time.d.ts.map +1 -0
- package/dist/util/time.js +55 -0
- package/dist/util/time.js.map +1 -0
- package/package.json +78 -0
- package/src/cli-tool-generator.ts +287 -0
- package/src/cli.ts +109 -0
- package/src/contracts/space-info.ts +41 -0
- package/src/fleet/index.ts +8 -0
- package/src/fleet/manager.ts +140 -0
- package/src/fleet/resolve.ts +187 -0
- package/src/fleet/send.ts +112 -0
- package/src/helpers/index.ts +59 -0
- package/src/index.ts +181 -0
- package/src/planet/acquire.ts +41 -0
- package/src/planet/exit.ts +71 -0
- package/src/planet/index.ts +6 -0
- package/src/planet/manager.ts +335 -0
- package/src/storage/interface.ts +111 -0
- package/src/storage/json-storage.ts +184 -0
- package/src/tools/acquire_planets.ts +81 -0
- package/src/tools/exit_planets.ts +35 -0
- package/src/tools/get_my_planets.ts +30 -0
- package/src/tools/get_pending_exits.ts +37 -0
- package/src/tools/get_pending_fleets.ts +41 -0
- package/src/tools/get_planets_around.ts +44 -0
- package/src/tools/index.ts +10 -0
- package/src/tools/resolve_fleet.ts +37 -0
- package/src/tools/send_fleet.ts +68 -0
- package/src/tools/verify_exit_status.ts +43 -0
- package/src/types.ts +178 -0
- package/src/util/hashing.ts +60 -0
- package/src/util/time.ts +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit_planets.d.ts","sourceRoot":"","sources":["../../src/tools/exit_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,YAAY;;kBA+BvB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const exit_planets = createTool({
|
|
4
|
+
description: 'Exit (unstake) multiple planets to retrieve staked tokens. The exit process takes time and must be completed later.',
|
|
5
|
+
schema: z.object({
|
|
6
|
+
planetIds: z
|
|
7
|
+
.array(z.union([z.string(), z.number()]))
|
|
8
|
+
.describe('Array of planet location IDs to exit (as hex strings or numbers)'),
|
|
9
|
+
}),
|
|
10
|
+
execute: async (env, { planetIds }) => {
|
|
11
|
+
try {
|
|
12
|
+
// Convert planet IDs to BigInt
|
|
13
|
+
const planetIdsBigInt = planetIds.map((id) => typeof id === 'string' ? BigInt(id) : BigInt(id));
|
|
14
|
+
const result = await env.planetManager.exit(planetIdsBigInt);
|
|
15
|
+
return {
|
|
16
|
+
success: true,
|
|
17
|
+
result: {
|
|
18
|
+
transactionHash: result.hash,
|
|
19
|
+
exitsInitiated: result.exitsInitiated,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return {
|
|
25
|
+
success: false,
|
|
26
|
+
error: error instanceof Error ? error.message : String(error),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=exit_planets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit_planets.js","sourceRoot":"","sources":["../../src/tools/exit_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACtC,WAAW,EACV,qHAAqH;IACtH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,SAAS,EAAE,CAAC;aACV,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aACxC,QAAQ,CAAC,kEAAkE,CAAC;KAC9E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,SAAS,EAAC,EAAE,EAAE;QACnC,IAAI,CAAC;YACJ,+BAA+B;YAC/B,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC5C,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAChD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE7D,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,eAAe,EAAE,MAAM,CAAC,IAAI;oBAC5B,cAAc,EAAE,MAAM,CAAC,cAAc;iBACrC;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 @@
|
|
|
1
|
+
{"version":3,"file":"get_my_planets.d.ts","sourceRoot":"","sources":["../../src/tools/get_my_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,cAAc;;kBA0BzB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const get_my_planets = createTool({
|
|
4
|
+
description: 'Get all planets owned by the current user address.',
|
|
5
|
+
schema: z.object({
|
|
6
|
+
radius: z.number().max(50).describe('Search radius around origin (0,0) to find planets'),
|
|
7
|
+
}),
|
|
8
|
+
execute: async (env, { radius }) => {
|
|
9
|
+
try {
|
|
10
|
+
const planets = await env.planetManager.getMyPlanets(radius);
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
result: {
|
|
14
|
+
planets: planets.map(({ info, state }) => ({
|
|
15
|
+
planetId: info.location.id.toString(),
|
|
16
|
+
location: info.location,
|
|
17
|
+
...state,
|
|
18
|
+
})),
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
error: error instanceof Error ? error.message : String(error),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=get_my_planets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_my_planets.js","sourceRoot":"","sources":["../../src/tools/get_my_planets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACxC,WAAW,EAAE,oDAAoD;IACjE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KACxF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,MAAM,EAAC,EAAE,EAAE;QAChC,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE7D,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CAAC;wBACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE;wBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,GAAG,KAAK;qBACR,CAAC,CAAC;iBACH;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 @@
|
|
|
1
|
+
{"version":3,"file":"get_pending_exits.d.ts","sourceRoot":"","sources":["../../src/tools/get_pending_exits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,iBAAiB,4DAiC5B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const get_pending_exits = createTool({
|
|
4
|
+
description: 'Get all pending exit (unstake) operations for your planets.',
|
|
5
|
+
schema: z.object({
|
|
6
|
+
// No properties needed for this tool
|
|
7
|
+
}),
|
|
8
|
+
execute: async (env) => {
|
|
9
|
+
try {
|
|
10
|
+
const exits = await env.planetManager.getMyPendingExits();
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
result: {
|
|
14
|
+
exits: exits.map((exit) => ({
|
|
15
|
+
planetId: exit.planetId,
|
|
16
|
+
player: exit.player,
|
|
17
|
+
exitStartTime: exit.exitStartTime,
|
|
18
|
+
exitDuration: exit.exitDuration,
|
|
19
|
+
exitCompleteTime: exit.exitCompleteTime,
|
|
20
|
+
numSpaceships: exit.numSpaceships,
|
|
21
|
+
owner: exit.owner,
|
|
22
|
+
completed: exit.completed,
|
|
23
|
+
interrupted: exit.interrupted,
|
|
24
|
+
lastCheckedAt: exit.lastCheckedAt,
|
|
25
|
+
})),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: error instanceof Error ? error.message : String(error),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=get_pending_exits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_pending_exits.js","sourceRoot":"","sources":["../../src/tools/get_pending_exits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;IAC3C,WAAW,EAAE,6DAA6D;IAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;IAChB,qCAAqC;KACrC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;YAE1D,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;wBACvC,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;qBACjC,CAAC,CAAC;iBACH;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 @@
|
|
|
1
|
+
{"version":3,"file":"get_pending_fleets.d.ts","sourceRoot":"","sources":["../../src/tools/get_pending_fleets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,kBAAkB,4DAqC7B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const get_pending_fleets = createTool({
|
|
4
|
+
description: 'Get all pending fleets sent from your planets.',
|
|
5
|
+
schema: z.object({
|
|
6
|
+
// No properties needed for this tool
|
|
7
|
+
}),
|
|
8
|
+
execute: async (env) => {
|
|
9
|
+
try {
|
|
10
|
+
const fleets = await env.fleetManager.getMyPendingFleets();
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
result: {
|
|
14
|
+
fleets: fleets.map((fleet) => ({
|
|
15
|
+
fleetId: fleet.fleetId,
|
|
16
|
+
fromPlanetId: fleet.fromPlanetId,
|
|
17
|
+
toPlanetId: fleet.toPlanetId,
|
|
18
|
+
quantity: fleet.quantity,
|
|
19
|
+
secret: fleet.secret,
|
|
20
|
+
gift: fleet.gift,
|
|
21
|
+
specific: fleet.specific,
|
|
22
|
+
arrivalTimeWanted: fleet.arrivalTimeWanted,
|
|
23
|
+
fleetSender: fleet.fleetSender,
|
|
24
|
+
operator: fleet.operator,
|
|
25
|
+
committedAt: fleet.committedAt,
|
|
26
|
+
estimatedArrivalTime: fleet.estimatedArrivalTime,
|
|
27
|
+
resolved: fleet.resolved,
|
|
28
|
+
resolvedAt: fleet.resolvedAt,
|
|
29
|
+
})),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
error: error instanceof Error ? error.message : String(error),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=get_pending_fleets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_pending_fleets.js","sourceRoot":"","sources":["../../src/tools/get_pending_fleets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC5C,WAAW,EAAE,gDAAgD;IAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;IAChB,qCAAqC;KACrC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;YAE3D,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;wBAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;wBAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC5B,CAAC,CAAC;iBACH;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 @@
|
|
|
1
|
+
{"version":3,"file":"get_planets_around.d.ts","sourceRoot":"","sources":["../../src/tools/get_planets_around.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,kBAAkB;;;;kBAwC7B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const get_planets_around = createTool({
|
|
4
|
+
description: 'Get planets around a specific location within a certain radius. Useful for finding targets for fleet movement.',
|
|
5
|
+
schema: z.object({
|
|
6
|
+
centerX: z.number().describe('X coordinate of the center point'),
|
|
7
|
+
centerY: z.number().describe('Y coordinate of the center point'),
|
|
8
|
+
radius: z
|
|
9
|
+
.number()
|
|
10
|
+
.max(50)
|
|
11
|
+
.describe('Radius in distance units to search around the center point'),
|
|
12
|
+
}),
|
|
13
|
+
execute: async (env, { centerX, centerY, radius }) => {
|
|
14
|
+
try {
|
|
15
|
+
const planets = await env.planetManager.getPlanetsAround(centerX, centerY, radius);
|
|
16
|
+
return {
|
|
17
|
+
success: true,
|
|
18
|
+
result: {
|
|
19
|
+
center: {
|
|
20
|
+
x: centerX,
|
|
21
|
+
y: centerY,
|
|
22
|
+
},
|
|
23
|
+
radius,
|
|
24
|
+
planets: planets.map(({ info, state }) => ({
|
|
25
|
+
planetId: info.location.id,
|
|
26
|
+
distance: Math.sqrt(Math.pow(info.location.x - centerX, 2) + Math.pow(info.location.y - centerY, 2)),
|
|
27
|
+
location: info.location,
|
|
28
|
+
...state,
|
|
29
|
+
})),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
error: error instanceof Error ? error.message : String(error),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=get_planets_around.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_planets_around.js","sourceRoot":"","sources":["../../src/tools/get_planets_around.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC5C,WAAW,EACV,gHAAgH;IACjH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAChE,MAAM,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CAAC,4DAA4D,CAAC;KACxE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC,EAAE,EAAE;QAClD,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEnF,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACP,MAAM,EAAE;wBACP,CAAC,EAAE,OAAO;wBACV,CAAC,EAAE,OAAO;qBACV;oBACD,MAAM;oBACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CAAC;wBACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAC/E;wBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,GAAG,KAAK;qBACR,CAAC,CAAC;iBACH;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,10 @@
|
|
|
1
|
+
export { acquire_planets } from './acquire_planets.js';
|
|
2
|
+
export { send_fleet } from './send_fleet.js';
|
|
3
|
+
export { resolve_fleet } from './resolve_fleet.js';
|
|
4
|
+
export { exit_planets } from './exit_planets.js';
|
|
5
|
+
export { get_pending_exits } from './get_pending_exits.js';
|
|
6
|
+
export { verify_exit_status } from './verify_exit_status.js';
|
|
7
|
+
export { get_my_planets } from './get_my_planets.js';
|
|
8
|
+
export { get_planets_around } from './get_planets_around.js';
|
|
9
|
+
export { get_pending_fleets } from './get_pending_fleets.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Export all tools for auto-registration
|
|
2
|
+
export { acquire_planets } from './acquire_planets.js';
|
|
3
|
+
export { send_fleet } from './send_fleet.js';
|
|
4
|
+
export { resolve_fleet } from './resolve_fleet.js';
|
|
5
|
+
export { exit_planets } from './exit_planets.js';
|
|
6
|
+
export { get_pending_exits } from './get_pending_exits.js';
|
|
7
|
+
export { verify_exit_status } from './verify_exit_status.js';
|
|
8
|
+
export { get_my_planets } from './get_my_planets.js';
|
|
9
|
+
export { get_planets_around } from './get_planets_around.js';
|
|
10
|
+
export { get_pending_fleets } from './get_pending_fleets.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve_fleet.d.ts","sourceRoot":"","sources":["../../src/tools/resolve_fleet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,aAAa;;kBAiCxB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const resolve_fleet = createTool({
|
|
4
|
+
description: 'Resolve a previously sent fleet. This must be called after the fleet arrival time + resolve window to reveal the destination and secret.',
|
|
5
|
+
schema: z.object({
|
|
6
|
+
fleetId: z.string().describe('Fleet ID to resolve'),
|
|
7
|
+
}),
|
|
8
|
+
execute: async (env, { fleetId }) => {
|
|
9
|
+
try {
|
|
10
|
+
const result = await env.fleetManager.resolve(fleetId);
|
|
11
|
+
if (result.resolved) {
|
|
12
|
+
return {
|
|
13
|
+
success: true,
|
|
14
|
+
result: {
|
|
15
|
+
fleetId: result.fleet.fleetId,
|
|
16
|
+
fromPlanetId: result.fleet.fromPlanetId,
|
|
17
|
+
toPlanetId: result.fleet.toPlanetId,
|
|
18
|
+
quantity: result.fleet.quantity,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
error: result.reason,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: error instanceof Error ? error.message : String(error),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=resolve_fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve_fleet.js","sourceRoot":"","sources":["../../src/tools/resolve_fleet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACvC,WAAW,EACV,0IAA0I;IAC3I,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACnD,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE;QACjC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEvD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO;oBACN,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE;wBACP,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;wBAC7B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;wBACvC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;wBACnC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;qBAC/B;iBACD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO;oBACN,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM,CAAC,MAAM;iBACpB,CAAC;YACH,CAAC;QACF,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,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const send_fleet: import("../types.js").Tool<z.ZodObject<{
|
|
3
|
+
from: z.ZodObject<{
|
|
4
|
+
x: z.ZodNumber;
|
|
5
|
+
y: z.ZodNumber;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
to: z.ZodObject<{
|
|
8
|
+
x: z.ZodNumber;
|
|
9
|
+
y: z.ZodNumber;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
quantity: z.ZodNumber;
|
|
12
|
+
arrivalTimeWanted: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
gift: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
specific: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=send_fleet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send_fleet.d.ts","sourceRoot":"","sources":["../../src/tools/send_fleet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,UAAU;;;;;;;;;;;;;kBA+DrB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
import { zeroAddress } from 'viem';
|
|
4
|
+
export const send_fleet = createTool({
|
|
5
|
+
description: 'Send a fleet from one planet to another in the Conquest game. The fleet will travel through space and can be resolved after arrival.',
|
|
6
|
+
schema: z.object({
|
|
7
|
+
from: z.object({ x: z.number(), y: z.number() }).describe('Source planet coordinates {x, y}'),
|
|
8
|
+
to: z.object({ x: z.number(), y: z.number() }).describe('Destination planet coordinates {x, y}'),
|
|
9
|
+
quantity: z.number().describe('Number of spaceships to send'),
|
|
10
|
+
arrivalTimeWanted: z
|
|
11
|
+
.number()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Desired arrival time (timestamp in seconds). If not specified, will be calculated based on distance.'),
|
|
14
|
+
gift: z
|
|
15
|
+
.boolean()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('Whether the fleet is a gift (sent without requiring arrival)'),
|
|
18
|
+
specific: z.string().optional().describe('Additional specific data for the fleet'),
|
|
19
|
+
}),
|
|
20
|
+
execute: async (env, { from, to, quantity, arrivalTimeWanted, gift, specific }) => {
|
|
21
|
+
try {
|
|
22
|
+
// Convert coordinates to planet IDs
|
|
23
|
+
const fromPlanetId = env.planetManager.getPlanetIdByCoordinates(from.x, from.y);
|
|
24
|
+
if (!fromPlanetId) {
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
error: `No planet found at source coordinates (${from.x}, ${from.y})`,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const toPlanetId = env.planetManager.getPlanetIdByCoordinates(to.x, to.y);
|
|
31
|
+
if (!toPlanetId) {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: `No planet found at destination coordinates (${to.x}, ${to.y})`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const result = await env.fleetManager.send(fromPlanetId, toPlanetId, quantity, {
|
|
38
|
+
arrivalTimeWanted: typeof arrivalTimeWanted === 'undefined' ? undefined : BigInt(arrivalTimeWanted),
|
|
39
|
+
gift: gift ?? false,
|
|
40
|
+
specific: specific ?? zeroAddress,
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
success: true,
|
|
44
|
+
result: {
|
|
45
|
+
fleetId: result.fleetId,
|
|
46
|
+
from: result.fromPlanetId,
|
|
47
|
+
to: result.toPlanetId,
|
|
48
|
+
quantity: result.quantity,
|
|
49
|
+
arrivalTimeWanted: result.arrivalTimeWanted,
|
|
50
|
+
secret: result.secret,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return {
|
|
56
|
+
success: false,
|
|
57
|
+
error: error instanceof Error ? error.message : String(error),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=send_fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send_fleet.js","sourceRoot":"","sources":["../../src/tools/send_fleet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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;AAGtB,eAAO,MAAM,kBAAkB;;kBAuC7B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createTool } from '../types.js';
|
|
3
|
+
export const verify_exit_status = createTool({
|
|
4
|
+
description: "Check and update the status of a planet's exit operation. Verifies if the exit has completed or been interrupted.",
|
|
5
|
+
schema: z.object({
|
|
6
|
+
planetId: z
|
|
7
|
+
.union([z.string(), z.number()])
|
|
8
|
+
.describe('Planet location ID to verify (as hex string or number)'),
|
|
9
|
+
}),
|
|
10
|
+
execute: async (env, { planetId }) => {
|
|
11
|
+
try {
|
|
12
|
+
const result = await env.planetManager.verifyExitStatus(typeof planetId === 'string' ? BigInt(planetId) : BigInt(planetId));
|
|
13
|
+
// Calculate status based on exit state
|
|
14
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
15
|
+
const completed = currentTime >= result.exit.exitCompleteTime;
|
|
16
|
+
const status = result.interrupted ? 'interrupted' : completed ? 'completed' : 'in_progress';
|
|
17
|
+
const owner = result.newOwner || result.exit.player;
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
result: {
|
|
21
|
+
planetId: result.exit.planetId,
|
|
22
|
+
status,
|
|
23
|
+
completed,
|
|
24
|
+
interrupted: result.interrupted,
|
|
25
|
+
owner,
|
|
26
|
+
exitStartTime: result.exit.exitStartTime,
|
|
27
|
+
exitCompleteTime: result.exit.exitCompleteTime,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: error instanceof Error ? error.message : String(error),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=verify_exit_status.js.map
|
|
@@ -0,0 +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,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC5C,WAAW,EACV,mHAAmH;IACpH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC;aACT,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC/B,QAAQ,CAAC,wDAAwD,CAAC;KACpE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAE;QAClC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CACtD,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAClE,CAAC;YAEF,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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { Address, PublicClient, WalletClient } from 'viem';
|
|
2
|
+
import type { PlanetInfo } from 'conquest-eth-v0-contracts';
|
|
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
|
+
import type { FleetManager } from './fleet/manager.js';
|
|
7
|
+
import type { PlanetManager } from './planet/manager.js';
|
|
8
|
+
export interface StorageConfig {
|
|
9
|
+
type: 'json' | 'sqlite';
|
|
10
|
+
dataDir?: string;
|
|
11
|
+
}
|
|
12
|
+
export type GameContract = {
|
|
13
|
+
address: Address;
|
|
14
|
+
abi: Abi_IOuterSpace;
|
|
15
|
+
};
|
|
16
|
+
export type ClientsWithOptionalWallet = {
|
|
17
|
+
walletClient?: WalletClient;
|
|
18
|
+
publicClient: PublicClient;
|
|
19
|
+
};
|
|
20
|
+
export type Clients = {
|
|
21
|
+
walletClient: WalletClient;
|
|
22
|
+
publicClient: PublicClient;
|
|
23
|
+
};
|
|
24
|
+
export interface ContractConfig {
|
|
25
|
+
genesis: bigint;
|
|
26
|
+
resolveWindow: bigint;
|
|
27
|
+
timePerDistance: bigint;
|
|
28
|
+
exitDuration: bigint;
|
|
29
|
+
acquireNumSpaceships: number;
|
|
30
|
+
[key: string]: bigint | number;
|
|
31
|
+
}
|
|
32
|
+
export interface ExternalPlanet {
|
|
33
|
+
owner?: `0x${string}`;
|
|
34
|
+
ownerYakuzaSubscriptionEndTime: number;
|
|
35
|
+
lastUpdatedSaved: number;
|
|
36
|
+
startExitTime: number;
|
|
37
|
+
numSpaceships: number;
|
|
38
|
+
flagTime: number;
|
|
39
|
+
travelingUpkeep: number;
|
|
40
|
+
overflow: number;
|
|
41
|
+
active: boolean;
|
|
42
|
+
exiting: boolean;
|
|
43
|
+
exitTimeLeft: number;
|
|
44
|
+
natives: boolean;
|
|
45
|
+
capturing: boolean;
|
|
46
|
+
inReach: boolean;
|
|
47
|
+
rewardGiver: `0x${string}`;
|
|
48
|
+
requireClaimAcknowledgement?: string;
|
|
49
|
+
metadata: Record<string, string | number | boolean>;
|
|
50
|
+
}
|
|
51
|
+
export interface PendingExit {
|
|
52
|
+
planetId: bigint;
|
|
53
|
+
player: string;
|
|
54
|
+
exitStartTime: number;
|
|
55
|
+
exitDuration: number;
|
|
56
|
+
exitCompleteTime: number;
|
|
57
|
+
numSpaceships: number;
|
|
58
|
+
owner: string;
|
|
59
|
+
completed: boolean;
|
|
60
|
+
interrupted: boolean;
|
|
61
|
+
lastCheckedAt: number;
|
|
62
|
+
}
|
|
63
|
+
export interface PlanetWithDistance {
|
|
64
|
+
info: PlanetInfo;
|
|
65
|
+
state?: ExternalPlanet;
|
|
66
|
+
distance: number;
|
|
67
|
+
hasPendingExit?: boolean;
|
|
68
|
+
exitInfo?: {
|
|
69
|
+
exitStartTime: number;
|
|
70
|
+
exitCompleteTime: number;
|
|
71
|
+
timeUntilComplete: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export interface PendingFleet {
|
|
75
|
+
hash?: `0x${string}`;
|
|
76
|
+
fleetId: string;
|
|
77
|
+
fromPlanetId: bigint;
|
|
78
|
+
toPlanetId: bigint;
|
|
79
|
+
quantity: number;
|
|
80
|
+
secret: `0x${string}`;
|
|
81
|
+
gift: boolean;
|
|
82
|
+
specific: `0x${string}`;
|
|
83
|
+
arrivalTimeWanted: bigint;
|
|
84
|
+
fleetSender: `0x${string}`;
|
|
85
|
+
operator: `0x${string}`;
|
|
86
|
+
committedAt: number;
|
|
87
|
+
estimatedArrivalTime: number;
|
|
88
|
+
resolved: boolean;
|
|
89
|
+
resolvedAt?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface FleetResolution {
|
|
92
|
+
from: bigint;
|
|
93
|
+
to: bigint;
|
|
94
|
+
distance: bigint;
|
|
95
|
+
arrivalTimeWanted: bigint;
|
|
96
|
+
gift: boolean;
|
|
97
|
+
specific: `0x${string}`;
|
|
98
|
+
secret: `0x${string}`;
|
|
99
|
+
fleetSender: `0x${string}`;
|
|
100
|
+
operator: `0x${string}`;
|
|
101
|
+
}
|
|
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
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|