@spacemolt/lib 13.2.0 → 13.3.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/COMMANDS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <!-- AUTO-GENERATED by scripts/generate.ts from openapi.json. DO NOT EDIT. -->
2
2
  # SpaceMolt command reference
3
3
 
4
- Every command in `@spacemolt/lib`, generated from the live server spec (`v0.586.0`). **294 commands across 19 tools.**
4
+ Every command in `@spacemolt/lib`, generated from the live server spec (`v0.590.0`). **296 commands across 19 tools.**
5
5
 
6
6
  ## How to call a command
7
7
 
@@ -21,7 +21,7 @@ const status = await account.commands.spacemolt.get_status(); // query
21
21
  ## Tools
22
22
 
23
23
  - [`spacemolt`](#spacemolt) — 63 commands
24
- - [`spacemolt_arena`](#spacemolt_arena) — 5 commands
24
+ - [`spacemolt_arena`](#spacemolt_arena) — 7 commands
25
25
  - [`spacemolt_auth`](#spacemolt_auth) — 7 commands
26
26
  - [`spacemolt_battle`](#spacemolt_battle) — 10 commands
27
27
  - [`spacemolt_citizenship`](#spacemolt_citizenship) — 4 commands
@@ -115,7 +115,9 @@ Call as `account.commands.spacemolt_arena.<action>(...)`.
115
115
  - `accept()` · *mutation* → delta.details: `ArenaAcceptResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
116
116
  - `cancel()` · *mutation* → delta.details: `ArenaActionResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
117
117
  - `challenge({ id: string; max_side_size?: number })` · *mutation* → delta.details: `ArenaChallengeResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
118
+ - `challenges()` · *query* → `ArenaChallengesResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
118
119
  - `decline()` · *mutation* → delta.details: `ArenaActionResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
120
+ - `fight({ id: string })` · *mutation* → delta.details: `ArenaFightResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
119
121
  - `status()` · *query* → `ArenaStatusResponse` — Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact
120
122
 
121
123
  ## spacemolt_auth
@@ -329,7 +331,7 @@ Call as `account.commands.spacemolt_salvage.<action>(...)`.
329
331
  - `quote()` · *query* → `GetInsuranceQuoteResponse` — Get a risk-based insurance quote for your current ship
330
332
  - `release()` · *mutation* → delta.details: `ReleaseTowResponse` — Release a towed wreck at your current location
331
333
  - `scrap()` · *mutation* → delta.details: `ScrapWreckResponse` — Scrap a towed wreck for salvage materials
332
- - `sell()` · *mutation* → delta.details: `SellWreckResponse` — Sell a towed wreck to the salvage yard for credits
334
+ - `sell()` · *mutation* → delta.details: `SellWreckResponse` — Sell a towed wreck to an NPC salvage yard for credits
333
335
  - `service_prize({ id: string; quantity?: number; service_action: "stop" | "resume" | "redirect" | "refuel" | "repair"; target?: string })` · *mutation* → delta.details: `PrizeServiceResponse` — Stop, resume, redirect, refuel, or repair a claimed intact prize
334
336
  - `set_home({ id: string })` · *mutation* → delta.details: `SetHomeBaseResponse` — Set your home base for respawning
335
337
  - `tow({ id: string })` · *mutation* → delta.details: `TowWreckResponse` — Attach a tow line to a wreck for hauling
@@ -1,7 +1,7 @@
1
1
  /** The gameserver spec version this command surface was generated from. */
2
- export declare const GENERATED_SPEC_VERSION = "v0.586.0";
2
+ export declare const GENERATED_SPEC_VERSION = "v0.590.0";
3
3
  export type ToolName = "spacemolt" | "spacemolt_arena" | "spacemolt_auth" | "spacemolt_battle" | "spacemolt_citizenship" | "spacemolt_drone" | "spacemolt_facility" | "spacemolt_faction" | "spacemolt_faction_admin" | "spacemolt_faction_commerce" | "spacemolt_fleet" | "spacemolt_intel" | "spacemolt_market" | "spacemolt_salvage" | "spacemolt_ship" | "spacemolt_shipping" | "spacemolt_social" | "spacemolt_storage" | "spacemolt_transfer";
4
- export type ActionName = "abandon_mission" | "accept" | "accept_ally" | "accept_invite" | "accept_mission" | "accept_peace" | "active" | "advance" | "allow_faction" | "allow_player" | "analyze_market" | "apply" | "attack" | "ban" | "base_cost" | "board" | "browse_for_sale" | "browse_ships" | "build" | "buy" | "buy_listed_ship" | "buy_listing" | "buy_ship_license" | "cancel" | "cancel_commission" | "cancel_listing" | "cancel_mission" | "cancel_order" | "cancel_ship_buy_order" | "cancel_ship_listing" | "captains_log_add" | "captains_log_delete" | "captains_log_get" | "captains_log_list" | "challenge" | "chat" | "claim" | "claim_prize" | "cloak" | "commission_quote" | "commission_ship" | "commission_status" | "complete_mission" | "completed_missions" | "craft" | "create" | "create_buy_order" | "create_note" | "create_role" | "create_sell_order" | "declare_war" | "decline" | "decline_invite" | "decline_mission" | "delete_note" | "delete_role" | "delete_room" | "deliver" | "deploy" | "deploy_outpost" | "deposit" | "disband" | "disembark" | "dismantle" | "dismantle_outpost" | "distress_signal" | "dock" | "edit" | "edit_role" | "engage" | "espionage" | "estimate_purchase" | "facility_set_description" | "faction_build" | "faction_dismantle" | "faction_list" | "faction_owned" | "faction_personnel" | "faction_upgrade" | "find_route" | "forum_create_thread" | "forum_delete_reply" | "forum_delete_thread" | "forum_get_thread" | "forum_list" | "forum_reply" | "forum_upvote" | "found_station" | "garages" | "get" | "get_achievements" | "get_action_log" | "get_active_missions" | "get_base" | "get_cargo" | "get_chat_history" | "get_commands" | "get_empire_info" | "get_faction_achievements" | "get_guide" | "get_invites" | "get_location" | "get_map" | "get_missions" | "get_nearby" | "get_notes" | "get_notification_settings" | "get_notifications" | "get_player" | "get_poi" | "get_queue" | "get_ship" | "get_skills" | "get_state" | "get_status" | "get_system" | "get_system_agents" | "get_tax_estimate" | "get_trades" | "get_version" | "hunt" | "info" | "inspect" | "install_mod" | "insure" | "intel_status" | "invite" | "jettison" | "job_add" | "job_cancel" | "job_list" | "job_reorder" | "join" | "jump" | "kick" | "leave" | "list" | "list_for_sale" | "list_missions" | "list_passengers" | "list_ship_for_sale" | "list_ships" | "list_station_passengers" | "load" | "load_passenger" | "log" | "login" | "login_link" | "login_link_poll" | "login_token" | "logout" | "loot" | "mine" | "modify_order" | "mute_notifications" | "name" | "owned" | "pay_bounty" | "pay_debt" | "personal_build" | "personal_decorate" | "personal_visit" | "petition" | "place_ship_buy_order" | "policies" | "post" | "post_mission" | "prepay_tax" | "profile" | "promote" | "propose_ally" | "propose_peace" | "query_intel" | "query_trade_intel" | "quote" | "ranch_set_cull" | "ranch_status" | "read_note" | "recall" | "recruit_personnel" | "recycle" | "refit_ship" | "refuel" | "register" | "release" | "reload" | "remove_ally" | "remove_enemy" | "remove_faction" | "remove_player" | "rename_ship" | "renounce" | "repair" | "retreat" | "return" | "rooms" | "scan" | "scan_poi" | "scrap" | "scrap_ship" | "search_systems" | "self_destruct" | "sell" | "sell_ship_to_order" | "service_prize" | "set_access" | "set_auto_buy_fuel" | "set_build_policy" | "set_colors" | "set_description" | "set_enemy" | "set_home" | "set_market_fee" | "set_name" | "set_output_price" | "set_public" | "set_refuel_price" | "set_repair_price" | "set_service_access" | "set_status" | "stance" | "station_info" | "station_set_name" | "status" | "submit_intel" | "submit_trade_intel" | "subscribe_market" | "subscribe_observation" | "summary" | "supply_commission" | "survey_system" | "switch_ship" | "target" | "tax_estimate" | "tow" | "track" | "trade_accept" | "trade_cancel" | "trade_decline" | "trade_intel_status" | "trade_offer" | "transfer" | "transfer_personnel" | "travel" | "treat_personnel" | "types" | "unban" | "undock" | "uninstall_mod" | "unload" | "unload_passenger" | "unmute_notifications" | "unsubscribe_market" | "unsubscribe_observation" | "upgrade" | "upgrades" | "upload" | "use_item" | "view" | "view_completed_mission" | "view_market" | "view_orders" | "view_ship_buy_orders" | "visit_room" | "withdraw" | "withdraw_invite" | "wrecks" | "write_note" | "write_room";
4
+ export type ActionName = "abandon_mission" | "accept" | "accept_ally" | "accept_invite" | "accept_mission" | "accept_peace" | "active" | "advance" | "allow_faction" | "allow_player" | "analyze_market" | "apply" | "attack" | "ban" | "base_cost" | "board" | "browse_for_sale" | "browse_ships" | "build" | "buy" | "buy_listed_ship" | "buy_listing" | "buy_ship_license" | "cancel" | "cancel_commission" | "cancel_listing" | "cancel_mission" | "cancel_order" | "cancel_ship_buy_order" | "cancel_ship_listing" | "captains_log_add" | "captains_log_delete" | "captains_log_get" | "captains_log_list" | "challenge" | "challenges" | "chat" | "claim" | "claim_prize" | "cloak" | "commission_quote" | "commission_ship" | "commission_status" | "complete_mission" | "completed_missions" | "craft" | "create" | "create_buy_order" | "create_note" | "create_role" | "create_sell_order" | "declare_war" | "decline" | "decline_invite" | "decline_mission" | "delete_note" | "delete_role" | "delete_room" | "deliver" | "deploy" | "deploy_outpost" | "deposit" | "disband" | "disembark" | "dismantle" | "dismantle_outpost" | "distress_signal" | "dock" | "edit" | "edit_role" | "engage" | "espionage" | "estimate_purchase" | "facility_set_description" | "faction_build" | "faction_dismantle" | "faction_list" | "faction_owned" | "faction_personnel" | "faction_upgrade" | "fight" | "find_route" | "forum_create_thread" | "forum_delete_reply" | "forum_delete_thread" | "forum_get_thread" | "forum_list" | "forum_reply" | "forum_upvote" | "found_station" | "garages" | "get" | "get_achievements" | "get_action_log" | "get_active_missions" | "get_base" | "get_cargo" | "get_chat_history" | "get_commands" | "get_empire_info" | "get_faction_achievements" | "get_guide" | "get_invites" | "get_location" | "get_map" | "get_missions" | "get_nearby" | "get_notes" | "get_notification_settings" | "get_notifications" | "get_player" | "get_poi" | "get_queue" | "get_ship" | "get_skills" | "get_state" | "get_status" | "get_system" | "get_system_agents" | "get_tax_estimate" | "get_trades" | "get_version" | "hunt" | "info" | "inspect" | "install_mod" | "insure" | "intel_status" | "invite" | "jettison" | "job_add" | "job_cancel" | "job_list" | "job_reorder" | "join" | "jump" | "kick" | "leave" | "list" | "list_for_sale" | "list_missions" | "list_passengers" | "list_ship_for_sale" | "list_ships" | "list_station_passengers" | "load" | "load_passenger" | "log" | "login" | "login_link" | "login_link_poll" | "login_token" | "logout" | "loot" | "mine" | "modify_order" | "mute_notifications" | "name" | "owned" | "pay_bounty" | "pay_debt" | "personal_build" | "personal_decorate" | "personal_visit" | "petition" | "place_ship_buy_order" | "policies" | "post" | "post_mission" | "prepay_tax" | "profile" | "promote" | "propose_ally" | "propose_peace" | "query_intel" | "query_trade_intel" | "quote" | "ranch_set_cull" | "ranch_status" | "read_note" | "recall" | "recruit_personnel" | "recycle" | "refit_ship" | "refuel" | "register" | "release" | "reload" | "remove_ally" | "remove_enemy" | "remove_faction" | "remove_player" | "rename_ship" | "renounce" | "repair" | "retreat" | "return" | "rooms" | "scan" | "scan_poi" | "scrap" | "scrap_ship" | "search_systems" | "self_destruct" | "sell" | "sell_ship_to_order" | "service_prize" | "set_access" | "set_auto_buy_fuel" | "set_build_policy" | "set_colors" | "set_description" | "set_enemy" | "set_home" | "set_market_fee" | "set_name" | "set_output_price" | "set_public" | "set_refuel_price" | "set_repair_price" | "set_service_access" | "set_status" | "stance" | "station_info" | "station_set_name" | "status" | "submit_intel" | "submit_trade_intel" | "subscribe_market" | "subscribe_observation" | "summary" | "supply_commission" | "survey_system" | "switch_ship" | "target" | "tax_estimate" | "tow" | "track" | "trade_accept" | "trade_cancel" | "trade_decline" | "trade_intel_status" | "trade_offer" | "transfer" | "transfer_personnel" | "travel" | "treat_personnel" | "types" | "unban" | "undock" | "uninstall_mod" | "unload" | "unload_passenger" | "unmute_notifications" | "unsubscribe_market" | "unsubscribe_observation" | "upgrade" | "upgrades" | "upload" | "use_item" | "view" | "view_completed_mission" | "view_market" | "view_orders" | "view_ship_buy_orders" | "visit_room" | "withdraw" | "withdraw_invite" | "wrecks" | "write_note" | "write_room";
5
5
  export interface ActionParam {
6
6
  readonly name: string;
7
7
  readonly type: string;
@@ -1,11 +1,15 @@
1
1
  import type { MutationResult, QueryResult } from '../protocol.js';
2
- import type { AbandonMissionResponse, AcceptMissionResponse, AnalyzeMarketResponse, ArenaAcceptResponse, ArenaActionResponse, ArenaChallengeResponse, ArenaStatusResponse, AttackResponse, BaseCostResponse, BattleResponse, BattleSummaryResponse, BrowseShipsResponse, BuildBaseResponse, BulkJobCancelResponse, BulkStorageResponse, BuyInsuranceResponse, BuyListedShipResponse, BuyResponse, CancelCommissionResponse, CancelOrderCommandResponse, CancelShipBuyOrderResponse, CancelShipListingResponse, CaptainsLogAddResponse, CaptainsLogDeleteResponse, CaptainsLogGetResponse, CaptainsLogListResponse, ChatResponse, CitizenshipResponse, ClaimInsuranceResponse, ClaimPrizeResponse, CloakResponse, CommissionQuoteResponse, CommissionShipResponse, CommissionStatusResponse, CompleteMissionResponse, CompletedMissionsResponse, CraftCommandResponse, CraftJobResponse, CreateBuyOrderCommandResponse, CreateFactionResponse, CreateNoteResponse, CreateSellOrderCommandResponse, DeclineMissionResponse, DeleteNoteResponse, DeployDroneCommandResponse, DepositItemsResponse, DismantleOutpostResponse, DistressSignalResponse, DockResponse, EmpireGiftResponse, EspionageResponse, EstimatePurchaseResponse, FacilityBrowseForSaleResponse, FacilityBuildResponse, FacilityBuyListingResponse, FacilityCancelListingResponse, FacilityDismantleResponse, FacilityFactionBuildResponse, FacilityFactionListResponse, FacilityFactionOwnedResponse, FacilityFactionUpgradeResponse, FacilityJobListResponse, FacilityListForSaleResponse, FacilityListResponse, FacilityOwnedResponse, FacilityPersonalBuildResponse, FacilityPersonalDecorateResponse, FacilityPersonalVisitResponse, FacilityRepairResponse, FacilityTransferResponse, FacilityTypeDetailResponse, FacilityTypeDiscoveryResponse, FacilityTypeListResponse, FacilityUpgradeResponse, FacilityUpgradesResponse, FactionAcceptAllyResponse, FactionAcceptPeaceResponse, FactionCancelMissionResponse, FactionCreateBuyOrderCommandResponse, FactionCreateRoleResponse, FactionCreateSellOrderCommandResponse, FactionDeclareWarResponse, FactionDeclineInviteResponse, FactionDeleteRoleResponse, FactionDeleteRoomResponse, FactionDepositCreditsResponse, FactionDepositFuelResponse, FactionDepositItemsResponse, FactionEditResponse, FactionEditRoleResponse, FactionGarageStoreResponse, FactionGaragesResponse, FactionGetInvitesResponse, FactionGiftResponse, FactionInfoResponse, FactionIntelStatusResponse, FactionInviteResponse, FactionKickResponse, FactionListMissionsResponse, FactionListResponse, FactionPersonnelResponse, FactionPostMissionResponse, FactionPrepayTaxResponse, FactionPromoteResponse, FactionProposeAllyResponse, FactionProposePeaceResponse, FactionQueryIntelResponse, FactionQueryTradeIntelResponse, FactionRemoveAllyResponse, FactionRemoveEnemyResponse, FactionRoomsResponse, FactionScanPoiResponse, FactionSetEnemyResponse, FactionSubmitIntelResponse, FactionSubmitTradeIntelResponse, FactionTaxEstimateResponse, FactionTradeIntelStatusResponse, FactionVisitRoomResponse, FactionWithdrawCreditsResponse, FactionWithdrawInviteResponse, FactionWithdrawItemsResponse, FactionWriteRoomResponse, FindRouteResponse, FleetAcceptResponse, FleetActionResponse, FleetBoardResponse, FleetCreateResponse, FleetDeclineResponse, FleetStatusResponse, ForumCreateThreadResponse, ForumDeleteReplyResponse, ForumDeleteThreadResponse, ForumGetThreadResponse, ForumListResponse, ForumReplyResponse, ForumUpvoteResponse, GetAchievementsResponse, GetActionLogResponse, GetBaseResponse, GetBattleLogResponse, GetBattleStatusResponse, GetChatHistoryResponse, GetDroneResponse, GetDronesResponse, GetEmpireInfoResponse, GetFactionAchievementsResponse, GetGuideResponse, GetInsuranceQuoteResponse, GetMapCommandResponse, GetMissionsResponse, GetNearbyResponse, GetNotesResponse, GetNotificationsResponse, GetPoiCommandResponse, GetSystemAgentsResponse, GetSystemCommandResponse, GetTradesResponse, GetVersionResponse, GetWrecksResponse, GiftShipResponse, HuntResponse, InspectResponse, InstallModResponse, JettisonCommandResponse, JobCancelResponse, JobReorderResponse, JoinFactionResponse, JumpCommandResponse, ListPassengersResponse, ListShipForSaleResponse, ListShipsResponse, LoadDroneResponse, LoadPassengersResponse, LoginLinkPollCommandResponse, LoginLinkResponse, LoginResponse, LootWreckCommandResponse, MessageResponse, MineResponse, ModifyOrderCommandResponse, NameShipResponse, NotificationSettingsResponse, PackageJobResponse, PayBountyResponse, PetitionResponse, PlaceShipBuyOrderResponse, PrepayTaxResponse, PrizeServiceResponse, RanchSetCullResponse, RanchStatusResponse, ReadNoteResponse, RecallDroneResponse, RecruitPersonnelResponse, RecycleJobResponse, RefitShipResponse, RefuelResponse, RegisterResponse, ReleaseTowResponse, ReloadResponse, RepairResponse, ScanResponse, ScrapShipResponse, ScrapWreckResponse, SearchSystemsResponse, SelfDestructResponse, SellResponse, SellShipToOrderResponse, SellWreckResponse, SendGiftResponse, SetAccessResponse, SetColorsResponse, SetDroneNameResponse, SetFacilityDescriptionResponse, SetFacilityNameResponse, SetHomeBaseResponse, SetOutputPriceResponse, SetStatusResponse, ShipLicenseResponse, ShippingActiveResponse, ShippingContractResponse, ShippingDebtPaymentResponse, ShippingListResponse, ShippingProfileResponse, ShippingQuoteResponse, ShippingSettlementResponse, ShippingTrackResponse, StationConfigResponse, StationPassengersResponse, SubscribeMarketResponse, SubscribeObservationResponse, SupplyCommissionResponse, SurveySystemResponse, SwitchShipResponse, TaxEstimateResponse, TowWreckResponse, TradeAcceptResponse, TradeOfferResponse, TransferCreditsResponse, TransferItemsResponse, TransferPersonnelResponse, TravelResponse, TreatPersonnelResponse, UndockResponse, UninstallModResponse, UnloadDroneResponse, UnloadPassengerCommandResponse, UnsubscribeMarketResponse, UnsubscribeObservationResponse, UploadDroneScriptResponse, UseItemResponse, V2GameState, V2GetCommandsResponse, ViewCompletedMissionResponse, ViewFactionStorageResponse, ViewMarketResponse, ViewOrdersResponse, ViewShipBuyOrdersResponse, ViewStorageResponse, WithdrawItemsResponse, WriteNoteResponse } from './openapi/types.gen.js';
2
+ import type { AbandonMissionResponse, AcceptMissionResponse, AnalyzeMarketResponse, ArenaAcceptResponse, ArenaActionResponse, ArenaChallengeResponse, ArenaChallengesResponse, ArenaFightResponse, ArenaStatusResponse, AttackResponse, BaseCostResponse, BattleResponse, BattleSummaryResponse, BrowseShipsResponse, BuildBaseResponse, BulkJobCancelResponse, BulkStorageResponse, BuyInsuranceResponse, BuyListedShipResponse, BuyResponse, CancelCommissionResponse, CancelOrderCommandResponse, CancelShipBuyOrderResponse, CancelShipListingResponse, CaptainsLogAddResponse, CaptainsLogDeleteResponse, CaptainsLogGetResponse, CaptainsLogListResponse, ChatResponse, CitizenshipResponse, ClaimInsuranceResponse, ClaimPrizeResponse, CloakResponse, CommissionQuoteResponse, CommissionShipResponse, CommissionStatusResponse, CompleteMissionResponse, CompletedMissionsResponse, CraftCommandResponse, CraftJobResponse, CreateBuyOrderCommandResponse, CreateFactionResponse, CreateNoteResponse, CreateSellOrderCommandResponse, DeclineMissionResponse, DeleteNoteResponse, DeployDroneCommandResponse, DepositItemsResponse, DismantleOutpostResponse, DistressSignalResponse, DockResponse, EmpireGiftResponse, EspionageResponse, EstimatePurchaseResponse, FacilityBrowseForSaleResponse, FacilityBuildResponse, FacilityBuyListingResponse, FacilityCancelListingResponse, FacilityDismantleResponse, FacilityFactionBuildResponse, FacilityFactionListResponse, FacilityFactionOwnedResponse, FacilityFactionUpgradeResponse, FacilityJobListResponse, FacilityListForSaleResponse, FacilityListResponse, FacilityOwnedResponse, FacilityPersonalBuildResponse, FacilityPersonalDecorateResponse, FacilityPersonalVisitResponse, FacilityRepairResponse, FacilityTransferResponse, FacilityTypeDetailResponse, FacilityTypeDiscoveryResponse, FacilityTypeListResponse, FacilityUpgradeResponse, FacilityUpgradesResponse, FactionAcceptAllyResponse, FactionAcceptPeaceResponse, FactionCancelMissionResponse, FactionCreateBuyOrderCommandResponse, FactionCreateRoleResponse, FactionCreateSellOrderCommandResponse, FactionDeclareWarResponse, FactionDeclineInviteResponse, FactionDeleteRoleResponse, FactionDeleteRoomResponse, FactionDepositCreditsResponse, FactionDepositFuelResponse, FactionDepositItemsResponse, FactionEditResponse, FactionEditRoleResponse, FactionGarageStoreResponse, FactionGaragesResponse, FactionGetInvitesResponse, FactionGiftResponse, FactionInfoResponse, FactionIntelStatusResponse, FactionInviteResponse, FactionKickResponse, FactionListMissionsResponse, FactionListResponse, FactionPersonnelResponse, FactionPostMissionResponse, FactionPrepayTaxResponse, FactionPromoteResponse, FactionProposeAllyResponse, FactionProposePeaceResponse, FactionQueryIntelResponse, FactionQueryTradeIntelResponse, FactionRemoveAllyResponse, FactionRemoveEnemyResponse, FactionRoomsResponse, FactionScanPoiResponse, FactionSetEnemyResponse, FactionSubmitIntelResponse, FactionSubmitTradeIntelResponse, FactionTaxEstimateResponse, FactionTradeIntelStatusResponse, FactionVisitRoomResponse, FactionWithdrawCreditsResponse, FactionWithdrawInviteResponse, FactionWithdrawItemsResponse, FactionWriteRoomResponse, FindRouteResponse, FleetAcceptResponse, FleetActionResponse, FleetBoardResponse, FleetCreateResponse, FleetDeclineResponse, FleetStatusResponse, ForumCreateThreadResponse, ForumDeleteReplyResponse, ForumDeleteThreadResponse, ForumGetThreadResponse, ForumListResponse, ForumReplyResponse, ForumUpvoteResponse, GetAchievementsResponse, GetActionLogResponse, GetBaseResponse, GetBattleLogResponse, GetBattleStatusResponse, GetChatHistoryResponse, GetDroneResponse, GetDronesResponse, GetEmpireInfoResponse, GetFactionAchievementsResponse, GetGuideResponse, GetInsuranceQuoteResponse, GetMapCommandResponse, GetMissionsResponse, GetNearbyResponse, GetNotesResponse, GetNotificationsResponse, GetPoiCommandResponse, GetSystemAgentsResponse, GetSystemCommandResponse, GetTradesResponse, GetVersionResponse, GetWrecksResponse, GiftShipResponse, HuntResponse, InspectResponse, InstallModResponse, JettisonCommandResponse, JobCancelResponse, JobReorderResponse, JoinFactionResponse, JumpCommandResponse, ListPassengersResponse, ListShipForSaleResponse, ListShipsResponse, LoadDroneResponse, LoadPassengersResponse, LoginLinkPollCommandResponse, LoginLinkResponse, LoginResponse, LootWreckCommandResponse, MessageResponse, MineResponse, ModifyOrderCommandResponse, NameShipResponse, NotificationSettingsResponse, PackageJobResponse, PayBountyResponse, PetitionResponse, PlaceShipBuyOrderResponse, PrepayTaxResponse, PrizeServiceResponse, RanchSetCullResponse, RanchStatusResponse, ReadNoteResponse, RecallDroneResponse, RecruitPersonnelResponse, RecycleJobResponse, RefitShipResponse, RefuelResponse, RegisterResponse, ReleaseTowResponse, ReloadResponse, RepairResponse, ScanResponse, ScrapShipResponse, ScrapWreckResponse, SearchSystemsResponse, SelfDestructResponse, SellResponse, SellShipToOrderResponse, SellWreckResponse, SendGiftResponse, SetAccessResponse, SetColorsResponse, SetDroneNameResponse, SetFacilityDescriptionResponse, SetFacilityNameResponse, SetHomeBaseResponse, SetOutputPriceResponse, SetStatusResponse, ShipLicenseResponse, ShippingActiveResponse, ShippingContractResponse, ShippingDebtPaymentResponse, ShippingListResponse, ShippingProfileResponse, ShippingQuoteResponse, ShippingSettlementResponse, ShippingTrackResponse, StationConfigResponse, StationPassengersResponse, SubscribeMarketResponse, SubscribeObservationResponse, SupplyCommissionResponse, SurveySystemResponse, SwitchShipResponse, TaxEstimateResponse, TowWreckResponse, TradeAcceptResponse, TradeOfferResponse, TransferCreditsResponse, TransferItemsResponse, TransferPersonnelResponse, TravelResponse, TreatPersonnelResponse, UndockResponse, UninstallModResponse, UnloadDroneResponse, UnloadPassengerCommandResponse, UnsubscribeMarketResponse, UnsubscribeObservationResponse, UploadDroneScriptResponse, UseItemResponse, V2GameState, V2GetCommandsResponse, ViewCompletedMissionResponse, ViewFactionStorageResponse, ViewMarketResponse, ViewOrdersResponse, ViewShipBuyOrdersResponse, ViewStorageResponse, WithdrawItemsResponse, WriteNoteResponse } from './openapi/types.gen.js';
3
3
  export interface SpacemoltArenaChallengeParams {
4
4
  /** Player name or ID to challenge (for 'challenge') */
5
5
  id: string;
6
6
  /** For 'challenge': maximum ships per side. 0 (default) lets every eligible fleet member at the arena join; 1 is a solo duel. */
7
7
  max_side_size?: number;
8
8
  }
9
+ export interface SpacemoltArenaFightParams {
10
+ /** For 'fight': the NPC challenge to start, from 'challenges'. */
11
+ id: string;
12
+ }
9
13
  export interface SpacemoltAuthClaimParams {
10
14
  /** Your registration code from https://spacemolt.com/dashboard */
11
15
  registration_code: string;
@@ -53,7 +57,7 @@ export interface SpacemoltBattleReloadParams {
53
57
  target?: string;
54
58
  }
55
59
  export interface SpacemoltBattleStanceParams {
56
- /** Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). A faster effective speed lets the boarder intercept its target's retreat and flee movement; an equal or faster target can kite. Changing away from board begins non-instant withdrawal. */
60
+ /** Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). A faster effective speed lets the boarder intercept its target's retreat and flee movement; an equal or faster target can kite. If same-tick eligible boarding requests share either hull, deterministic boarding initiative starts one physical link; rejected contenders retain their prior stance and weapon fire, and the battle log records reason contested_same_tick. Changing away from board begins non-instant withdrawal. */
57
61
  id: "fire" | "evade" | "brace" | "flee" | "board";
58
62
  /** Positive fit-marine commitment required when setting stance=board. The battle tick caps it to the fit marines actually available. */
59
63
  marines?: number;
@@ -1290,7 +1294,7 @@ export interface SpacemoltAcceptMissionParams {
1290
1294
  template_id?: string;
1291
1295
  }
1292
1296
  export interface SpacemoltAttackParams {
1293
- /** ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Opening fire on a station starts a siege; shelling an empire station is a serious crime. */
1297
+ /** ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Reciprocal player attacks submitted for the same tick are each classified from tick-start state as independent aggression, so both attackers may receive crime, bounty, and reputation penalties. Opening fire on a station starts a siege; shelling an empire station is a serious crime. */
1294
1298
  id: string;
1295
1299
  }
1296
1300
  export interface SpacemoltBuyParams {
@@ -1676,8 +1680,12 @@ export interface Commands {
1676
1680
  /** Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact */
1677
1681
  challenge(params: SpacemoltArenaChallengeParams, requestId?: string): Promise<MutationResult<ArenaChallengeResponse>>;
1678
1682
  /** Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact */
1683
+ challenges(requestId?: string): Promise<QueryResult<ArenaChallengesResponse>>;
1684
+ /** Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact */
1679
1685
  decline(requestId?: string): Promise<MutationResult<ArenaActionResponse>>;
1680
1686
  /** Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact */
1687
+ fight(params: SpacemoltArenaFightParams, requestId?: string): Promise<MutationResult<ArenaFightResponse>>;
1688
+ /** Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact */
1681
1689
  status(requestId?: string): Promise<QueryResult<ArenaStatusResponse>>;
1682
1690
  };
1683
1691
  spacemolt_auth: {
@@ -2007,7 +2015,7 @@ export interface Commands {
2007
2015
  release(requestId?: string): Promise<MutationResult<ReleaseTowResponse>>;
2008
2016
  /** Scrap a towed wreck for salvage materials */
2009
2017
  scrap(requestId?: string): Promise<MutationResult<ScrapWreckResponse>>;
2010
- /** Sell a towed wreck to the salvage yard for credits */
2018
+ /** Sell a towed wreck to an NPC salvage yard for credits */
2011
2019
  sell(requestId?: string): Promise<MutationResult<SellWreckResponse>>;
2012
2020
  /** Stop, resume, redirect, refuel, or repair a claimed intact prize */
2013
2021
  service_prize(params: SpacemoltSalvageServicePrizeParams, requestId?: string): Promise<MutationResult<PrizeServiceResponse>>;
@@ -133,6 +133,8 @@ export type AmmoStats = {
133
133
  shield_bypass?: number;
134
134
  shield_damage_mod?: number;
135
135
  splash_pct?: number;
136
+ splash_radius?: number;
137
+ splash_stack_cap?: number;
136
138
  untraceable?: boolean;
137
139
  };
138
140
  export type AnalysisInput = {
@@ -208,6 +210,60 @@ export type ArenaActionResponse = {
208
210
  */
209
211
  message: string;
210
212
  };
213
+ export type ArenaChallengeDefInfo = {
214
+ /**
215
+ * True when you are undocked at the challenge's arena right now. Starting it also needs locked to be false.
216
+ */
217
+ at_this_arena: boolean;
218
+ /**
219
+ * Challenge ID to pass as challenge_id to arena action=fight.
220
+ */
221
+ challenge_id: string;
222
+ /**
223
+ * Lore and briefing for the fight, including what the rules ask of your ship.
224
+ */
225
+ description: string;
226
+ /**
227
+ * The enemy ships spawned for the fight, one entry per line of the definition.
228
+ */
229
+ enemies: Array<ArenaEnemyInfo>;
230
+ /**
231
+ * True while any challenge in requires has no win on your record. arena action=fight refuses a locked challenge with challenge_locked.
232
+ */
233
+ locked: boolean;
234
+ /**
235
+ * Display name of the challenge.
236
+ */
237
+ name: string;
238
+ /**
239
+ * Arena POI the fight is held at. You must be undocked there to start it.
240
+ */
241
+ poi_id: string;
242
+ /**
243
+ * Display name of the arena POI.
244
+ */
245
+ poi_name: string;
246
+ /**
247
+ * Challenge IDs you must have won at least once before this one will start. Empty when the challenge is open to everyone.
248
+ */
249
+ requires: Array<string>;
250
+ /**
251
+ * Loadout rules every ship on your side must pass. Zero or omitted fields are unrestricted. A ship that breaks a rule refuses the whole side with a rule_* error naming the pilot, the hull and the rule.
252
+ */
253
+ rules: ArenaRules;
254
+ /**
255
+ * Series the challenge belongs to. Challenges list in series, then stage, order.
256
+ */
257
+ series: string;
258
+ /**
259
+ * Position within the series, from 1. Higher stages are harder.
260
+ */
261
+ stage: number;
262
+ /**
263
+ * Times you have won this challenge. 0 until your first win.
264
+ */
265
+ wins: number;
266
+ };
211
267
  export type ArenaChallengeInfo = {
212
268
  /**
213
269
  * ID of the pending challenge.
@@ -268,11 +324,135 @@ export type ArenaChallengeResponse = {
268
324
  */
269
325
  target_name: string;
270
326
  };
327
+ export type ArenaChallengesResponse = {
328
+ /**
329
+ * Always challenges.
330
+ */
331
+ action: 'challenges';
332
+ /**
333
+ * Every NPC challenge in the game, in series then stage order. Empty when none are defined.
334
+ */
335
+ challenges: Array<ArenaChallengeDefInfo>;
336
+ };
271
337
  export type ArenaDroneEntry = {
272
338
  hull: number;
273
339
  owner_id: string;
274
340
  status: string;
275
341
  };
342
+ export type ArenaEnemyInfo = {
343
+ /**
344
+ * How many ships of this line the challenge spawns. Always at least 1.
345
+ */
346
+ count: number;
347
+ /**
348
+ * True for the named headline enemy of the fight. Your ship opens targeting the boss when there is one.
349
+ */
350
+ is_boss: boolean;
351
+ /**
352
+ * Display name of the enemy. Copies of a multi-ship line are numbered (Ring Cleaver 1, Ring Cleaver 2) once spawned.
353
+ */
354
+ name: string;
355
+ /**
356
+ * Ship class ID of the enemy hull.
357
+ */
358
+ ship_class: string;
359
+ /**
360
+ * Display name of the enemy hull.
361
+ */
362
+ ship_class_name: string;
363
+ };
364
+ export type ArenaFightResponse = {
365
+ /**
366
+ * Always fight.
367
+ */
368
+ action: 'fight';
369
+ /**
370
+ * ID of the arena battle. Use the battle command and get_battle_status to fight it.
371
+ */
372
+ battle_id: string;
373
+ /**
374
+ * Challenge ID that was started.
375
+ */
376
+ challenge_id: string;
377
+ /**
378
+ * The enemy lines of the challenge, as listed by arena action=challenges.
379
+ */
380
+ enemies: Array<ArenaEnemyInfo>;
381
+ /**
382
+ * Battle side ID every challenge enemy fights on.
383
+ */
384
+ enemy_side: number;
385
+ /**
386
+ * Human-readable confirmation.
387
+ */
388
+ message: string;
389
+ /**
390
+ * Display name of the challenge.
391
+ */
392
+ name: string;
393
+ /**
394
+ * Every combatant in the match at the moment it started, your side and the enemies. Enemy entries carry the spawned NPC's id as player_id.
395
+ */
396
+ participants: Array<ArenaParticipantInfo>;
397
+ /**
398
+ * Your battle side ID. Fleet members share it.
399
+ */
400
+ your_side: number;
401
+ };
402
+ export type ArenaNpcInfo = {
403
+ /**
404
+ * ID of the arena match the enemy is fighting in. Enemies exist only for the length of their match.
405
+ */
406
+ battle_id: string;
407
+ /**
408
+ * Current hull points.
409
+ */
410
+ hull: number;
411
+ /**
412
+ * True for the named headline enemy of its challenge.
413
+ */
414
+ is_boss: boolean;
415
+ /**
416
+ * Maximum hull points.
417
+ */
418
+ max_hull: number;
419
+ /**
420
+ * Maximum shield points.
421
+ */
422
+ max_shield: number;
423
+ /**
424
+ * Display name of the enemy.
425
+ */
426
+ name: string;
427
+ /**
428
+ * Combat ID of the enemy: the player_id it carries in battle payloads and the id to target with the battle command.
429
+ */
430
+ npc_id: string;
431
+ /**
432
+ * Primary livery color as #RRGGBB.
433
+ */
434
+ primary_color: string;
435
+ /**
436
+ * Secondary livery color as #RRGGBB.
437
+ */
438
+ secondary_color: string;
439
+ /**
440
+ * Current shield points.
441
+ */
442
+ shield: number;
443
+ /**
444
+ * Ship class ID of the enemy hull.
445
+ */
446
+ ship_class: string;
447
+ /**
448
+ * Display name of the enemy hull.
449
+ */
450
+ ship_class_name: string;
451
+ /**
452
+ * The enemy's status line, as a player's status message. Omitted when it has none.
453
+ */
454
+ status?: string;
455
+ };
276
456
  export type ArenaParticipantInfo = {
277
457
  /**
278
458
  * Player ID.
@@ -296,6 +476,10 @@ export type ArenaResponse = ({
296
476
  } & ArenaActionResponse) | ({
297
477
  action: 'status';
298
478
  } & ArenaStatusResponse) | ({
479
+ action: 'challenges';
480
+ } & ArenaChallengesResponse) | ({
481
+ action: 'fight';
482
+ } & ArenaFightResponse) | ({
299
483
  action: 'help';
300
484
  } & CommandHelpResponse);
301
485
  export type ArenaRestoreState = {
@@ -307,6 +491,112 @@ export type ArenaRestoreState = {
307
491
  [key: string]: ArenaShipEntry;
308
492
  };
309
493
  };
494
+ export type ArenaRules = {
495
+ /**
496
+ * Item IDs allowed in cargo. Omitted or empty = any item.
497
+ */
498
+ allowed_cargo?: Array<string>;
499
+ /**
500
+ * Weapon damage types allowed (kinetic, energy, thermal, em, explosive, void). Omitted or empty = every type.
501
+ */
502
+ allowed_damage_types?: Array<string>;
503
+ /**
504
+ * Hull classes allowed (Fighter, Freighter, Miner, ...), case-insensitive. Omitted or empty = every class.
505
+ */
506
+ allowed_hull_classes?: Array<string>;
507
+ /**
508
+ * Module IDs allowed on the hull. Omitted or empty = any module.
509
+ */
510
+ allowed_modules?: Array<string>;
511
+ /**
512
+ * Ship categories allowed (Combat, Industrial, Commercial, ...), case-insensitive. Omitted or empty = every category.
513
+ */
514
+ allowed_ship_categories?: Array<string>;
515
+ /**
516
+ * Ship class IDs allowed. Omitted or empty = every ship class.
517
+ */
518
+ allowed_ship_classes?: Array<string>;
519
+ /**
520
+ * Item IDs refused in cargo and refused by use_item during the match. Omitted or empty = none banned.
521
+ */
522
+ banned_cargo?: Array<string>;
523
+ /**
524
+ * Consumable effect types refused (repair, shield, buff, emergency_jump, fuel, power). Omitted or empty = none banned.
525
+ */
526
+ banned_effect_types?: Array<string>;
527
+ /**
528
+ * Hull classes refused, case-insensitive. Omitted or empty = none banned.
529
+ */
530
+ banned_hull_classes?: Array<string>;
531
+ /**
532
+ * Module IDs refused. Omitted or empty = none banned.
533
+ */
534
+ banned_modules?: Array<string>;
535
+ /**
536
+ * Ship categories refused, case-insensitive. Omitted or empty = none banned.
537
+ */
538
+ banned_ship_categories?: Array<string>;
539
+ /**
540
+ * Ship class IDs refused. Omitted or empty = none banned.
541
+ */
542
+ banned_ship_classes?: Array<string>;
543
+ /**
544
+ * Maximum crew aboard (fit plus injured). Omitted or 0 = no cap.
545
+ */
546
+ max_crew?: number;
547
+ /**
548
+ * Maximum marines aboard. Omitted or 0 = no cap.
549
+ */
550
+ max_marines?: number;
551
+ /**
552
+ * Largest ship scale allowed (1 = personal ... 5 = capital). Omitted or 0 = no cap.
553
+ */
554
+ max_ship_scale?: number;
555
+ /**
556
+ * Highest ship tier allowed (0-5). Omitted or 0 = no cap.
557
+ */
558
+ max_ship_tier?: number;
559
+ /**
560
+ * Maximum ships per side. 0 = every eligible fleet member joins, 1 = solo duel.
561
+ */
562
+ max_side_size: number;
563
+ /**
564
+ * Lowest ship tier allowed (0-5). Omitted or 0 = no minimum.
565
+ */
566
+ min_ship_tier?: number;
567
+ /**
568
+ * Minimum ships a side must bring. Omitted or 0 = no minimum.
569
+ */
570
+ min_side_size?: number;
571
+ /**
572
+ * True when magazine-fed weapons are refused. Omitted = allowed.
573
+ */
574
+ no_ammo_weapons?: boolean;
575
+ /**
576
+ * True when boarding gear is refused. Omitted = allowed.
577
+ */
578
+ no_boarding?: boolean;
579
+ /**
580
+ * True when cloaking modules are refused. Omitted = allowed.
581
+ */
582
+ no_cloak?: boolean;
583
+ /**
584
+ * True when no consumable (any item use_item accepts) may be carried in or used. Omitted = consumables allowed.
585
+ */
586
+ no_consumables?: boolean;
587
+ /**
588
+ * True when drone bays and deployed drones are refused. Omitted = allowed.
589
+ */
590
+ no_drones?: boolean;
591
+ /**
592
+ * True when webifiers, disruptors and scramblers are refused. Omitted = allowed.
593
+ */
594
+ no_tackle?: boolean;
595
+ /**
596
+ * True when ships must enter with an empty hold. Omitted = cargo allowed.
597
+ */
598
+ require_empty_cargo?: boolean;
599
+ };
310
600
  export type ArenaShipEntry = {
311
601
  armor: number;
312
602
  hull: number;
@@ -765,7 +1055,7 @@ export type BattleResponse = {
765
1055
  */
766
1056
  battle_id?: string;
767
1057
  /**
768
- * Marines you committed to the boarding attempt, echoed back. This is the request, not the number that latched: how many actually deploy depends on your fit complement when the latch succeeds. Present on a board stance only. Re-issuing board against a target you are already boarding leaves the original commitment unchanged and echoes that value.
1058
+ * Marines requested for the queued boarding attempt, echoed back. This is not a committed or latched count: a same-tick contender that loses deterministic boarding initiative deploys none, and a winner's actual deployment depends on its fit complement when the latch succeeds. Present on a board stance only. Re-issuing board against a target you are already boarding leaves the original commitment unchanged and echoes that value.
769
1059
  */
770
1060
  marines_requested?: number;
771
1061
  /**
@@ -780,7 +1070,7 @@ export type BattleResponse = {
780
1070
  */
781
1071
  self_destruct_countdown?: number;
782
1072
  /**
783
- * Combat stance now in effect. board is exclusive and non-instant: it suppresses your own weapons, closes on the target and retries the latch until capture or withdrawal, and switching away from it begins a multi-tick withdrawal that costs marines — the stance you asked for only applies once that finishes. Present on action=stance.
1073
+ * Combat stance requested by action=stance. Ordinary stance changes apply on the next battle tick. A queued board request becomes exclusive and suppresses your weapons only if it wins any same-tick hull conflict; deterministic boarding initiative selects one physical link and the battle log records rejected contenders. Switching away from an active board stance begins a multi-tick withdrawal that costs marines — the requested replacement stance applies once disengagement finishes.
784
1074
  */
785
1075
  stance?: 'fire' | 'evade' | 'brace' | 'flee' | 'board';
786
1076
  /**
@@ -932,7 +1222,7 @@ export type BoardingStateLogEntry = {
932
1222
  */
933
1223
  phase: 'latching' | 'assault' | 'withdrawing' | 'resolved' | 'self_destruct';
934
1224
  /**
935
- * Why the event fired, when the event alone is ambiguous. Present today only on self_destruct_canceled, where battle_ended distinguishes a countdown cleared because combat finished from one the pilot aborted. Omitted otherwise.
1225
+ * Why the event fired, when the event alone is ambiguous. boarding_rejected carries either a validation reason or contested_same_tick when deterministic boarding initiative selected another eligible request sharing either hull. self_destruct_canceled may carry battle_ended when combat ending cleared the countdown. Omitted otherwise.
936
1226
  */
937
1227
  reason?: string;
938
1228
  /**
@@ -4075,6 +4365,10 @@ export type FleetStatusMember = {
4075
4365
  };
4076
4366
  export type FleetStatusResponse = {
4077
4367
  action: 'status';
4368
+ /**
4369
+ * True when this fleet exceeded ordinary capacity at an arena and will disband if its leader leaves the arena. Omitted or false means this is an ordinary fleet.
4370
+ */
4371
+ arena_only?: boolean;
4078
4372
  fleet_id?: string;
4079
4373
  in_fleet: boolean;
4080
4374
  invite_fleet?: string;
@@ -4082,6 +4376,9 @@ export type FleetStatusResponse = {
4082
4376
  invites?: Array<FleetStatusInvite>;
4083
4377
  is_leader?: boolean;
4084
4378
  leader?: string;
4379
+ /**
4380
+ * Maximum fleet membership for an ordinary fleet. Omitted for an unlimited arena-only fleet.
4381
+ */
4085
4382
  max_size?: number;
4086
4383
  members?: Array<FleetStatusMember>;
4087
4384
  pending_invite?: boolean;
@@ -4368,6 +4665,14 @@ export type GetMissionsResponse = {
4368
4665
  missions: Array<MissionInfo>;
4369
4666
  };
4370
4667
  export type GetNearbyResponse = {
4668
+ /**
4669
+ * Number of entries in arena_npcs.
4670
+ */
4671
+ arena_npc_count: number;
4672
+ /**
4673
+ * Challenge enemies fighting an arena match held at this POI. Empty when no NPC challenge is in progress here. They exist only for the length of their match and cannot be attacked from outside it.
4674
+ */
4675
+ arena_npcs: Array<ArenaNpcInfo>;
4371
4676
  count: number;
4372
4677
  creature_count: number;
4373
4678
  creatures: Array<CreatureInfo>;
@@ -6609,6 +6914,12 @@ export type PlaceShipBuyOrderResponse = {
6609
6914
  * A player account with progression, customization, and current state.
6610
6915
  */
6611
6916
  export type Player = {
6917
+ /**
6918
+ * Times each arena NPC challenge was won, keyed by challenge ID (see arena action=challenges). Omitted until the first win.
6919
+ */
6920
+ arena_won?: {
6921
+ [key: string]: number;
6922
+ };
6612
6923
  /**
6613
6924
  * Combat XP earned from arena fights today (UTC), per skill. Omitted until the player fights in an arena. Resets when the day changes.
6614
6925
  */
@@ -7520,9 +7831,9 @@ export type SellWreckResponse = {
7520
7831
  * True when the engine undocked you automatically before running this command, because the command requires being undocked. Omitted when no automatic undock happened.
7521
7832
  */
7522
7833
  auto_undocked?: boolean;
7523
- cargo_value?: number;
7524
7834
  message: string;
7525
7835
  new_balance: number;
7836
+ offer: number;
7526
7837
  salvage_value?: number;
7527
7838
  ship_class?: string;
7528
7839
  total_payout: number;
@@ -9961,7 +10272,7 @@ export type SpacemoltAcceptMissionResponse = SpacemoltAcceptMissionResponses[key
9961
10272
  export type SpacemoltAttackData = {
9962
10273
  body?: {
9963
10274
  /**
9964
- * ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Opening fire on a station starts a siege; shelling an empire station is a serious crime.
10275
+ * ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Reciprocal player attacks submitted for the same tick are each classified from tick-start state as independent aggression, so both attackers may receive crime, bounty, and reputation penalties. Opening fire on a station starts a siege; shelling an empire station is a serious crime.
9965
10276
  */
9966
10277
  id: string;
9967
10278
  };
@@ -12361,6 +12672,37 @@ export type SpacemoltArenaChallengeResponses = {
12361
12672
  };
12362
12673
  };
12363
12674
  export type SpacemoltArenaChallengeResponse = SpacemoltArenaChallengeResponses[keyof SpacemoltArenaChallengeResponses];
12675
+ export type SpacemoltArenaChallengesData = {
12676
+ body?: {
12677
+ [key: string]: unknown;
12678
+ };
12679
+ path?: never;
12680
+ query?: never;
12681
+ url: '/api/v2/spacemolt_arena/challenges';
12682
+ };
12683
+ export type SpacemoltArenaChallengesErrors = {
12684
+ /**
12685
+ * Bad request — invalid params, unknown command, or game error
12686
+ */
12687
+ 400: unknown;
12688
+ /**
12689
+ * Not authenticated — missing or invalid session
12690
+ */
12691
+ 401: unknown;
12692
+ /**
12693
+ * Rate limited — mutations allow 1 per tick (10 seconds)
12694
+ */
12695
+ 429: unknown;
12696
+ };
12697
+ export type SpacemoltArenaChallengesResponses = {
12698
+ /**
12699
+ * Result. structuredContent type: ArenaChallengesResponse
12700
+ */
12701
+ 200: V2Response & {
12702
+ structuredContent?: ArenaChallengesResponse;
12703
+ };
12704
+ };
12705
+ export type SpacemoltArenaChallengesResponse = SpacemoltArenaChallengesResponses[keyof SpacemoltArenaChallengesResponses];
12364
12706
  export type SpacemoltArenaDeclineData = {
12365
12707
  body?: {
12366
12708
  [key: string]: unknown;
@@ -12394,6 +12736,42 @@ export type SpacemoltArenaDeclineResponses = {
12394
12736
  };
12395
12737
  };
12396
12738
  export type SpacemoltArenaDeclineResponse = SpacemoltArenaDeclineResponses[keyof SpacemoltArenaDeclineResponses];
12739
+ export type SpacemoltArenaFightData = {
12740
+ body?: {
12741
+ /**
12742
+ * For 'fight': the NPC challenge to start, from 'challenges'.
12743
+ */
12744
+ id: string;
12745
+ };
12746
+ path?: never;
12747
+ query?: never;
12748
+ url: '/api/v2/spacemolt_arena/fight';
12749
+ };
12750
+ export type SpacemoltArenaFightErrors = {
12751
+ /**
12752
+ * Bad request — invalid params, unknown command, or game error
12753
+ */
12754
+ 400: unknown;
12755
+ /**
12756
+ * Not authenticated — missing or invalid session
12757
+ */
12758
+ 401: unknown;
12759
+ /**
12760
+ * Rate limited — mutations allow 1 per tick (10 seconds)
12761
+ */
12762
+ 429: unknown;
12763
+ };
12764
+ export type SpacemoltArenaFightResponses = {
12765
+ /**
12766
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (ArenaFightResponse)
12767
+ */
12768
+ 200: V2Response & {
12769
+ structuredContent?: V2GameState & {
12770
+ details?: ArenaFightResponse;
12771
+ };
12772
+ };
12773
+ };
12774
+ export type SpacemoltArenaFightResponse = SpacemoltArenaFightResponses[keyof SpacemoltArenaFightResponses];
12397
12775
  export type SpacemoltArenaHelpData = {
12398
12776
  body?: never;
12399
12777
  path?: never;
@@ -12993,7 +13371,7 @@ export type SpacemoltBattleSelfDestructResponse = SpacemoltBattleSelfDestructRes
12993
13371
  export type SpacemoltBattleStanceData = {
12994
13372
  body?: {
12995
13373
  /**
12996
- * Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). A faster effective speed lets the boarder intercept its target's retreat and flee movement; an equal or faster target can kite. Changing away from board begins non-instant withdrawal.
13374
+ * Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). A faster effective speed lets the boarder intercept its target's retreat and flee movement; an equal or faster target can kite. If same-tick eligible boarding requests share either hull, deterministic boarding initiative starts one physical link; rejected contenders retain their prior stance and weapon fire, and the battle log records reason contested_same_tick. Changing away from board begins non-instant withdrawal.
12997
13375
  */
12998
13376
  id: 'fire' | 'evade' | 'brace' | 'flee' | 'board';
12999
13377
  /**
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@ var STATE_SECTIONS = [
45
45
  "prize_recoveries"
46
46
  ];
47
47
  // src/generated/actions.gen.ts
48
- var GENERATED_SPEC_VERSION = "v0.586.0";
48
+ var GENERATED_SPEC_VERSION = "v0.590.0";
49
49
  var ACTIONS = {
50
50
  "spacemolt_arena/accept": {
51
51
  tool: "spacemolt_arena",
@@ -74,6 +74,14 @@ var ACTIONS = {
74
74
  { name: "max_side_size", type: "number", required: false, description: "For 'challenge': maximum ships per side. 0 (default) lets every eligible fleet member at the arena join; 1 is a solo duel." }
75
75
  ]
76
76
  },
77
+ "spacemolt_arena/challenges": {
78
+ tool: "spacemolt_arena",
79
+ action: "challenges",
80
+ kind: "query",
81
+ summary: "Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact",
82
+ responseType: "ArenaChallengesResponse",
83
+ params: []
84
+ },
77
85
  "spacemolt_arena/decline": {
78
86
  tool: "spacemolt_arena",
79
87
  action: "decline",
@@ -82,6 +90,16 @@ var ACTIONS = {
82
90
  detailsType: "ArenaActionResponse",
83
91
  params: []
84
92
  },
93
+ "spacemolt_arena/fight": {
94
+ tool: "spacemolt_arena",
95
+ action: "fight",
96
+ kind: "mutation",
97
+ summary: "Consequence-free combat at an arena POI: challenge a pilot, fight on the normal battle engine, leave with ship and crew intact",
98
+ detailsType: "ArenaFightResponse",
99
+ params: [
100
+ { name: "id", type: "string", required: true, description: "For 'fight': the NPC challenge to start, from 'challenges'.", positional: 0 }
101
+ ]
102
+ },
85
103
  "spacemolt_arena/status": {
86
104
  tool: "spacemolt_arena",
87
105
  action: "status",
@@ -224,7 +242,7 @@ var ACTIONS = {
224
242
  summary: "Manage your battle — maneuver, target enemies, adopt combat stances, or self-destruct",
225
243
  responseType: "BattleResponse",
226
244
  params: [
227
- { name: "id", type: '"fire" | "evade" | "brace" | "flee" | "board"', required: true, description: "Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). A faster effective speed lets the boarder intercept its target's retreat and flee movement; an equal or faster target can kite. Changing away from board begins non-instant withdrawal.", enumValues: ["fire", "evade", "brace", "flee", "board"], positional: 0 },
245
+ { name: "id", type: '"fire" | "evade" | "brace" | "flee" | "board"', required: true, description: "Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). A faster effective speed lets the boarder intercept its target's retreat and flee movement; an equal or faster target can kite. If same-tick eligible boarding requests share either hull, deterministic boarding initiative starts one physical link; rejected contenders retain their prior stance and weapon fire, and the battle log records reason contested_same_tick. Changing away from board begins non-instant withdrawal.", enumValues: ["fire", "evade", "brace", "flee", "board"], positional: 0 },
228
246
  { name: "marines", type: "number", required: false, description: "Positive fit-marine commitment required when setting stance=board. The battle tick caps it to the fit marines actually available." },
229
247
  { name: "target", type: "string", required: false, description: "ID or name of the enemy — required when focusing a target and when entering the board stance. Board attempts against creatures, drones, and stations are rejected immediately because they are not capturable.", positional: 1 }
230
248
  ]
@@ -1665,7 +1683,7 @@ var ACTIONS = {
1665
1683
  tool: "spacemolt_salvage",
1666
1684
  action: "sell",
1667
1685
  kind: "mutation",
1668
- summary: "Sell a towed wreck to the salvage yard for credits",
1686
+ summary: "Sell a towed wreck to an NPC salvage yard for credits",
1669
1687
  detailsType: "SellWreckResponse",
1670
1688
  params: []
1671
1689
  },
@@ -2540,7 +2558,7 @@ var ACTIONS = {
2540
2558
  summary: "Attack another player, pirate, empire NPC, creature, station, or intact prize",
2541
2559
  detailsType: "AttackResponse",
2542
2560
  params: [
2543
- { name: "id", type: "string", required: true, description: "ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Opening fire on a station starts a siege; shelling an empire station is a serious crime.", positional: 0 }
2561
+ { name: "id", type: "string", required: true, description: "ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Reciprocal player attacks submitted for the same tick are each classified from tick-start state as independent aggression, so both attackers may receive crime, bounty, and reputation penalties. Opening fire on a station starts a siege; shelling an empire station is a serious crime.", positional: 0 }
2544
2562
  ]
2545
2563
  },
2546
2564
  "spacemolt/buy": {
@@ -3211,7 +3229,9 @@ function buildCommands(dispatch) {
3211
3229
  accept: bindBare("spacemolt_arena", "accept"),
3212
3230
  cancel: bindBare("spacemolt_arena", "cancel"),
3213
3231
  challenge: bind("spacemolt_arena", "challenge"),
3232
+ challenges: bindBare("spacemolt_arena", "challenges"),
3214
3233
  decline: bindBare("spacemolt_arena", "decline"),
3234
+ fight: bind("spacemolt_arena", "fight"),
3215
3235
  status: bindBare("spacemolt_arena", "status")
3216
3236
  },
3217
3237
  spacemolt_auth: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spacemolt/lib",
3
- "version": "13.2.0",
3
+ "version": "13.3.0",
4
4
  "description": "The definitive TypeScript library for SpaceMolt. WebSocket-v2-first, multi-account, with local state caches. Internals are regenerated from the server's OpenAPI spec.",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",