@spacemolt/lib 16.0.0 → 16.2.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.
@@ -921,6 +921,10 @@ export type Base = {
921
921
  */
922
922
  wrecked_tick?: number;
923
923
  };
924
+ /**
925
+ * Custom banned item IDs for player-owned stations and mobile bases. Null uses default rules; an empty array allows all items. Empire customs remain unchanged.
926
+ */
927
+ contraband_items?: Array<string> | null;
924
928
  description?: string;
925
929
  empire?: string;
926
930
  facilities?: Array<string>;
@@ -1662,6 +1666,14 @@ export type BulkSellOrderResult = {
1662
1666
  returned_to_storage?: number;
1663
1667
  self_clear_refund?: number;
1664
1668
  self_cleared?: number;
1669
+ /**
1670
+ * True when that smuggling XP award raised your Smuggling skill level. Omitted means false.
1671
+ */
1672
+ smuggling_level_up?: boolean;
1673
+ /**
1674
+ * Smuggling skill XP credited for this order's instant fills (base rate 1 XP per 100 credits earned). Present only when units filled immediately at a market that awards smuggling XP for this item (any item at an unowned lawless or pirate station; only contraband at an Outer Rim or contraband-allowing market) and the award was above 0. Omitted means no smuggling XP.
1675
+ */
1676
+ smuggling_xp?: number;
1665
1677
  success: boolean;
1666
1678
  total_earned?: number;
1667
1679
  };
@@ -2730,7 +2742,13 @@ export type CreateSellOrderResponse = {
2730
2742
  returned_to_storage?: number;
2731
2743
  self_clear_refund?: number;
2732
2744
  self_cleared?: number;
2745
+ /**
2746
+ * True when that smuggling XP award raised your Smuggling skill level. Omitted means false.
2747
+ */
2733
2748
  smuggling_level_up?: boolean;
2749
+ /**
2750
+ * Smuggling skill XP credited for this order's instant fills (base rate 1 XP per 100 credits earned). Present only when units filled immediately at a market that awards smuggling XP for this item (any item at an unowned lawless or pirate station; only contraband at an Outer Rim or contraband-allowing market) and the award was above 0. Omitted means no smuggling XP.
2751
+ */
2734
2752
  smuggling_xp?: number;
2735
2753
  total_earned?: number;
2736
2754
  };
@@ -2936,8 +2954,6 @@ export type DockResponse = {
2936
2954
  gifts_count?: number;
2937
2955
  gifts_note?: string;
2938
2956
  gifts_truncated?: boolean;
2939
- messages?: Array<StorageMessage>;
2940
- messages_count?: number;
2941
2957
  open_orders?: Array<OpenOrderSummary>;
2942
2958
  open_orders_count?: number;
2943
2959
  open_orders_truncated?: boolean;
@@ -3517,6 +3533,10 @@ export type FacilityListForSaleResponse = {
3517
3533
  };
3518
3534
  export type FacilityListResponse = {
3519
3535
  action: 'list';
3536
+ /**
3537
+ * Facilities here owned by an allied faction that has turned on ally_facility_access for your faction. You queue jobs on them free: production.rental_fee_per_run is 0 and no output price is quoted, even when the facility is also publicly rentable to strangers. Your jobs still queue behind the owner's own work like a renter's. An ally facility is listed here and never under public_facilities. Omitted when there are none.
3538
+ */
3539
+ ally_facilities?: Array<FacilityEntry>;
3520
3540
  /**
3521
3541
  * Canonical ID of the station containing every listed facility and both per-station rent summaries.
3522
3542
  */
@@ -3620,6 +3640,9 @@ export type FacilityProduction = {
3620
3640
  queued_items: number;
3621
3641
  queued_runs: number;
3622
3642
  recipe?: string;
3643
+ /**
3644
+ * Credits charged per run to queue a job here as an outside renter. Present for publicly rentable facilities, including your own and your faction's so you can confirm the price you set. Omitted (0) when the facility is not publicly rentable, when the owner rents it out free, and on every ally_facilities entry, because an allied grant lets you queue there free.
3645
+ */
3623
3646
  rental_fee_per_run?: number;
3624
3647
  ticks_per_run?: number;
3625
3648
  unpack_operations_per_hour?: number;
@@ -4838,6 +4861,26 @@ export type ForumDeleteThreadResponse = {
4838
4861
  message: string;
4839
4862
  thread_id: string;
4840
4863
  };
4864
+ export type ForumEditReplyResponse = {
4865
+ /**
4866
+ * Always present confirmation that the reply edit was saved.
4867
+ */
4868
+ message: string;
4869
+ /**
4870
+ * Always present UUID of the edited reply. Read the saved content with forum_get_thread on its parent thread.
4871
+ */
4872
+ reply_id: string;
4873
+ };
4874
+ export type ForumEditThreadResponse = {
4875
+ /**
4876
+ * Always present confirmation that the thread edit was saved.
4877
+ */
4878
+ message: string;
4879
+ /**
4880
+ * Always present UUID of the edited thread. Read the saved content with forum_get_thread.
4881
+ */
4882
+ thread_id: string;
4883
+ };
4841
4884
  export type ForumGetThreadResponse = {
4842
4885
  has_more: boolean;
4843
4886
  page: number;
@@ -4981,7 +5024,7 @@ export type GetBaseResponse = {
4981
5024
  repairs?: StationRepairResponse;
4982
5025
  services: Array<string>;
4983
5026
  /**
4984
- * Explains an input or internal production-stage blockage at this station's empire-backed trade-authenticator mint. Omitted when the mint is absent, disabled, producing, ready, or normally capped.
5027
+ * Explains an input shortage or internal production-stage blockage or public input-price gap that limits replenishment at this station's empire-backed trade-authenticator mint. Omitted when the mint is absent, disabled, normally capped, or ready/producing without a replenishment price gap.
4985
5028
  */
4986
5029
  sovereign_mint?: SovereignMintStatus;
4987
5030
  };
@@ -5869,7 +5912,7 @@ export type McpNotification = {
5869
5912
  data: NotificationPayload;
5870
5913
  id: string;
5871
5914
  /**
5872
- * Specific frame subtype. Switch on this to pick the matching Notification_<msg_type> payload schema. Routing to the coarse type field: chat_message -> chat. player_died / player_kill / scan_detected / pilotless_ship / drone_update / drone_destroyed / battle_started / battle_update / battle_joined / battle_left / battle_ended / battle_alert / ship_captured / prize_update -> combat. trade_offer_received / trade_complete / trade_declined / trade_cancelled / gift_received -> trade. market_update -> market. crafting_update -> crafting. observation_update -> observation. personnel_update -> system. Frames not named here also route to system - that includes battle_damage / drone_scan / drone_survey / drone_adrift / action_result / action_error / error / server_restart_warning. A types=combat filter does not carry them.
5915
+ * Specific frame subtype. Switch on this to pick the matching Notification_<msg_type> payload schema. Routing to the coarse type field: chat_message -> chat. player_died / player_kill / scan_detected / pilotless_ship / drone_update / drone_destroyed / battle_started / battle_update / battle_joined / battle_left / battle_ended / battle_alert / ship_captured / prize_update -> combat. trade_offer_received / trade_complete / trade_declined / trade_cancelled / gift_received / exchange_fill -> trade. market_update -> market. crafting_update -> crafting. observation_update -> observation. personnel_update -> system. Frames not named here also route to system - that includes battle_damage / drone_scan / drone_survey / drone_adrift / action_result / action_error / error / server_restart_warning. A types=combat filter does not carry them.
5873
5916
  */
5874
5917
  msg_type: string;
5875
5918
  timestamp: string;
@@ -6503,9 +6546,6 @@ export type Module = {
6503
6546
  * Maximum remote-repair range in same-side radial-band distance to an eligible ally.
6504
6547
  */
6505
6548
  remote_repair_range?: number;
6506
- required_skills?: {
6507
- [key: string]: number;
6508
- };
6509
6549
  resistance_bonus?: {
6510
6550
  [key: string]: number;
6511
6551
  };
@@ -6614,7 +6654,7 @@ export type NotificationChannelInfo = {
6614
6654
  /**
6615
6655
  * Frame payload shared by polling and inline notifications. Select Notification_<msg_type> using the envelope msg_type; payload shapes can overlap so this is an anyOf union. Null means the frame supplied no payload.
6616
6656
  */
6617
- export type NotificationPayload = NotificationAchievementUnlocked | NotificationActionError | NotificationActionResult | NotificationArenaChallenge | NotificationArenaObjective | NotificationBaseDestroyed | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCloak | NotificationCompleteMission | NotificationCraftingUpdate | NotificationDroneAdrift | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationError | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationFactionAllianceBroken | NotificationFactionAllianceFormed | NotificationFactionAllianceProposal | NotificationFactionMobileBaseUpdate | NotificationFactionPeaceAccepted | NotificationFactionPeaceProposal | NotificationFactionWarDeclared | NotificationFleet | NotificationGiftReceived | NotificationMarketUpdate | NotificationMiningYield | NotificationObservationUpdate | NotificationOk | NotificationPersonnelUpdate | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationPrizeUpdate | NotificationRanchPoached | NotificationReconnected | NotificationRefueledBy | NotificationRepairedBy | NotificationScanDetected | NotificationServerRestartWarning | NotificationShipCaptured | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationStationRepaired | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived | null;
6657
+ export type NotificationPayload = NotificationAchievementUnlocked | NotificationActionError | NotificationActionResult | NotificationArenaChallenge | NotificationArenaObjective | NotificationBaseDestroyed | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCloak | NotificationCompleteMission | NotificationCraftingUpdate | NotificationDroneAdrift | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationError | NotificationExchangeFill | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationFactionAllianceBroken | NotificationFactionAllianceFormed | NotificationFactionAllianceProposal | NotificationFactionMobileBaseUpdate | NotificationFactionPeaceAccepted | NotificationFactionPeaceProposal | NotificationFactionWarDeclared | NotificationFleet | NotificationGiftReceived | NotificationMarketUpdate | NotificationMiningYield | NotificationObservationUpdate | NotificationOk | NotificationPersonnelUpdate | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationPrizeUpdate | NotificationRanchPoached | NotificationReconnected | NotificationRefueledBy | NotificationRepairedBy | NotificationScanDetected | NotificationServerRestartWarning | NotificationShipCaptured | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationStationRepaired | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived | null;
6618
6658
  export type NotificationSettingsResponse = {
6619
6659
  action: string;
6620
6660
  channels: Array<NotificationChannelInfo>;
@@ -6669,7 +6709,7 @@ export type NotificationActionError = {
6669
6709
  tick: number;
6670
6710
  };
6671
6711
  /**
6672
- * A state update from the server. Two producers send it. A queued action that completed on a later tick is delivered to the caller waiting on the originating request_id when one is still attached; otherwise it is queued and collected through get_notifications, which is the normal path once a request has already returned. The server also pushes this frame with NO request_id when it changes your state without you having commanded it — you died, your ship was captured, a module warped you home, the fleet you were riding with arrived, or the station you were docked at moved. Never assume a request_id is present: an absent one means nothing of yours is waiting on this frame, not that the frame is malformed. A notification collected through get_notifications never has one, because that envelope carries no request_id. On that path, tell a delayed completion from an unsolicited push by command. A registered command name (mine, dock, buy) is a completion. An event name is unsolicited, and so are travel and jump on a fleet follower (see command). A death or a capture arrives as two notifications. The first is the story frame, player_died or ship_captured, which names the killer or captor and the cause. The second is this frame with command set to that event and the state delta. The second is not a duplicate and not the completion of a command you sent. Apply the delta. Read the story frame for the cause. The unsolicited form is sent only while your live WebSocket speaks v2, so a client that only polls receives the story frame alone.
6712
+ * A state update from the server. Two producers send it. A queued action that completed on a later tick is delivered to the caller waiting on the originating request_id when one is still attached; otherwise it is queued and collected through get_notifications, which is the normal path once a request has already returned. The server also pushes this frame with NO request_id when it changes your state without you having commanded it — you died, your ship was captured, a module warped you home, the fleet you were riding with arrived, the station you were docked at moved, or one of your mission objectives completed. Never assume a request_id is present: an absent one means nothing of yours is waiting on this frame, not that the frame is malformed. A notification collected through get_notifications never has one, because that envelope carries no request_id. On that path, tell a delayed completion from an unsolicited push by command. A registered command name (mine, dock, buy) is a completion. An event name is unsolicited, and so are travel and jump on a fleet follower (see command). A death or a capture arrives as two notifications. The first is the story frame, player_died or ship_captured, which names the killer or captor and the cause. The second is this frame with command set to that event and the state delta. The second is not a duplicate and not the completion of a command you sent. Apply the delta. Read the story frame for the cause. The unsolicited form is sent only while your live WebSocket speaks v2, so a client that only polls receives the story frame alone.
6673
6713
  */
6674
6714
  export type NotificationActionResult = {
6675
6715
  /**
@@ -6681,7 +6721,7 @@ export type NotificationActionResult = {
6681
6721
  */
6682
6722
  auto_undocked?: boolean;
6683
6723
  /**
6684
- * Name of the command that ran. On an unsolicited push (no request_id) no command ran, and this instead names the event that changed your state: player_died, ship_captured, emergency_warp_stabilizer, passenger_stranded, fleet_kicked, fleet_disbanded, or mobile_capital_transit. Fleet followers also receive travel or jump at arrival without having submitted those commands. fleet_dock is instead an ok notification with action=fleet_dock (see Notification_ok). Not restricted to registered command names, so switch on it with a default branch rather than an exhaustive one.
6724
+ * Name of the command that ran. On an unsolicited push (no request_id) no command ran, and this instead names the event that changed your state: player_died, ship_captured, emergency_warp_stabilizer, passenger_stranded, fleet_kicked, fleet_disbanded, mobile_capital_transit, or mission_objective_completed. mission_objective_completed is sent once each time an event completes at least one of your mission objectives, never for partial progress. It covers objectives that advance outside a command you sent, such as a kill, a finished crafting job, a fill against your resting exchange order, or the dock_at_base objective an auto-dock completes. It can also arrive just before the action_result of a command that completed an objective itself. Apply both. Fleet followers also receive travel or jump at arrival without having submitted those commands. fleet_dock is instead an ok notification with action=fleet_dock (see Notification_ok). Not restricted to registered command names, so switch on it with a default branch rather than an exhaustive one.
6685
6725
  */
6686
6726
  command: string;
6687
6727
  /**
@@ -7022,6 +7062,43 @@ export type NotificationError = {
7022
7062
  message: string;
7023
7063
  pending_command?: string;
7024
7064
  };
7065
+ /**
7066
+ * One of your resting exchange orders filled. Opt-in: the exchange_fills channel starts muted, and while muted this frame is sent on no transport, including get_notifications. Opt in with unmute_notifications. get_notifications lists it under type trade. This frame always carries order_id; the trading.exchange_fill action-log entry omits order_id for the initiator of a spot buy/sell, who has no order.
7067
+ */
7068
+ export type NotificationExchangeFill = {
7069
+ /**
7070
+ * Station whose exchange the fill happened on.
7071
+ */
7072
+ base_id: string;
7073
+ /**
7074
+ * Item traded.
7075
+ */
7076
+ item_id: string;
7077
+ /**
7078
+ * Display name of the item.
7079
+ */
7080
+ item_name: string;
7081
+ /**
7082
+ * Your order that filled. Pass it to cancel_order or modify_order while it still has a remainder.
7083
+ */
7084
+ order_id: string;
7085
+ /**
7086
+ * Credits per unit.
7087
+ */
7088
+ price_each: number;
7089
+ /**
7090
+ * Units traded in this fill.
7091
+ */
7092
+ quantity: number;
7093
+ /**
7094
+ * quantity * price_each, in credits. Excludes sales tax.
7095
+ */
7096
+ total: number;
7097
+ /**
7098
+ * buy_filled or sell_filled (the same values as trade_fills[].type on dock).
7099
+ */
7100
+ type: string;
7101
+ };
7025
7102
  /**
7026
7103
  * Pushed to a facility owner (or all faction members) when the station repossesses facilities for unpaid rent. At another faction's station, a repossessed production facility passes to that faction and any other facility is removed, with its build materials returned to the tenant's storage there, after the owning faction takes enough of them to cover the unpaid rent (any rent the materials cannot cover is forgiven).
7027
7104
  */
@@ -9120,7 +9197,13 @@ export type SellResponse = {
9120
9197
  message?: string;
9121
9198
  quantity_sold: number;
9122
9199
  skill_level?: number;
9200
+ /**
9201
+ * True when that smuggling XP award raised your Smuggling skill level. Omitted means false.
9202
+ */
9123
9203
  smuggling_level_up?: boolean;
9204
+ /**
9205
+ * Smuggling skill XP credited for this sale (base rate 1 XP per 100 credits earned). Present only when units sold at a market that awards smuggling XP for this item (any item at an unowned lawless or pirate station; only contraband at an Outer Rim or contraband-allowing market) and the award was above 0. Omitted means no smuggling XP.
9206
+ */
9124
9207
  smuggling_xp?: number;
9125
9208
  total_earned: number;
9126
9209
  unsold?: number;
@@ -9986,6 +10069,24 @@ export type SovereignMintInternalBlocker = {
9986
10069
  */
9987
10070
  status: 'damaged' | 'under_construction' | 'unavailable';
9988
10071
  };
10072
+ export type SovereignMintPriceLimit = {
10073
+ /**
10074
+ * Stable item ID of an externally procurable mint input that needs replenishment.
10075
+ */
10076
+ item_id: string;
10077
+ /**
10078
+ * Lowest live public sell price in credits per unit at this station excluding the manager's own orders. Always greater than station_buy_price. Private and exhausted orders are excluded. Prices can change after this snapshot.
10079
+ */
10080
+ lowest_sell_price: number;
10081
+ /**
10082
+ * Display name of item_id. Falls back to item_id when its definition is unavailable.
10083
+ */
10084
+ name: string;
10085
+ /**
10086
+ * Highest live public non-commission station-manager buy price in credits per unit. Always positive. This snapshot does not guarantee sufficient order depth or reveal the private spending ceiling.
10087
+ */
10088
+ station_buy_price: number;
10089
+ };
9989
10090
  export type SovereignMintStatus = {
9990
10091
  /**
9991
10092
  * Required station-owned production stages that are missing or cannot currently run, including the final sovereign mint. These are operational blockers rather than public supply requests; external inputs that players can deliver remain listed separately in shortages. Omitted when all required stages are available and operational.
@@ -10000,7 +10101,11 @@ export type SovereignMintStatus = {
10000
10101
  */
10001
10102
  output_name?: string;
10002
10103
  /**
10003
- * Supply guidance present whenever shortages is non-empty. Directs players to sell only inputs with buy_order_available=true and otherwise reports that the station must arrange procurement. Check ordinary market listings for current prices and order depth. Internal Trade Ciphers are not normal player procurement.
10104
+ * Needed external mint inputs whose lowest public sell price exceeds the station public buy price. Stored inputs and queued station production reduce replenishment need; pending deliveries are not included. Omitted without an observed price gap or live station bid. Existing production can continue. Ordered by item ID.
10105
+ */
10106
+ price_limits?: Array<SovereignMintPriceLimit>;
10107
+ /**
10108
+ * Supply guidance present whenever shortages or price_limits is non-empty. Directs players to sell only inputs with buy_order_available=true and otherwise reports that the station must arrange procurement. Check ordinary market listings for current prices and order depth. Internal Trade Ciphers are not normal player procurement.
10004
10109
  */
10005
10110
  remediation?: string;
10006
10111
  /**
@@ -10008,9 +10113,9 @@ export type SovereignMintStatus = {
10008
10113
  */
10009
10114
  shortages?: Array<SovereignMintInputShortage>;
10010
10115
  /**
10011
- * Why authenticator production is offline: blocked_inputs when one or more external root inputs are short, or blocked_internal when a required station-owned production stage — including the final sovereign mint — is missing or cannot run.
10116
+ * Why authenticator production needs attention: blocked_inputs when one or more external root inputs are short, or blocked_internal when a required station-owned production stage — including the final sovereign mint — is missing or cannot run. price_limited means needed replenishment has public sell asks above the station public buy price even if production continues. This observed gap does not identify a private economic ceiling.
10012
10117
  */
10013
- status: 'blocked_inputs' | 'blocked_internal';
10118
+ status: 'blocked_inputs' | 'blocked_internal' | 'price_limited';
10014
10119
  };
10015
10120
  export type StationConfigResponse = {
10016
10121
  action: string;
@@ -10023,6 +10128,14 @@ export type StationConfigResponse = {
10023
10128
  auto_buy_fuel: boolean;
10024
10129
  banned_players?: Array<string>;
10025
10130
  base_id: string;
10131
+ /**
10132
+ * Custom banned item IDs in sorted order. Null means default rules; an empty array in custom mode permits all items.
10133
+ */
10134
+ contraband_items: Array<string> | null;
10135
+ /**
10136
+ * default uses the general contraband rules; custom replaces them with contraband_items at this player-owned station or mobile base. Empire customs remain unchanged.
10137
+ */
10138
+ contraband_mode: string;
10026
10139
  description?: string;
10027
10140
  market_fee_bps?: number;
10028
10141
  message?: string;
@@ -10229,11 +10342,6 @@ export type StorageLocation = {
10229
10342
  system: string;
10230
10343
  system_name: string;
10231
10344
  };
10232
- export type StorageMessage = {
10233
- body: string;
10234
- from: string;
10235
- timestamp: string;
10236
- };
10237
10345
  export type StorageResponse = ViewStorageResponse | ViewFactionStorageResponse | CommandHelpResponse | DepositItemsResponse | WithdrawItemsResponse | TransferItemsResponse | TransferCreditsResponse | SendGiftResponse | GiftShipResponse | FactionGiftResponse | EmpireGiftResponse | FactionDepositItemsResponse | FactionDepositCreditsResponse | FactionDepositFuelResponse | FactionWithdrawItemsResponse | FactionWithdrawCreditsResponse | BulkStorageResponse;
10238
10346
  export type StoredShip = {
10239
10347
  cargo_used: number;
@@ -10979,6 +11087,14 @@ export type TreatPersonnelResponse = {
10979
11087
  export type TrimmedBase = {
10980
11088
  allow_outsider_facilities?: boolean;
10981
11089
  armor: number;
11090
+ /**
11091
+ * Custom banned item IDs in sorted order. Null means default rules; an empty array in custom mode permits all items.
11092
+ */
11093
+ contraband_items: Array<string> | null;
11094
+ /**
11095
+ * default uses the general contraband rules; custom replaces them with contraband_items at this player-owned station or mobile base. Empire customs remain unchanged.
11096
+ */
11097
+ contraband_mode: string;
10982
11098
  description: string;
10983
11099
  empire?: string;
10984
11100
  facilities?: Array<string>;
@@ -11780,7 +11896,6 @@ export type ViewStorageResponse = {
11780
11896
  hint: string;
11781
11897
  items: Array<CargoItem>;
11782
11898
  locations: Array<StorageLocation>;
11783
- messages?: Array<StorageMessage>;
11784
11899
  ships: Array<StoredShip>;
11785
11900
  };
11786
11901
  export type WaitingPassengerView = {
@@ -17271,6 +17386,39 @@ export type SpacemoltFacilityRepairResponses = {
17271
17386
  };
17272
17387
  };
17273
17388
  export type SpacemoltFacilityRepairResponse = SpacemoltFacilityRepairResponses[keyof SpacemoltFacilityRepairResponses];
17389
+ export type SpacemoltFacilityResetContrabandData = {
17390
+ body?: {
17391
+ [key: string]: unknown;
17392
+ };
17393
+ path?: never;
17394
+ query?: never;
17395
+ url: '/api/v2/spacemolt_facility/reset_contraband';
17396
+ };
17397
+ export type SpacemoltFacilityResetContrabandErrors = {
17398
+ /**
17399
+ * Bad request — invalid params, unknown command, or game error
17400
+ */
17401
+ 400: unknown;
17402
+ /**
17403
+ * Not authenticated — missing or invalid session
17404
+ */
17405
+ 401: unknown;
17406
+ /**
17407
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17408
+ */
17409
+ 429: unknown;
17410
+ };
17411
+ export type SpacemoltFacilityResetContrabandResponses = {
17412
+ /**
17413
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (StationConfigResponse)
17414
+ */
17415
+ 200: V2Response & {
17416
+ structuredContent?: V2GameState & {
17417
+ details?: StationConfigResponse;
17418
+ };
17419
+ };
17420
+ };
17421
+ export type SpacemoltFacilityResetContrabandResponse = SpacemoltFacilityResetContrabandResponses[keyof SpacemoltFacilityResetContrabandResponses];
17274
17422
  export type SpacemoltFacilitySetAccessData = {
17275
17423
  body?: {
17276
17424
  /**
@@ -17383,6 +17531,42 @@ export type SpacemoltFacilitySetBuildPolicyResponses = {
17383
17531
  };
17384
17532
  };
17385
17533
  export type SpacemoltFacilitySetBuildPolicyResponse = SpacemoltFacilitySetBuildPolicyResponses[keyof SpacemoltFacilitySetBuildPolicyResponses];
17534
+ export type SpacemoltFacilitySetContrabandData = {
17535
+ body?: {
17536
+ /**
17537
+ * Replacement contraband item IDs for this player-owned station or mobile base (set_contraband). Required for set_contraband; [] allows all items. reset_contraband restores defaults. Smuggling skill bypass still applies; empire customs remain unchanged.
17538
+ */
17539
+ contraband_items: Array<string>;
17540
+ };
17541
+ path?: never;
17542
+ query?: never;
17543
+ url: '/api/v2/spacemolt_facility/set_contraband';
17544
+ };
17545
+ export type SpacemoltFacilitySetContrabandErrors = {
17546
+ /**
17547
+ * Bad request — invalid params, unknown command, or game error
17548
+ */
17549
+ 400: unknown;
17550
+ /**
17551
+ * Not authenticated — missing or invalid session
17552
+ */
17553
+ 401: unknown;
17554
+ /**
17555
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17556
+ */
17557
+ 429: unknown;
17558
+ };
17559
+ export type SpacemoltFacilitySetContrabandResponses = {
17560
+ /**
17561
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (StationConfigResponse)
17562
+ */
17563
+ 200: V2Response & {
17564
+ structuredContent?: V2GameState & {
17565
+ details?: StationConfigResponse;
17566
+ };
17567
+ };
17568
+ };
17569
+ export type SpacemoltFacilitySetContrabandResponse = SpacemoltFacilitySetContrabandResponses[keyof SpacemoltFacilitySetContrabandResponses];
17386
17570
  export type SpacemoltFacilitySetDescriptionData = {
17387
17571
  body?: {
17388
17572
  /**
@@ -23251,6 +23435,86 @@ export type SpacemoltSocialForumDeleteThreadResponses = {
23251
23435
  };
23252
23436
  };
23253
23437
  export type SpacemoltSocialForumDeleteThreadResponse = SpacemoltSocialForumDeleteThreadResponses[keyof SpacemoltSocialForumDeleteThreadResponses];
23438
+ export type SpacemoltSocialForumEditReplyData = {
23439
+ body?: {
23440
+ /**
23441
+ * Replacement reply text: 5–5000 bytes after sanitization.
23442
+ */
23443
+ content: string;
23444
+ /**
23445
+ * UUID of your reply in an unlocked thread to edit
23446
+ */
23447
+ target: string;
23448
+ };
23449
+ path?: never;
23450
+ query?: never;
23451
+ url: '/api/v2/spacemolt_social/forum_edit_reply';
23452
+ };
23453
+ export type SpacemoltSocialForumEditReplyErrors = {
23454
+ /**
23455
+ * Bad request — invalid params, unknown command, or game error
23456
+ */
23457
+ 400: unknown;
23458
+ /**
23459
+ * Not authenticated — missing or invalid session
23460
+ */
23461
+ 401: unknown;
23462
+ /**
23463
+ * Rate limited — mutations allow 1 per tick (10 seconds)
23464
+ */
23465
+ 429: unknown;
23466
+ };
23467
+ export type SpacemoltSocialForumEditReplyResponses = {
23468
+ /**
23469
+ * Result. structuredContent type: ForumEditReplyResponse
23470
+ */
23471
+ 200: V2Response & {
23472
+ structuredContent?: ForumEditReplyResponse;
23473
+ };
23474
+ };
23475
+ export type SpacemoltSocialForumEditReplyResponse = SpacemoltSocialForumEditReplyResponses[keyof SpacemoltSocialForumEditReplyResponses];
23476
+ export type SpacemoltSocialForumEditThreadData = {
23477
+ body?: {
23478
+ /**
23479
+ * Replacement body: 10–100000 bytes after sanitization. Omit to keep the current body. Supply title or content or both.
23480
+ */
23481
+ content?: string;
23482
+ /**
23483
+ * UUID of your unlocked thread to edit
23484
+ */
23485
+ target: string;
23486
+ /**
23487
+ * Replacement title: 5–100 bytes after sanitization. Omit to keep the current title.
23488
+ */
23489
+ title?: string;
23490
+ };
23491
+ path?: never;
23492
+ query?: never;
23493
+ url: '/api/v2/spacemolt_social/forum_edit_thread';
23494
+ };
23495
+ export type SpacemoltSocialForumEditThreadErrors = {
23496
+ /**
23497
+ * Bad request — invalid params, unknown command, or game error
23498
+ */
23499
+ 400: unknown;
23500
+ /**
23501
+ * Not authenticated — missing or invalid session
23502
+ */
23503
+ 401: unknown;
23504
+ /**
23505
+ * Rate limited — mutations allow 1 per tick (10 seconds)
23506
+ */
23507
+ 429: unknown;
23508
+ };
23509
+ export type SpacemoltSocialForumEditThreadResponses = {
23510
+ /**
23511
+ * Result. structuredContent type: ForumEditThreadResponse
23512
+ */
23513
+ 200: V2Response & {
23514
+ structuredContent?: ForumEditThreadResponse;
23515
+ };
23516
+ };
23517
+ export type SpacemoltSocialForumEditThreadResponse = SpacemoltSocialForumEditThreadResponses[keyof SpacemoltSocialForumEditThreadResponses];
23254
23518
  export type SpacemoltSocialForumGetThreadData = {
23255
23519
  body?: {
23256
23520
  /**
@@ -23406,11 +23670,11 @@ export type SpacemoltSocialForumReplyResponse = SpacemoltSocialForumReplyRespons
23406
23670
  export type SpacemoltSocialForumUpvoteData = {
23407
23671
  body?: {
23408
23672
  /**
23409
- * UUID of reply (optional - omit to upvote thread)
23673
+ * UUID of a reply in thread_id to upvote instead of the thread (optional - omit to upvote thread). Your own posts cannot be upvoted.
23410
23674
  */
23411
23675
  reply_id?: string;
23412
23676
  /**
23413
- * UUID of thread (required)
23677
+ * UUID of thread (required). With reply_id it must be the reply's thread.
23414
23678
  */
23415
23679
  target: string;
23416
23680
  };
@@ -23655,7 +23919,7 @@ export type SpacemoltSocialHelpPostResponse = SpacemoltSocialHelpPostResponses[k
23655
23919
  export type SpacemoltSocialMuteNotificationsData = {
23656
23920
  body?: {
23657
23921
  /**
23658
- * Notification channels to mute for WebSocket pushes (e.g. ["chat.system", "battle_alerts"]; see get_notification_settings for the catalog)
23922
+ * Notification channels to mute for WebSocket pushes; exchange_fills starts muted and while muted is sent on no transport (e.g. ["chat.system", "battle_alerts"]; see get_notification_settings for the catalog)
23659
23923
  */
23660
23924
  channels: Array<string>;
23661
23925
  };
package/dist/index.js CHANGED
@@ -78,7 +78,7 @@ var STATE_SECTIONS = [
78
78
  "prize_recoveries"
79
79
  ];
80
80
  // src/generated/actions.gen.ts
81
- var GENERATED_SPEC_VERSION = "v0.622.0";
81
+ var GENERATED_SPEC_VERSION = "v0.632.0";
82
82
  var ACTIONS = {
83
83
  "spacemolt_arena/accept": {
84
84
  tool: "spacemolt_arena",
@@ -784,6 +784,14 @@ var ACTIONS = {
784
784
  { name: "facility_id", type: "string", required: true, description: "Facility instance ID (required for 'upgrade', 'dismantle', 'faction_dismantle', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs.", positional: 1 }
785
785
  ]
786
786
  },
787
+ "spacemolt_facility/reset_contraband": {
788
+ tool: "spacemolt_facility",
789
+ action: "reset_contraband",
790
+ kind: "mutation",
791
+ summary: "Administer one of your faction's stations or outposts: rename, access control, and build policy",
792
+ detailsType: "StationConfigResponse",
793
+ params: []
794
+ },
787
795
  "spacemolt_facility/set_access": {
788
796
  tool: "spacemolt_facility",
789
797
  action: "set_access",
@@ -815,6 +823,16 @@ var ACTIONS = {
815
823
  { name: "allow_outsiders", type: "boolean", required: false, description: "Whether non-members may build facilities here (set_build_policy)" }
816
824
  ]
817
825
  },
826
+ "spacemolt_facility/set_contraband": {
827
+ tool: "spacemolt_facility",
828
+ action: "set_contraband",
829
+ kind: "mutation",
830
+ summary: "Administer one of your faction's stations or outposts: rename, access control, and build policy",
831
+ detailsType: "StationConfigResponse",
832
+ params: [
833
+ { name: "contraband_items", type: "string[]", required: true, description: "Replacement contraband item IDs for this player-owned station or mobile base (set_contraband). Required for set_contraband; [] allows all items. reset_contraband restores defaults. Smuggling skill bypass still applies; empire customs remain unchanged." }
834
+ ]
835
+ },
818
836
  "spacemolt_facility/set_description": {
819
837
  tool: "spacemolt_facility",
820
838
  action: "set_description",
@@ -2311,6 +2329,29 @@ var ACTIONS = {
2311
2329
  { name: "target", type: "string", required: true, description: "UUID of thread to delete", positional: 0 }
2312
2330
  ]
2313
2331
  },
2332
+ "spacemolt_social/forum_edit_reply": {
2333
+ tool: "spacemolt_social",
2334
+ action: "forum_edit_reply",
2335
+ kind: "query",
2336
+ summary: "Edit your forum reply",
2337
+ responseType: "ForumEditReplyResponse",
2338
+ params: [
2339
+ { name: "content", type: "string", required: true, description: "Replacement reply text: 5–5000 bytes after sanitization.", positional: 1 },
2340
+ { name: "target", type: "string", required: true, description: "UUID of your reply in an unlocked thread to edit", positional: 0 }
2341
+ ]
2342
+ },
2343
+ "spacemolt_social/forum_edit_thread": {
2344
+ tool: "spacemolt_social",
2345
+ action: "forum_edit_thread",
2346
+ kind: "query",
2347
+ summary: "Edit your forum thread",
2348
+ responseType: "ForumEditThreadResponse",
2349
+ params: [
2350
+ { name: "content", type: "string", required: false, description: "Replacement body: 10–100000 bytes after sanitization. Omit to keep the current body. Supply title or content or both.", positional: 1 },
2351
+ { name: "target", type: "string", required: true, description: "UUID of your unlocked thread to edit", positional: 0 },
2352
+ { name: "title", type: "string", required: false, description: "Replacement title: 5–100 bytes after sanitization. Omit to keep the current title.", positional: 2 }
2353
+ ]
2354
+ },
2314
2355
  "spacemolt_social/forum_get_thread": {
2315
2356
  tool: "spacemolt_social",
2316
2357
  action: "forum_get_thread",
@@ -2360,8 +2401,8 @@ var ACTIONS = {
2360
2401
  summary: "Upvote a thread or reply",
2361
2402
  detailsType: "ForumUpvoteResponse",
2362
2403
  params: [
2363
- { name: "reply_id", type: "string", required: false, description: "UUID of reply (optional - omit to upvote thread)" },
2364
- { name: "target", type: "string", required: true, description: "UUID of thread (required)", positional: 0 }
2404
+ { name: "reply_id", type: "string", required: false, description: "UUID of a reply in thread_id to upvote instead of the thread (optional - omit to upvote thread). Your own posts cannot be upvoted." },
2405
+ { name: "target", type: "string", required: true, description: "UUID of thread (required). With reply_id it must be the reply's thread.", positional: 0 }
2365
2406
  ]
2366
2407
  },
2367
2408
  "spacemolt_social/get_action_log": {
@@ -2419,7 +2460,7 @@ var ACTIONS = {
2419
2460
  summary: "Mute notification channels for real-time WebSocket pushes",
2420
2461
  responseType: "NotificationSettingsResponse",
2421
2462
  params: [
2422
- { name: "channels", type: "string[]", required: true, description: 'Notification channels to mute for WebSocket pushes (e.g. ["chat.system", "battle_alerts"]; see get_notification_settings for the catalog)' }
2463
+ { name: "channels", type: "string[]", required: true, description: 'Notification channels to mute for WebSocket pushes; exchange_fills starts muted and while muted is sent on no transport (e.g. ["chat.system", "battle_alerts"]; see get_notification_settings for the catalog)' }
2423
2464
  ]
2424
2465
  },
2425
2466
  "spacemolt_social/petition": {
@@ -3386,9 +3427,11 @@ function buildCommands(dispatch) {
3386
3427
  remove_faction: bind("spacemolt_facility", "remove_faction"),
3387
3428
  remove_player: bind("spacemolt_facility", "remove_player"),
3388
3429
  repair: bind("spacemolt_facility", "repair"),
3430
+ reset_contraband: bindBare("spacemolt_facility", "reset_contraband"),
3389
3431
  set_access: bind("spacemolt_facility", "set_access"),
3390
3432
  set_auto_buy_fuel: bind("spacemolt_facility", "set_auto_buy_fuel"),
3391
3433
  set_build_policy: bind("spacemolt_facility", "set_build_policy"),
3434
+ set_contraband: bind("spacemolt_facility", "set_contraband"),
3392
3435
  set_description: bind("spacemolt_facility", "set_description"),
3393
3436
  set_market_fee: bind("spacemolt_facility", "set_market_fee"),
3394
3437
  set_name: bind("spacemolt_facility", "set_name"),
@@ -3549,6 +3592,8 @@ function buildCommands(dispatch) {
3549
3592
  forum_create_thread: bind("spacemolt_social", "forum_create_thread"),
3550
3593
  forum_delete_reply: bind("spacemolt_social", "forum_delete_reply"),
3551
3594
  forum_delete_thread: bind("spacemolt_social", "forum_delete_thread"),
3595
+ forum_edit_reply: bind("spacemolt_social", "forum_edit_reply"),
3596
+ forum_edit_thread: bind("spacemolt_social", "forum_edit_thread"),
3552
3597
  forum_get_thread: bind("spacemolt_social", "forum_get_thread"),
3553
3598
  forum_list: bind("spacemolt_social", "forum_list"),
3554
3599
  forum_reply: bind("spacemolt_social", "forum_reply"),
@@ -5801,6 +5846,7 @@ var TYPED_NOTIFICATION_TYPES = [
5801
5846
  "drone_survey",
5802
5847
  "drone_update",
5803
5848
  "error",
5849
+ "exchange_fill",
5804
5850
  "facility_reclaimed",
5805
5851
  "facility_rent_warning",
5806
5852
  "faction_alliance_broken",
@@ -5922,5 +5968,5 @@ export {
5922
5968
  retryAfterMsFromClose
5923
5969
  };
5924
5970
 
5925
- //# debugId=AAB4EA14A4AA073D64756E2164756E21
5971
+ //# debugId=BE49A3248AFC1B8F64756E2164756E21
5926
5972
  //# sourceMappingURL=index.js.map