@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 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../src/planet/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC,CAe5D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Withdraw tokens from planets that have completed their exit process
|
|
3
|
+
*
|
|
4
|
+
* Uses the fetchAndWithdrawFor contract function which fetches any completed
|
|
5
|
+
* exits and withdraws the staked tokens to the owner's wallet.
|
|
6
|
+
*
|
|
7
|
+
* @param clients - Viem clients (publicClient and walletClient)
|
|
8
|
+
* @param gameContract - The game contract instance with address and ABI
|
|
9
|
+
* @param planetIds - Array of planet location IDs to withdraw from
|
|
10
|
+
* @returns Transaction hash and list of planet IDs for which withdrawals were processed
|
|
11
|
+
*/
|
|
12
|
+
export async function withdrawFromPlanets(clients, gameContract, planetIds) {
|
|
13
|
+
const sender = clients.walletClient.account.address;
|
|
14
|
+
// Simulate the fetchAndWithdrawFor transaction
|
|
15
|
+
const simulation = await clients.publicClient.simulateContract({
|
|
16
|
+
...gameContract,
|
|
17
|
+
functionName: 'fetchAndWithdrawFor',
|
|
18
|
+
args: [sender, planetIds],
|
|
19
|
+
account: sender,
|
|
20
|
+
});
|
|
21
|
+
// Send the transaction
|
|
22
|
+
const hash = await clients.walletClient.writeContract(simulation.request);
|
|
23
|
+
return { hash, planetsWithdrawn: planetIds };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=withdraw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../src/planet/withdraw.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAAgB,EAChB,YAA0B,EAC1B,SAAmB;IAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAQ,CAAC,OAAO,CAAC;IAErD,+CAA+C;IAC/C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC9D,GAAG,YAAY;QACf,YAAY,EAAE,qBAAqB;QACnC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;QACzB,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAE1E,OAAO,EAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -79,6 +79,12 @@ export interface FleetStorage {
|
|
|
79
79
|
* @param newOwner - The address of the new owner who interrupted the exit
|
|
80
80
|
*/
|
|
81
81
|
markExitInterrupted(planetId: bigint, interruptedAt: number, newOwner: Address): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Mark an exit as withdrawn (tokens claimed)
|
|
84
|
+
* @param planetId - The planet location ID
|
|
85
|
+
* @param withdrawnAt - The timestamp when the tokens were withdrawn
|
|
86
|
+
*/
|
|
87
|
+
markExitWithdrawn(planetId: bigint, withdrawnAt: number): Promise<void>;
|
|
82
88
|
/**
|
|
83
89
|
* Clean up old completed exits from storage
|
|
84
90
|
* @param olderThan - Unix timestamp; exits completed before this time will be removed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/storage/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAClC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAG5B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAExD;;;;OAIG;IACH,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEnE;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE/C;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAIxC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE9D;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjE;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/F;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC7C"}
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/storage/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAClC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAG5B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAExD;;;;OAIG;IACH,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEnE;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE/C;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAIxC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE9D;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjE;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/F;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC7C"}
|
|
@@ -22,6 +22,7 @@ export declare class JsonFleetStorage implements FleetStorage {
|
|
|
22
22
|
updateExitStatus(planetId: bigint, updates: Partial<PendingExit>): Promise<void>;
|
|
23
23
|
markExitCompleted(planetId: bigint, completedAt: number): Promise<void>;
|
|
24
24
|
markExitInterrupted(planetId: bigint, interruptedAt: number, newOwner: Address): Promise<void>;
|
|
25
|
+
markExitWithdrawn(planetId: bigint, withdrawnAt: number): Promise<void>;
|
|
25
26
|
cleanupOldCompletedExits(olderThan: number): Promise<void>;
|
|
26
27
|
getAllPendingExits(): Promise<PendingExit[]>;
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-storage.d.ts","sourceRoot":"","sources":["../../src/storage/json-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAQtD,qBAAa,gBAAiB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,MAAiB;IAKhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,iBAAiB;YAMjB,IAAI;IAKZ,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKvD,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOlE,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAQ9C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAMvC,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK7D,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOhE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAShF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvE,mBAAmB,CACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAWV,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAIlD"}
|
|
1
|
+
{"version":3,"file":"json-storage.d.ts","sourceRoot":"","sources":["../../src/storage/json-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAQtD,qBAAa,gBAAiB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,MAAiB;IAKhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,iBAAiB;YAMjB,IAAI;IAKZ,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKvD,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOlE,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAQ9C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAMvC,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK7D,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOhE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAShF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvE,mBAAmB,CACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAWV,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvE,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAIlD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import { stringifyWithBigInt } from '../
|
|
3
|
+
import { stringifyWithBigInt } from '../tool-handling/index.js';
|
|
4
4
|
export class JsonFleetStorage {
|
|
5
5
|
dataPath;
|
|
6
6
|
data;
|
|
@@ -129,6 +129,15 @@ export class JsonFleetStorage {
|
|
|
129
129
|
await this.save();
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
+
async markExitWithdrawn(planetId, withdrawnAt) {
|
|
133
|
+
await this.ensureInitialized();
|
|
134
|
+
const exit = this.data.exits[planetId.toString()];
|
|
135
|
+
if (exit) {
|
|
136
|
+
exit.withdrawn = true;
|
|
137
|
+
exit.withdrawnAt = withdrawnAt;
|
|
138
|
+
await this.save();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
132
141
|
async cleanupOldCompletedExits(olderThan) {
|
|
133
142
|
await this.ensureInitialized();
|
|
134
143
|
const now = Math.floor(Date.now() / 1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-storage.js","sourceRoot":"","sources":["../../src/storage/json-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,IAAI,EAAE,EAAC,MAAM,IAAI,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAC,mBAAmB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"json-storage.js","sourceRoot":"","sources":["../../src/storage/json-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { Tool } from './types.js';
|
|
4
|
+
import type { StorageConfig } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* CLI configuration parameters
|
|
7
|
+
*/
|
|
8
|
+
export interface CliConfig {
|
|
9
|
+
chain: any;
|
|
10
|
+
privateKey?: `0x${string}`;
|
|
11
|
+
gameContract: `0x${string}`;
|
|
12
|
+
storageConfig: StorageConfig;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate a single tool command from tool definition
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateToolCommand(program: Command, toolName: string, tool: Tool<z.ZodObject<any>>): void;
|
|
18
|
+
/**
|
|
19
|
+
* Register all tool commands from a tools object
|
|
20
|
+
*/
|
|
21
|
+
export declare function registerAllToolCommands(program: Command, tools: Record<string, Tool>): void;
|
|
22
|
+
//# sourceMappingURL=cli-tool-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-tool-generator.d.ts","sourceRoot":"","sources":["../../src/tool-handling/cli-tool-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,IAAI,EAA8B,MAAM,YAAY,CAAC;AAOlE,OAAO,KAAK,EAA0C,aAAa,EAAC,MAAM,aAAa,CAAC;AAIxF;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,aAAa,CAAC;CAC7B;AAiRD;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAC1B,IAAI,CA6GN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAQ3F"}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getClients } from 'tools-ethereum/helpers';
|
|
3
|
+
import { getChain } from 'tools-ethereum/helpers';
|
|
4
|
+
import { createSpaceInfo } from '../contracts/space-info.js';
|
|
5
|
+
import { JsonFleetStorage } from '../storage/json-storage.js';
|
|
6
|
+
import { FleetManager } from '../fleet/manager.js';
|
|
7
|
+
import { PlanetManager } from '../planet/manager.js';
|
|
8
|
+
import { Abi_IOuterSpace } from 'conquest-eth-v0-contracts/abis/IOuterSpace.js';
|
|
9
|
+
/**
|
|
10
|
+
* Convert Zod schema field to commander.js option definition
|
|
11
|
+
*/
|
|
12
|
+
function zodFieldToOption(name, field) {
|
|
13
|
+
// Handle boolean flags - no value required
|
|
14
|
+
if (field instanceof z.ZodBoolean) {
|
|
15
|
+
return `--${name}`;
|
|
16
|
+
}
|
|
17
|
+
// All other types use <value> to accept explicit values
|
|
18
|
+
return `--${name} <value>`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if a ZodUnion contains a number type
|
|
22
|
+
*/
|
|
23
|
+
function unionContainsNumber(field) {
|
|
24
|
+
for (const option of field.options) {
|
|
25
|
+
if (option instanceof z.ZodNumber) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parse option value based on Zod type
|
|
33
|
+
*/
|
|
34
|
+
function parseOptionValue(field, value) {
|
|
35
|
+
// Handle array types - parse comma-separated values or JSON arrays
|
|
36
|
+
if (field instanceof z.ZodArray) {
|
|
37
|
+
if (typeof value === 'string') {
|
|
38
|
+
// Check if it's a JSON array
|
|
39
|
+
if (value.trim().startsWith('[')) {
|
|
40
|
+
try {
|
|
41
|
+
return JSON.parse(value);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Fall through to comma-separated parsing
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Check if array element type is number
|
|
48
|
+
const elementType = field.element;
|
|
49
|
+
const items = value.split(',').map((v) => v.trim());
|
|
50
|
+
if (elementType instanceof z.ZodNumber) {
|
|
51
|
+
return items.map((v) => Number(v));
|
|
52
|
+
}
|
|
53
|
+
return items;
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
// Handle number types
|
|
58
|
+
if (field instanceof z.ZodNumber) {
|
|
59
|
+
return Number(value);
|
|
60
|
+
}
|
|
61
|
+
// Handle boolean types - support string "true"/"false"
|
|
62
|
+
if (field instanceof z.ZodBoolean) {
|
|
63
|
+
if (typeof value === 'string') {
|
|
64
|
+
return value.toLowerCase() === 'true';
|
|
65
|
+
}
|
|
66
|
+
return value === true;
|
|
67
|
+
}
|
|
68
|
+
// Handle union types - try to convert to number if the union includes a number type
|
|
69
|
+
if (field instanceof z.ZodUnion) {
|
|
70
|
+
if (unionContainsNumber(field)) {
|
|
71
|
+
// If the value looks like a number, convert it
|
|
72
|
+
const numValue = Number(value);
|
|
73
|
+
if (!isNaN(numValue) && typeof value === 'string' && /^\d+$/.test(value)) {
|
|
74
|
+
return numValue;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Otherwise return as-is (likely a literal string like 'latest')
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
// Default to string
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extract description from Zod schema field
|
|
85
|
+
*/
|
|
86
|
+
function getFieldDescription(field) {
|
|
87
|
+
const description = field.description;
|
|
88
|
+
return description || 'No description available';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if a Zod field is optional
|
|
92
|
+
*/
|
|
93
|
+
function isOptionalField(field) {
|
|
94
|
+
return field instanceof z.ZodOptional || field.isOptional?.();
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Unwrap Zod wrappers (Optional, Default) to get the inner type
|
|
98
|
+
*/
|
|
99
|
+
function unwrapZodType(field) {
|
|
100
|
+
if (field instanceof z.ZodOptional) {
|
|
101
|
+
return unwrapZodType(field.unwrap());
|
|
102
|
+
}
|
|
103
|
+
if (field instanceof z.ZodDefault) {
|
|
104
|
+
return unwrapZodType(field._def.innerType);
|
|
105
|
+
}
|
|
106
|
+
return field;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if schema is a ZodUnion of ZodObjects
|
|
110
|
+
*/
|
|
111
|
+
function isSchemaUnion(schema) {
|
|
112
|
+
return schema instanceof z.ZodUnion;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Extract all unique fields from a schema (handles both ZodObject and ZodUnion)
|
|
116
|
+
* For unions, collects all fields from all options
|
|
117
|
+
* Returns a map of fieldName -> {field, isOptional}
|
|
118
|
+
*/
|
|
119
|
+
function extractSchemaFields(schema) {
|
|
120
|
+
const fields = new Map();
|
|
121
|
+
if (isSchemaUnion(schema)) {
|
|
122
|
+
// For unions, collect all fields from all options
|
|
123
|
+
// A field is required only if it's required in ALL options
|
|
124
|
+
const allOptions = schema.options;
|
|
125
|
+
// First pass: collect all unique field names
|
|
126
|
+
const allFieldNames = new Set();
|
|
127
|
+
for (const option of allOptions) {
|
|
128
|
+
for (const fieldName of Object.keys(option.shape)) {
|
|
129
|
+
allFieldNames.add(fieldName);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Second pass: for each field, determine if it's optional
|
|
133
|
+
// A field is required only if it exists and is required in ALL options
|
|
134
|
+
for (const fieldName of allFieldNames) {
|
|
135
|
+
let field;
|
|
136
|
+
let isOptionalInAnyOption = false;
|
|
137
|
+
let missingInSomeOption = false;
|
|
138
|
+
for (const option of allOptions) {
|
|
139
|
+
const optionField = option.shape[fieldName];
|
|
140
|
+
if (optionField === undefined) {
|
|
141
|
+
missingInSomeOption = true;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
field = optionField;
|
|
145
|
+
if (isOptionalField(optionField)) {
|
|
146
|
+
isOptionalInAnyOption = true;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (field) {
|
|
151
|
+
// Field is optional in CLI if it's optional in any option OR missing in some option
|
|
152
|
+
fields.set(fieldName, {
|
|
153
|
+
field,
|
|
154
|
+
isOptional: isOptionalInAnyOption || missingInSomeOption,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// Simple ZodObject - extract fields directly
|
|
161
|
+
const shape = schema.shape;
|
|
162
|
+
for (const [fieldName, field] of Object.entries(shape)) {
|
|
163
|
+
fields.set(fieldName, {
|
|
164
|
+
field: field,
|
|
165
|
+
isOptional: isOptionalField(field),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return fields;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create a CLI tool environment for executing tools
|
|
173
|
+
*/
|
|
174
|
+
async function createCliToolEnvironment(config) {
|
|
175
|
+
const { gameContract: gameContractAddress, chain, storageConfig } = config;
|
|
176
|
+
// Get clients
|
|
177
|
+
const clients = getClients({ chain, privateKey: config.privateKey });
|
|
178
|
+
// Initialize game contract
|
|
179
|
+
const gameContract = {
|
|
180
|
+
address: gameContractAddress,
|
|
181
|
+
abi: Abi_IOuterSpace,
|
|
182
|
+
};
|
|
183
|
+
// Initialize SpaceInfo
|
|
184
|
+
const { spaceInfo, contractConfig } = await createSpaceInfo(clients, gameContract);
|
|
185
|
+
// Initialize storage
|
|
186
|
+
const storage = new JsonFleetStorage(storageConfig.dataDir || './data');
|
|
187
|
+
// Initialize managers
|
|
188
|
+
const fleetManager = new FleetManager(clients, gameContract, spaceInfo, contractConfig, storage);
|
|
189
|
+
const planetManager = new PlanetManager(clients, gameContract, spaceInfo, contractConfig, storage);
|
|
190
|
+
return {
|
|
191
|
+
fleetManager,
|
|
192
|
+
planetManager,
|
|
193
|
+
sendStatus: async (message) => {
|
|
194
|
+
console.log(`[Status] ${message}`);
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Parse and validate parameters against Zod schema
|
|
200
|
+
*/
|
|
201
|
+
async function parseAndValidateParams(schema, options) {
|
|
202
|
+
try {
|
|
203
|
+
return await schema.parseAsync(options);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
if (error instanceof z.ZodError) {
|
|
207
|
+
console.error('Parameter validation error:');
|
|
208
|
+
for (const err of error.issues) {
|
|
209
|
+
console.error(` - ${err.path.join('.')}: ${err.message}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Replacer function for JSON.stringify to handle BigInt values
|
|
217
|
+
*/
|
|
218
|
+
function bigIntReplacer(_key, value) {
|
|
219
|
+
if (typeof value === 'bigint') {
|
|
220
|
+
return value.toString();
|
|
221
|
+
}
|
|
222
|
+
return value;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Format tool result for CLI output
|
|
226
|
+
*/
|
|
227
|
+
function formatToolResult(result) {
|
|
228
|
+
if (result.success) {
|
|
229
|
+
console.log(JSON.stringify(result.result, bigIntReplacer, 2));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.error('Error:', result.error);
|
|
233
|
+
if (result.stack) {
|
|
234
|
+
console.error('Stack:', result.stack);
|
|
235
|
+
}
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Generate a single tool command from tool definition
|
|
241
|
+
*/
|
|
242
|
+
export function generateToolCommand(program, toolName, tool) {
|
|
243
|
+
// Extract fields from schema (handles both ZodObject and ZodUnion)
|
|
244
|
+
const schemaFields = extractSchemaFields(tool.schema);
|
|
245
|
+
// Create the command
|
|
246
|
+
const cmd = program.command(toolName).description(tool.description);
|
|
247
|
+
// Add options for each schema field
|
|
248
|
+
for (const [fieldName, { field, isOptional }] of schemaFields) {
|
|
249
|
+
// Unwrap optional/default wrappers to get the actual type
|
|
250
|
+
const actualField = unwrapZodType(field);
|
|
251
|
+
const optionDef = zodFieldToOption(fieldName, actualField);
|
|
252
|
+
const description = getFieldDescription(actualField);
|
|
253
|
+
// Add the option
|
|
254
|
+
if (isOptional) {
|
|
255
|
+
cmd.option(optionDef, description);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
cmd.requiredOption(optionDef, description);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Add --rpc-url option (can override global)
|
|
262
|
+
cmd.option('--rpc-url <url>', 'RPC URL for the Ethereum network (overrides global)');
|
|
263
|
+
// Add --game-contract option (can override global)
|
|
264
|
+
cmd.option('--game-contract <address>', 'contract address (overrides global)');
|
|
265
|
+
// Add --storage option (can override global)
|
|
266
|
+
cmd.option('--storage <type>', 'storage type (overrides global)');
|
|
267
|
+
// Add --storage-path option (can override global)
|
|
268
|
+
cmd.option('--storage-path <type>', 'storage type (overrides global)');
|
|
269
|
+
cmd.action(async (options) => {
|
|
270
|
+
try {
|
|
271
|
+
const globalOptions = program.opts();
|
|
272
|
+
// Get global options
|
|
273
|
+
const rpcUrl = options.rpcUrl || globalOptions.rpcUrl || process.env.RPC_URL;
|
|
274
|
+
const gameContract = options.gameContract || globalOptions.gameContract || process.env.GAME_CONTRACT;
|
|
275
|
+
const storageType = options.storage || globalOptions.storage || process.env.STORAGE_TYPE || 'json';
|
|
276
|
+
const storagePath = options.storagePath || globalOptions.storagePath || process.env.STORAGE_PATH || './data';
|
|
277
|
+
// Validate required options
|
|
278
|
+
if (!rpcUrl) {
|
|
279
|
+
console.error('Error: --rpc-url option or RPC_URL environment variable is required');
|
|
280
|
+
process.exit(1);
|
|
281
|
+
}
|
|
282
|
+
if (!gameContract) {
|
|
283
|
+
console.error('Error: --game-contract option or GAME_CONTRACT environment variable is required');
|
|
284
|
+
process.exit(1);
|
|
285
|
+
}
|
|
286
|
+
const privateKey = process.env.PRIVATE_KEY;
|
|
287
|
+
// Validate PRIVATE_KEY format if provided
|
|
288
|
+
if (privateKey && !privateKey.startsWith('0x')) {
|
|
289
|
+
console.error('Error: PRIVATE_KEY must start with 0x');
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
// Parse and validate parameters against schema
|
|
293
|
+
const params = {};
|
|
294
|
+
for (const [fieldName, { field }] of schemaFields) {
|
|
295
|
+
// Unwrap optional/default wrappers to get the actual type for parsing
|
|
296
|
+
const actualField = unwrapZodType(field);
|
|
297
|
+
const value = options[fieldName];
|
|
298
|
+
if (value !== undefined) {
|
|
299
|
+
params[fieldName] = parseOptionValue(actualField, value);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Validate against schema
|
|
303
|
+
const validatedParams = await parseAndValidateParams(tool.schema, params);
|
|
304
|
+
// Get chain
|
|
305
|
+
const chain = await getChain(rpcUrl);
|
|
306
|
+
// Create environment and execute
|
|
307
|
+
const env = await createCliToolEnvironment({
|
|
308
|
+
chain,
|
|
309
|
+
privateKey: privateKey,
|
|
310
|
+
gameContract: gameContract,
|
|
311
|
+
storageConfig: {
|
|
312
|
+
type: storageType,
|
|
313
|
+
dataDir: storagePath,
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
const result = await tool.execute(env, validatedParams);
|
|
317
|
+
formatToolResult(result);
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
if (error instanceof Error) {
|
|
321
|
+
console.error('Error:', error.message);
|
|
322
|
+
if (error.stack) {
|
|
323
|
+
console.error('Stack:', error.stack);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
console.error('Error:', String(error));
|
|
328
|
+
}
|
|
329
|
+
process.exit(1);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Register all tool commands from a tools object
|
|
335
|
+
*/
|
|
336
|
+
export function registerAllToolCommands(program, tools) {
|
|
337
|
+
for (const [toolName, tool] of Object.entries(tools)) {
|
|
338
|
+
// Skip the file that's not a tool
|
|
339
|
+
if (toolName === 'default')
|
|
340
|
+
continue;
|
|
341
|
+
// Keep snake_case for CLI command names (1:1 mapping with tool names)
|
|
342
|
+
generateToolCommand(program, toolName, tool);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=cli-tool-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-tool-generator.js","sourceRoot":"","sources":["../../src/tool-handling/cli-tool-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { Tool } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Factory that create the Environment
|
|
6
|
+
* @template TEnv - Environment type passed to tools
|
|
7
|
+
*/
|
|
8
|
+
export type EnvFactory<TEnv extends Record<string, any>> = () => Promise<TEnv> | TEnv;
|
|
9
|
+
/**
|
|
10
|
+
* Generate a single tool command from tool definition
|
|
11
|
+
* @template TEnv - Environment type passed to tools
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateToolCommand<TEnv extends Record<string, any>>(program: Command, toolName: string, tool: Tool<z.ZodObject<any>, TEnv>, envFactory: EnvFactory<TEnv>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Register all tool commands from a tools object
|
|
16
|
+
* @template TEnv - Environment type passed to tools
|
|
17
|
+
*/
|
|
18
|
+
export declare function registerAllToolCommands<TEnv extends Record<string, any>>(program: Command, tools: Record<string, Tool<any, TEnv>>, envFactory: EnvFactory<TEnv>): void;
|
|
19
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/tool-handling/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,IAAI,EAAa,MAAM,YAAY,CAAC;AAGjD;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAidtF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAClC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,GAC1B,IAAI,CAyDN;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvE,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EACtC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,GAC1B,IAAI,CAQN"}
|