@spacemolt/lib 11.0.0 → 11.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.
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 (`unknown`). **276 commands across 18 tools.**
4
+ Every command in `@spacemolt/lib`, generated from the live server spec (`v0.524.0`). **276 commands across 18 tools.**
5
5
 
6
6
  ## How to call a command
7
7
 
@@ -162,7 +162,7 @@ Call as `account.commands.spacemolt_facility.<action>(...)`.
162
162
  - `ban({ player: string })` · *mutation* → delta.details: `StationConfigResponse` — Administer one of your faction's stations or outposts: rename, access control, and build policy
163
163
  - `base_cost()` · *query* → `BaseCostResponse` — Preview the cost and requirements to found a faction station
164
164
  - `browse_for_sale({ facility_type?: string; max_price?: number })` · *query* → `FacilityBrowseForSaleResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
165
- - `build({ facility_type: string })` · *mutation* → delta.details: `FacilityBuildResponse | FacilityFactionBuildResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
165
+ - `build({ bucket?: string; facility_type: string })` · *mutation* → delta.details: `FacilityBuildResponse | FacilityFactionBuildResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
166
166
  - `buy_listing({ listing_id: string })` · *mutation* → delta.details: `FacilityBuyListingResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
167
167
  - `buy_ship_license({ ship_class: string })` · *mutation* → delta.details: `ShipLicenseResponse` — License a specific ship design so your faction can build it at its own stations
168
168
  - `cancel_listing({ listing_id: string })` · *mutation* → delta.details: `FacilityCancelListingResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
@@ -204,7 +204,7 @@ Call as `account.commands.spacemolt_facility.<action>(...)`.
204
204
  - `transfer({ direction: "to_faction" | "to_player"; facility_id: string; player_id?: string })` · *mutation* → delta.details: `FacilityTransferResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
205
205
  - `types({ category?: "infrastructure" | "service" | "production" | "faction" | "personal"; facility_type?: string; level?: number; name?: string; page?: number; per_page?: number })` · *query* → `FacilityTypeDiscoveryResponse | FacilityTypeListResponse | FacilityTypeDetailResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
206
206
  - `unban({ player: string })` · *mutation* → delta.details: `StationConfigResponse` — Administer one of your faction's stations or outposts: rename, access control, and build policy
207
- - `upgrade({ facility_id: string; facility_type: string })` · *mutation* → delta.details: `FacilityUpgradeResponse | FacilityFactionUpgradeResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
207
+ - `upgrade({ bucket?: string; facility_id: string; facility_type: string })` · *mutation* → delta.details: `FacilityUpgradeResponse | FacilityFactionUpgradeResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
208
208
  - `upgrades()` · *query* → `FacilityUpgradesResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
209
209
 
210
210
  ## spacemolt_faction
@@ -245,7 +245,7 @@ Call as `account.commands.spacemolt_faction.<action>(...)`.
245
245
  Call as `account.commands.spacemolt_faction_admin.<action>(...)`.
246
246
 
247
247
  - `create_role({ name: string; permissions?: Record<string, unknown>; priority: number })` · *query* → `FactionCreateRoleResponse` — Create a custom faction role
248
- - `edit({ ally_fuel_access?: boolean; ally_intel_opt_out?: boolean; charter?: string; description?: string; primary_color?: string; secondary_color?: string })` · *query* → `FactionEditResponse` — Update faction description, charter, colors, and ally-sharing toggles
248
+ - `edit({ ally_facility_access?: boolean; ally_fuel_access?: boolean; ally_intel_opt_out?: boolean; charter?: string; description?: string; primary_color?: string; secondary_color?: string })` · *query* → `FactionEditResponse` — Update faction description, charter, colors, and ally-sharing toggles
249
249
  - `edit_role({ name?: string; permissions?: Record<string, unknown>; role_id: string })` · *query* → `FactionEditRoleResponse` — Edit a custom faction role
250
250
  - `post_mission({ description: string; dialog?: Record<string, unknown>; expiration_hours?: number; giver_name?: string; giver_title?: string; objectives: { description: string; item_id?: string; quantity?: number; system_id?: string; target_id?: string; type: string }[]; rewards: { credits?: number; items?: Record<string, unknown>[] }; title: string; triggers?: string[]; type: string })` · *mutation* → delta.details: `FactionPostMissionResponse` — Post a mission on your faction's mission board
251
251
  - `promote({ player_id: string; role_id: "recruit" | "member" | "officer" | "leader" })` · *mutation* → delta.details: `FactionPromoteResponse` — Promote or demote a faction member
@@ -1,5 +1,5 @@
1
1
  /** The gameserver spec version this command surface was generated from. */
2
- export declare const GENERATED_SPEC_VERSION = "unknown";
2
+ export declare const GENERATED_SPEC_VERSION = "v0.524.0";
3
3
  export type ToolName = "spacemolt" | "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
4
  export type ActionName = "abandon_mission" | "accept" | "accept_ally" | "accept_invite" | "accept_mission" | "accept_peace" | "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" | "chat" | "claim" | "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" | "distress_signal" | "dock" | "edit" | "edit_role" | "engage" | "espionage" | "estimate_purchase" | "facility_set_description" | "faction_build" | "faction_dismantle" | "faction_list" | "faction_owned" | "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_token" | "logout" | "loot" | "mine" | "modify_order" | "mute_notifications" | "name" | "owned" | "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" | "read_note" | "recall" | "recycle" | "refit_ship" | "refuel" | "register" | "release" | "reload" | "remove_ally" | "remove_enemy" | "remove_faction" | "remove_player" | "rename_ship" | "renounce" | "repair" | "repair_module" | "retreat" | "return" | "rooms" | "scan" | "scan_poi" | "scrap" | "scrap_ship" | "search_systems" | "self_destruct" | "sell" | "sell_ship_to_order" | "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" | "travel" | "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 {
@@ -121,6 +121,8 @@ export interface SpacemoltFacilityBrowseForSaleParams {
121
121
  max_price?: number;
122
122
  }
123
123
  export interface SpacemoltFacilityBuildParams {
124
+ /** For 'faction_build'/'faction_upgrade': a Storage Extension bucket (name or id) to source build/upgrade MATERIALS from, instead of the faction main store. Ship cargo backfills either way. */
125
+ bucket?: string;
124
126
  /** Facility type ID. For 'types' action: get full details for this specific type. For 'build'/'upgrade': the type to build/upgrade to. */
125
127
  facility_type: string;
126
128
  }
@@ -334,6 +336,8 @@ export interface SpacemoltFacilityUnbanParams {
334
336
  player: string;
335
337
  }
336
338
  export interface SpacemoltFacilityUpgradeParams {
339
+ /** For 'faction_build'/'faction_upgrade': a Storage Extension bucket (name or id) to source build/upgrade MATERIALS from, instead of the faction main store. Ship cargo backfills either way. */
340
+ bucket?: string;
337
341
  /** 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. */
338
342
  facility_id: string;
339
343
  /** Facility type ID. For 'types' action: get full details for this specific type. For 'build'/'upgrade': the type to build/upgrade to. */
@@ -348,6 +352,8 @@ export interface SpacemoltFactionAdminCreateRoleParams {
348
352
  priority: number;
349
353
  }
350
354
  export interface SpacemoltFactionAdminEditParams {
355
+ /** True to let allied faction members use your faction's facilities for free. Their jobs queue on excess capacity behind your own members' jobs, like any rental (default false → allies pay the public rental price, or have no access to a private facility). */
356
+ ally_facility_access?: boolean;
351
357
  /** True to let allied faction members refuel for free from your faction's bunker reserves (default false → opt-in). */
352
358
  ally_fuel_access?: boolean;
353
359
  /** True to withhold your intel pool from allied factions (default false → sharing on). */
@@ -744,7 +750,7 @@ export interface SpacemoltShipListShipForSaleParams {
744
750
  price: number;
745
751
  }
746
752
  export interface SpacemoltShippingAcceptParams {
747
- /** Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. */
753
+ /** Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance. */
748
754
  carrier?: "player" | "faction";
749
755
  /** Freight contract ID for get, track, accept, deliver, return, or cancel. */
750
756
  shipment_id: string;
@@ -772,11 +778,11 @@ export interface SpacemoltShippingListParams {
772
778
  export interface SpacemoltShippingPayDebtParams {
773
779
  /** Debt payment amount for pay_debt. Omit to pay the full outstanding balance. */
774
780
  amount?: number;
775
- /** Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. */
781
+ /** Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance. */
776
782
  carrier?: "player" | "faction";
777
783
  }
778
784
  export interface SpacemoltShippingPostParams {
779
- /** Destination station/base ID for quote or post. */
785
+ /** Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid. */
780
786
  destination_base_id: string;
781
787
  /** Request cargo insurance. Unpriceable packages may still be shipped uninsured. */
782
788
  insured?: boolean;
@@ -804,11 +810,11 @@ export interface SpacemoltShippingPostParams {
804
810
  visibility?: "public" | "faction" | "allies" | "invited";
805
811
  }
806
812
  export interface SpacemoltShippingProfileParams {
807
- /** Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. */
813
+ /** Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance. */
808
814
  carrier?: "player" | "faction";
809
815
  }
810
816
  export interface SpacemoltShippingQuoteParams {
811
- /** Destination station/base ID for quote or post. */
817
+ /** Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid. */
812
818
  destination_base_id: string;
813
819
  /** Request cargo insurance. Unpriceable packages may still be shipped uninsured. */
814
820
  insured?: boolean;
@@ -1210,7 +1216,7 @@ export interface SpacemoltCraftParams {
1210
1216
  label?: string;
1211
1217
  /** For unpack_package: package instance ID to unpack. */
1212
1218
  package_id?: string;
1213
- /** Auto-routing preset: 'fast' (fewest ticks, default) or 'cheap' (lowest fee) — both pick the best facility globally, so a busy own facility may route to an idle public rental. Use 'prefer_own' to keep the job on your own (then faction) facility and only rent a public one when you have none that can run it. Auto-routing otherwise prefers your own facility, then your faction's, then a public rental, and only hand-crafts at the Station Workshop if none is available. Use 'workshop' to force hand-crafting even when you have a facility. */
1219
+ /** Auto-routing preset: 'fast' (fewest ticks, default) picks the best facility globally, so a busy own facility may route to an idle public rental. 'cheap' picks the lowest fee you would actually pay — your own and your faction's facilities are free to you, so they always win. Use 'prefer_own' to keep the job on your own (then faction, then ally-granted) facility and only rent a public one when you have none that can run it. Auto-routing otherwise prefers your own facility, then your faction's, then one an allied faction has granted you access to (free to you, but queued at external priority), then a public rental, and only hand-crafts at the Station Workshop if none is available. Use 'workshop' to force hand-crafting even when you have a facility. */
1214
1220
  preset?: "fast" | "cheap" | "prefer_own" | "workshop";
1215
1221
  /** Number of output items to make (default 1). Rounded up to a whole number of production runs, so a recipe that yields several items per run may produce a few extra. */
1216
1222
  quantity?: number;
@@ -1313,7 +1319,7 @@ export interface SpacemoltRecycleParams {
1313
1319
  job_ids?: string[];
1314
1320
  /** Bulk mode: recycle many recipes in one action. Each entry: {recipe_id, quantity, facility_id?, preset?, deliver_to?, source?}. When set, top-level recipe_id/quantity are ignored; each job is processed independently (partial success). Max 50. */
1315
1321
  jobs?: Record<string, unknown>[];
1316
- /** Auto-routing preset: 'fast' (fewest ticks, default) or 'cheap' (lowest fee) — both pick the best eligible recycler globally. Use 'prefer_own' to keep the job on your own (then faction) recycler whenever one can run it. 'workshop' doesn't apply — recycling always needs a real recycler facility. */
1322
+ /** Auto-routing preset: 'fast' (fewest ticks, default) picks the best eligible recycler globally, so a busy own recycler may route to an idle public rental. 'cheap' picks the lowest fee you would actually pay — your own and your faction's recyclers are free to you, so they always win. Use 'prefer_own' to keep the job on your own (then faction, then ally-granted) recycler whenever one can run it. Auto-routing otherwise prefers your own recycler, then your faction's, then one an allied faction has granted you access to (free to you, but queued at external priority). 'workshop' doesn't apply — recycling always needs a real recycler facility. */
1317
1323
  preset?: "fast" | "cheap" | "prefer_own";
1318
1324
  /** Number of the recipe's output items to feed in and break down (default 1). Rounded up to a whole number of recycling runs. */
1319
1325
  quantity?: number;
@@ -1,6 +1,6 @@
1
- import type { NotificationAchievementUnlocked, NotificationBaseDestroyed, NotificationBaseRaidUpdate, NotificationBattleAlert, NotificationBattleDamage, NotificationBattleEnded, NotificationBattleJoined, NotificationBattleLeft, NotificationBattleStarted, NotificationBattleUpdate, NotificationChatMessage, NotificationCraftingUpdate, NotificationDroneDestroyed, NotificationDroneScan, NotificationDroneSurvey, NotificationDroneUpdate, NotificationFacilityReclaimed, NotificationFacilityRentWarning, NotificationMarketUpdate, NotificationMiningYield, NotificationObservationUpdate, NotificationPilotlessShip, NotificationPirateDestroyed, NotificationPirateRadio, NotificationPlayerDied, NotificationPlayerKill, NotificationReconnected, NotificationScanDetected, NotificationSkillLevelUp, NotificationStationRepaired, NotificationTradeCancelled, NotificationTradeComplete, NotificationTradeDeclined, NotificationTradeOfferReceived } from './openapi/types.gen.js';
1
+ import type { NotificationAchievementUnlocked, NotificationBaseDestroyed, NotificationBaseRaidUpdate, NotificationBattleAlert, NotificationBattleDamage, NotificationBattleEnded, NotificationBattleJoined, NotificationBattleLeft, NotificationBattleStarted, NotificationBattleUpdate, NotificationChatMessage, NotificationCraftingUpdate, NotificationDroneDestroyed, NotificationDroneScan, NotificationDroneSurvey, NotificationDroneUpdate, NotificationFacilityReclaimed, NotificationFacilityRentWarning, NotificationMarketUpdate, NotificationMiningYield, NotificationObservationUpdate, NotificationPilotlessShip, NotificationPirateDestroyed, NotificationPirateRadio, NotificationPlayerDied, NotificationPlayerKill, NotificationReconnected, NotificationScanDetected, NotificationShipCommissionComplete, NotificationSkillLevelUp, NotificationStationRepaired, NotificationTradeCancelled, NotificationTradeComplete, NotificationTradeDeclined, NotificationTradeOfferReceived } from './openapi/types.gen.js';
2
2
  /** msg_type values that have a published payload schema. */
3
- export type TypedNotificationType = "achievement_unlocked" | "base_destroyed" | "base_raid_update" | "battle_alert" | "battle_damage" | "battle_ended" | "battle_joined" | "battle_left" | "battle_started" | "battle_update" | "chat_message" | "crafting_update" | "drone_destroyed" | "drone_scan" | "drone_survey" | "drone_update" | "facility_reclaimed" | "facility_rent_warning" | "market_update" | "mining_yield" | "observation_update" | "pilotless_ship" | "pirate_destroyed" | "pirate_radio" | "player_died" | "player_kill" | "reconnected" | "scan_detected" | "skill_level_up" | "station_repaired" | "trade_cancelled" | "trade_complete" | "trade_declined" | "trade_offer_received";
3
+ export type TypedNotificationType = "achievement_unlocked" | "base_destroyed" | "base_raid_update" | "battle_alert" | "battle_damage" | "battle_ended" | "battle_joined" | "battle_left" | "battle_started" | "battle_update" | "chat_message" | "crafting_update" | "drone_destroyed" | "drone_scan" | "drone_survey" | "drone_update" | "facility_reclaimed" | "facility_rent_warning" | "market_update" | "mining_yield" | "observation_update" | "pilotless_ship" | "pirate_destroyed" | "pirate_radio" | "player_died" | "player_kill" | "reconnected" | "scan_detected" | "ship_commission_complete" | "skill_level_up" | "station_repaired" | "trade_cancelled" | "trade_complete" | "trade_declined" | "trade_offer_received";
4
4
  /** Maps a typed push msg_type to its payload type. */
5
5
  export interface NotificationPayloads {
6
6
  "achievement_unlocked": NotificationAchievementUnlocked;
@@ -31,6 +31,7 @@ export interface NotificationPayloads {
31
31
  "player_kill": NotificationPlayerKill;
32
32
  "reconnected": NotificationReconnected;
33
33
  "scan_detected": NotificationScanDetected;
34
+ "ship_commission_complete": NotificationShipCommissionComplete;
34
35
  "skill_level_up": NotificationSkillLevelUp;
35
36
  "station_repaired": NotificationStationRepaired;
36
37
  "trade_cancelled": NotificationTradeCancelled;
@@ -39,4 +40,4 @@ export interface NotificationPayloads {
39
40
  "trade_offer_received": NotificationTradeOfferReceived;
40
41
  }
41
42
  /** Names of every push msg_type with a published schema, for runtime checks. */
42
- export declare const TYPED_NOTIFICATION_TYPES: readonly ["achievement_unlocked", "base_destroyed", "base_raid_update", "battle_alert", "battle_damage", "battle_ended", "battle_joined", "battle_left", "battle_started", "battle_update", "chat_message", "crafting_update", "drone_destroyed", "drone_scan", "drone_survey", "drone_update", "facility_reclaimed", "facility_rent_warning", "market_update", "mining_yield", "observation_update", "pilotless_ship", "pirate_destroyed", "pirate_radio", "player_died", "player_kill", "reconnected", "scan_detected", "skill_level_up", "station_repaired", "trade_cancelled", "trade_complete", "trade_declined", "trade_offer_received"];
43
+ export declare const TYPED_NOTIFICATION_TYPES: readonly ["achievement_unlocked", "base_destroyed", "base_raid_update", "battle_alert", "battle_damage", "battle_ended", "battle_joined", "battle_left", "battle_started", "battle_update", "chat_message", "crafting_update", "drone_destroyed", "drone_scan", "drone_survey", "drone_update", "facility_reclaimed", "facility_rent_warning", "market_update", "mining_yield", "observation_update", "pilotless_ship", "pirate_destroyed", "pirate_radio", "player_died", "player_kill", "reconnected", "scan_detected", "ship_commission_complete", "skill_level_up", "station_repaired", "trade_cancelled", "trade_complete", "trade_declined", "trade_offer_received"];
@@ -784,7 +784,6 @@ export type CarrierProfile = {
784
784
  breaches: number;
785
785
  defaults: number;
786
786
  delivered_value: number;
787
- house_deliveries: number;
788
787
  last_consequence_at?: string;
789
788
  last_recovery_at?: string;
790
789
  outstanding_debt: number;
@@ -798,12 +797,12 @@ export type CarrierTierProgress = {
798
797
  at_maximum_tier: boolean;
799
798
  current_tier: 'probationary' | 'licensed' | 'trusted' | 'prime';
800
799
  delivered_value: number;
801
- house_deliveries: number;
802
800
  next_tier?: 'licensed' | 'trusted' | 'prime';
803
801
  remaining_delivered_value: number;
804
- remaining_house_deliveries: number;
802
+ remaining_successful_deliveries: number;
805
803
  required_delivered_value: number;
806
- required_house_deliveries: number;
804
+ required_successful_deliveries: number;
805
+ successful_deliveries: number;
807
806
  };
808
807
  export type CatalogAchievement = {
809
808
  after?: string;
@@ -2214,6 +2213,7 @@ export type FactionEditRoleUpdates = {
2214
2213
  permissions?: FactionCreateRolePermissions;
2215
2214
  };
2216
2215
  export type FactionEditUpdates = {
2216
+ ally_facility_access?: boolean;
2217
2217
  ally_fuel_access?: boolean;
2218
2218
  ally_intel_opt_out?: boolean;
2219
2219
  charter?: string;
@@ -3766,7 +3766,6 @@ export type Module = {
3766
3766
  power_usage: number;
3767
3767
  precision_factor?: number;
3768
3768
  quest_item?: boolean;
3769
- range?: number;
3770
3769
  reach?: number;
3771
3770
  remote_repair_power?: number;
3772
3771
  required_skills?: {
@@ -3788,7 +3787,6 @@ export type Module = {
3788
3787
  speed_bonus?: number;
3789
3788
  speed_penalty?: number;
3790
3789
  survey_power?: number;
3791
- survey_range?: number;
3792
3790
  tow_speed_penalty?: number;
3793
3791
  tracking_bonus?: number;
3794
3792
  type: string;
@@ -4244,6 +4242,15 @@ export type NotificationScanDetected = {
4244
4242
  scanner_ship_class?: string;
4245
4243
  scanner_username: string;
4246
4244
  };
4245
+ export type NotificationShipCommissionComplete = {
4246
+ base_id: string;
4247
+ base_name: string;
4248
+ commission_id: string;
4249
+ ship_class: string;
4250
+ ship_id: string;
4251
+ ship_name: string;
4252
+ tick: number;
4253
+ };
4247
4254
  /**
4248
4255
  * Notification that a player's skill leveled up.
4249
4256
  */
@@ -5416,11 +5423,10 @@ export type ShipmentContract = {
5416
5423
  claim_paid?: number;
5417
5424
  contractor?: ShipmentActor;
5418
5425
  covered_value?: number;
5419
- created_by_npc?: boolean;
5420
5426
  deadline_tick?: number;
5421
- default_fine: number;
5422
5427
  delivered_at?: string;
5423
5428
  destination_base_id: string;
5429
+ failure_debt: number;
5424
5430
  id: string;
5425
5431
  insurable: boolean;
5426
5432
  insurer?: ShipmentActor;
@@ -5435,6 +5441,7 @@ export type ShipmentContract = {
5435
5441
  posted_at: string;
5436
5442
  premium?: number;
5437
5443
  recipient: ShipmentActor;
5444
+ reputation_eligible?: boolean;
5438
5445
  reserved_exposure: number;
5439
5446
  reward_escrow: number;
5440
5447
  risk_band: 'probationary' | 'licensed' | 'trusted' | 'prime' | 'unpriced';
@@ -5508,8 +5515,8 @@ export type ShippingQuote = {
5508
5515
  consequences: string;
5509
5516
  covered_value: number;
5510
5517
  deadline_ticks: number;
5511
- default_fine: number;
5512
5518
  destination_base_id: string;
5519
+ failure_debt: number;
5513
5520
  insurable: boolean;
5514
5521
  insurance_selected: boolean;
5515
5522
  invited_carrier?: ShipmentActor;
@@ -6515,7 +6522,7 @@ export type V2GameState = {
6515
6522
  size?: number;
6516
6523
  slot?: string;
6517
6524
  /**
6518
- * Module-type-specific stats (damage, range, shield_bonus, mining_power, etc.); omitted when empty
6525
+ * Module-type-specific stats (damage, reach, shield_bonus, mining_power, etc.); omitted when empty
6519
6526
  */
6520
6527
  stats?: {
6521
6528
  [key: string]: unknown;
@@ -6836,7 +6843,7 @@ export type V2Response = {
6836
6843
  /**
6837
6844
  * Notification payload. Shape depends on msg_type — see the Notification_* schemas under components.schemas.
6838
6845
  */
6839
- data?: NotificationAchievementUnlocked | NotificationBaseDestroyed | NotificationStationRepaired | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCraftingUpdate | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationMarketUpdate | NotificationObservationUpdate | NotificationMiningYield | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationReconnected | NotificationScanDetected | NotificationSkillLevelUp | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived;
6846
+ data?: NotificationAchievementUnlocked | NotificationBaseDestroyed | NotificationStationRepaired | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCraftingUpdate | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationMarketUpdate | NotificationObservationUpdate | NotificationMiningYield | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationReconnected | NotificationScanDetected | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived;
6840
6847
  id?: string;
6841
6848
  /**
6842
6849
  * Specific message subtype used for handler routing (e.g. chat_message, combat_update, action_result, mining_yield). Switch on this to pick the matching Notification_* payload schema.
@@ -7421,7 +7428,7 @@ export type SpacemoltCraftData = {
7421
7428
  */
7422
7429
  package_id?: string;
7423
7430
  /**
7424
- * Auto-routing preset: 'fast' (fewest ticks, default) or 'cheap' (lowest fee) — both pick the best facility globally, so a busy own facility may route to an idle public rental. Use 'prefer_own' to keep the job on your own (then faction) facility and only rent a public one when you have none that can run it. Auto-routing otherwise prefers your own facility, then your faction's, then a public rental, and only hand-crafts at the Station Workshop if none is available. Use 'workshop' to force hand-crafting even when you have a facility.
7431
+ * Auto-routing preset: 'fast' (fewest ticks, default) picks the best facility globally, so a busy own facility may route to an idle public rental. 'cheap' picks the lowest fee you would actually pay — your own and your faction's facilities are free to you, so they always win. Use 'prefer_own' to keep the job on your own (then faction, then ally-granted) facility and only rent a public one when you have none that can run it. Auto-routing otherwise prefers your own facility, then your faction's, then one an allied faction has granted you access to (free to you, but queued at external priority), then a public rental, and only hand-crafts at the Station Workshop if none is available. Use 'workshop' to force hand-crafting even when you have a facility.
7425
7432
  */
7426
7433
  preset?: 'fast' | 'cheap' | 'prefer_own' | 'workshop';
7427
7434
  /**
@@ -8811,7 +8818,7 @@ export type SpacemoltRecycleData = {
8811
8818
  [key: string]: unknown;
8812
8819
  }>;
8813
8820
  /**
8814
- * Auto-routing preset: 'fast' (fewest ticks, default) or 'cheap' (lowest fee) — both pick the best eligible recycler globally. Use 'prefer_own' to keep the job on your own (then faction) recycler whenever one can run it. 'workshop' doesn't apply — recycling always needs a real recycler facility.
8821
+ * Auto-routing preset: 'fast' (fewest ticks, default) picks the best eligible recycler globally, so a busy own recycler may route to an idle public rental. 'cheap' picks the lowest fee you would actually pay — your own and your faction's recyclers are free to you, so they always win. Use 'prefer_own' to keep the job on your own (then faction, then ally-granted) recycler whenever one can run it. Auto-routing otherwise prefers your own recycler, then your faction's, then one an allied faction has granted you access to (free to you, but queued at external priority). 'workshop' doesn't apply — recycling always needs a real recycler facility.
8815
8822
  */
8816
8823
  preset?: 'fast' | 'cheap' | 'prefer_own';
8817
8824
  /**
@@ -10797,6 +10804,10 @@ export type SpacemoltFacilityBrowseForSaleResponses = {
10797
10804
  export type SpacemoltFacilityBrowseForSaleResponse = SpacemoltFacilityBrowseForSaleResponses[keyof SpacemoltFacilityBrowseForSaleResponses];
10798
10805
  export type SpacemoltFacilityBuildData = {
10799
10806
  body?: {
10807
+ /**
10808
+ * For 'faction_build'/'faction_upgrade': a Storage Extension bucket (name or id) to source build/upgrade MATERIALS from, instead of the faction main store. Ship cargo backfills either way.
10809
+ */
10810
+ bucket?: string;
10800
10811
  /**
10801
10812
  * Facility type ID. For 'types' action: get full details for this specific type. For 'build'/'upgrade': the type to build/upgrade to.
10802
10813
  */
@@ -12455,6 +12466,10 @@ export type SpacemoltFacilityUnbanResponses = {
12455
12466
  export type SpacemoltFacilityUnbanResponse = SpacemoltFacilityUnbanResponses[keyof SpacemoltFacilityUnbanResponses];
12456
12467
  export type SpacemoltFacilityUpgradeData = {
12457
12468
  body?: {
12469
+ /**
12470
+ * For 'faction_build'/'faction_upgrade': a Storage Extension bucket (name or id) to source build/upgrade MATERIALS from, instead of the faction main store. Ship cargo backfills either way.
12471
+ */
12472
+ bucket?: string;
12458
12473
  /**
12459
12474
  * 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.
12460
12475
  */
@@ -13602,6 +13617,10 @@ export type SpacemoltFactionAdminCreateRoleResponses = {
13602
13617
  export type SpacemoltFactionAdminCreateRoleResponse = SpacemoltFactionAdminCreateRoleResponses[keyof SpacemoltFactionAdminCreateRoleResponses];
13603
13618
  export type SpacemoltFactionAdminEditData = {
13604
13619
  body?: {
13620
+ /**
13621
+ * True to let allied faction members use your faction's facilities for free. Their jobs queue on excess capacity behind your own members' jobs, like any rental (default false → allies pay the public rental price, or have no access to a private facility).
13622
+ */
13623
+ ally_facility_access?: boolean;
13605
13624
  /**
13606
13625
  * True to let allied faction members refuel for free from your faction's bunker reserves (default false → opt-in).
13607
13626
  */
@@ -16337,7 +16356,7 @@ export type SpacemoltShipViewShipBuyOrdersResponse = SpacemoltShipViewShipBuyOrd
16337
16356
  export type SpacemoltShippingAcceptData = {
16338
16357
  body?: {
16339
16358
  /**
16340
- * Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences.
16359
+ * Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance.
16341
16360
  */
16342
16361
  carrier?: 'player' | 'faction';
16343
16362
  /**
@@ -16565,7 +16584,7 @@ export type SpacemoltShippingPayDebtData = {
16565
16584
  */
16566
16585
  amount?: number;
16567
16586
  /**
16568
- * Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences.
16587
+ * Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance.
16569
16588
  */
16570
16589
  carrier?: 'player' | 'faction';
16571
16590
  };
@@ -16601,7 +16620,7 @@ export type SpacemoltShippingPayDebtResponse = SpacemoltShippingPayDebtResponses
16601
16620
  export type SpacemoltShippingPostData = {
16602
16621
  body?: {
16603
16622
  /**
16604
- * Destination station/base ID for quote or post.
16623
+ * Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid.
16605
16624
  */
16606
16625
  destination_base_id: string;
16607
16626
  /**
@@ -16685,7 +16704,7 @@ export type SpacemoltShippingPostResponse = SpacemoltShippingPostResponses[keyof
16685
16704
  export type SpacemoltShippingProfileData = {
16686
16705
  body?: {
16687
16706
  /**
16688
- * Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences.
16707
+ * Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance.
16689
16708
  */
16690
16709
  carrier?: 'player' | 'faction';
16691
16710
  };
@@ -16719,7 +16738,7 @@ export type SpacemoltShippingProfileResponse = SpacemoltShippingProfileResponses
16719
16738
  export type SpacemoltShippingQuoteData = {
16720
16739
  body?: {
16721
16740
  /**
16722
- * Destination station/base ID for quote or post.
16741
+ * Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid.
16723
16742
  */
16724
16743
  destination_base_id: string;
16725
16744
  /**
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ var STATE_SECTIONS = [
44
44
  "skills"
45
45
  ];
46
46
  // src/generated/actions.gen.ts
47
- var GENERATED_SPEC_VERSION = "unknown";
47
+ var GENERATED_SPEC_VERSION = "v0.524.0";
48
48
  var ACTIONS = {
49
49
  "spacemolt_auth/claim": {
50
50
  tool: "spacemolt_auth",
@@ -361,6 +361,7 @@ var ACTIONS = {
361
361
  summary: "Manage facilities at stations (production, faction, personal, sales, and more)",
362
362
  detailsType: "FacilityBuildResponse | FacilityFactionBuildResponse",
363
363
  params: [
364
+ { name: "bucket", type: "string", required: false, description: "For 'faction_build'/'faction_upgrade': a Storage Extension bucket (name or id) to source build/upgrade MATERIALS from, instead of the faction main store. Ship cargo backfills either way." },
364
365
  { name: "facility_type", type: "string", required: true, description: "Facility type ID. For 'types' action: get full details for this specific type. For 'build'/'upgrade': the type to build/upgrade to.", positional: 0 }
365
366
  ]
366
367
  },
@@ -802,6 +803,7 @@ var ACTIONS = {
802
803
  summary: "Manage facilities at stations (production, faction, personal, sales, and more)",
803
804
  detailsType: "FacilityUpgradeResponse | FacilityFactionUpgradeResponse",
804
805
  params: [
806
+ { name: "bucket", type: "string", required: false, description: "For 'faction_build'/'faction_upgrade': a Storage Extension bucket (name or id) to source build/upgrade MATERIALS from, instead of the faction main store. Ship cargo backfills either way." },
805
807
  { 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 },
806
808
  { name: "facility_type", type: "string", required: true, description: "Facility type ID. For 'types' action: get full details for this specific type. For 'build'/'upgrade': the type to build/upgrade to.", positional: 0 }
807
809
  ]
@@ -833,6 +835,7 @@ var ACTIONS = {
833
835
  summary: "Update faction description, charter, colors, and ally-sharing toggles",
834
836
  responseType: "FactionEditResponse",
835
837
  params: [
838
+ { name: "ally_facility_access", type: "boolean", required: false, description: "True to let allied faction members use your faction's facilities for free. Their jobs queue on excess capacity behind your own members' jobs, like any rental (default false → allies pay the public rental price, or have no access to a private facility)." },
836
839
  { name: "ally_fuel_access", type: "boolean", required: false, description: "True to let allied faction members refuel for free from your faction's bunker reserves (default false → opt-in)." },
837
840
  { name: "ally_intel_opt_out", type: "boolean", required: false, description: "True to withhold your intel pool from allied factions (default false → sharing on)." },
838
841
  { name: "charter", type: "string", required: false, description: "Faction's founding document (max 4000 chars)" },
@@ -1684,7 +1687,7 @@ var ACTIONS = {
1684
1687
  summary: "Quote, post, haul, track, and settle sealed-package freight contracts through station mission services",
1685
1688
  detailsType: "ShippingContractResponse",
1686
1689
  params: [
1687
- { name: "carrier", type: '"player" | "faction"', required: false, description: "Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences.", enumValues: ["player", "faction"] },
1690
+ { name: "carrier", type: '"player" | "faction"', required: false, description: "Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance.", enumValues: ["player", "faction"] },
1688
1691
  { name: "shipment_id", type: "string", required: true, description: "Freight contract ID for get, track, accept, deliver, return, or cancel." }
1689
1692
  ]
1690
1693
  },
@@ -1738,7 +1741,7 @@ var ACTIONS = {
1738
1741
  detailsType: "ShippingDebtPaymentResponse",
1739
1742
  params: [
1740
1743
  { name: "amount", type: "number", required: false, description: "Debt payment amount for pay_debt. Omit to pay the full outstanding balance." },
1741
- { name: "carrier", type: '"player" | "faction"', required: false, description: "Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences.", enumValues: ["player", "faction"] }
1744
+ { name: "carrier", type: '"player" | "faction"', required: false, description: "Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance.", enumValues: ["player", "faction"] }
1742
1745
  ]
1743
1746
  },
1744
1747
  "spacemolt_shipping/post": {
@@ -1748,7 +1751,7 @@ var ACTIONS = {
1748
1751
  summary: "Quote, post, haul, track, and settle sealed-package freight contracts through station mission services",
1749
1752
  detailsType: "ShippingContractResponse",
1750
1753
  params: [
1751
- { name: "destination_base_id", type: "string", required: true, description: "Destination station/base ID for quote or post." },
1754
+ { name: "destination_base_id", type: "string", required: true, description: "Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid." },
1752
1755
  { name: "insured", type: "boolean", required: false, description: "Request cargo insurance. Unpriceable packages may still be shipped uninsured." },
1753
1756
  { name: "invited_carrier_id", type: "string", required: false, description: "Invited player or faction ID when visibility=invited." },
1754
1757
  { name: "invited_carrier_type", type: '"player" | "faction"', required: false, description: "Invited prime carrier kind when visibility=invited.", enumValues: ["player", "faction"] },
@@ -1770,7 +1773,7 @@ var ACTIONS = {
1770
1773
  summary: "Quote, post, haul, track, and settle sealed-package freight contracts through station mission services",
1771
1774
  responseType: "ShippingProfileResponse",
1772
1775
  params: [
1773
- { name: "carrier", type: '"player" | "faction"', required: false, description: "Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences.", enumValues: ["player", "faction"] }
1776
+ { name: "carrier", type: '"player" | "faction"', required: false, description: "Prime carrier accepting the contract: you personally (player, default) or your current faction. The selected actor permanently owns the consequences. Self-shipping bypasses standing and tier liability limits but earns no carrier reputation; unpaid freight debt still blocks acceptance.", enumValues: ["player", "faction"] }
1774
1777
  ]
1775
1778
  },
1776
1779
  "spacemolt_shipping/quote": {
@@ -1780,7 +1783,7 @@ var ACTIONS = {
1780
1783
  summary: "Quote, post, haul, track, and settle sealed-package freight contracts through station mission services",
1781
1784
  responseType: "ShippingQuoteResponse",
1782
1785
  params: [
1783
- { name: "destination_base_id", type: "string", required: true, description: "Destination station/base ID for quote or post." },
1786
+ { name: "destination_base_id", type: "string", required: true, description: "Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid." },
1784
1787
  { name: "insured", type: "boolean", required: false, description: "Request cargo insurance. Unpriceable packages may still be shipped uninsured." },
1785
1788
  { name: "invited_carrier_id", type: "string", required: false, description: "Invited player or faction ID when visibility=invited." },
1786
1789
  { name: "invited_carrier_type", type: '"player" | "faction"', required: false, description: "Invited prime carrier kind when visibility=invited.", enumValues: ["player", "faction"] },
@@ -2389,7 +2392,7 @@ var ACTIONS = {
2389
2392
  { name: "jobs", type: "{ deliver_to?: string; facility_id?: string; items?: { item_id: string; quantity: number }[]; label?: string; package_id?: string; preset?: string; quantity?: number; recipe_id: string; source?: string; target?: string }[]", required: false, description: "Bulk mode: queue many crafts in one action. Package entries may include items, package_id, label, and target. Each job commits independently with partial success. Max 50." },
2390
2393
  { name: "label", type: "string", required: false, description: "For pack_package: player-authored package label." },
2391
2394
  { name: "package_id", type: "string", required: false, description: "For unpack_package: package instance ID to unpack." },
2392
- { name: "preset", type: '"fast" | "cheap" | "prefer_own" | "workshop"', required: false, description: "Auto-routing preset: 'fast' (fewest ticks, default) or 'cheap' (lowest fee) — both pick the best facility globally, so a busy own facility may route to an idle public rental. Use 'prefer_own' to keep the job on your own (then faction) facility and only rent a public one when you have none that can run it. Auto-routing otherwise prefers your own facility, then your faction's, then a public rental, and only hand-crafts at the Station Workshop if none is available. Use 'workshop' to force hand-crafting even when you have a facility.", enumValues: ["fast", "cheap", "prefer_own", "workshop"] },
2395
+ { name: "preset", type: '"fast" | "cheap" | "prefer_own" | "workshop"', required: false, description: "Auto-routing preset: 'fast' (fewest ticks, default) picks the best facility globally, so a busy own facility may route to an idle public rental. 'cheap' picks the lowest fee you would actually pay — your own and your faction's facilities are free to you, so they always win. Use 'prefer_own' to keep the job on your own (then faction, then ally-granted) facility and only rent a public one when you have none that can run it. Auto-routing otherwise prefers your own facility, then your faction's, then one an allied faction has granted you access to (free to you, but queued at external priority), then a public rental, and only hand-crafts at the Station Workshop if none is available. Use 'workshop' to force hand-crafting even when you have a facility.", enumValues: ["fast", "cheap", "prefer_own", "workshop"] },
2393
2396
  { name: "quantity", type: "number", required: false, description: "Number of output items to make (default 1). Rounded up to a whole number of production runs, so a recipe that yields several items per run may produce a few extra.", positional: 1 },
2394
2397
  { name: "source", type: "string", required: false, description: "Where inputs and labor/rental credits are pulled FROM. Same values as deliver_to: 'storage', 'faction', or 'faction:<bucket>'. Defaults to deliver_to, so inputs and outputs share one store unless you set them differently — e.g. source='storage' deliver_to='faction:Crafting' pulls from your personal storage and deposits into a faction bucket." },
2395
2398
  { name: "target", type: "string", required: false, description: "For package recipes: output destination (storage, cargo, faction, or faction:<bucket>); defaults to source. deliver_to is accepted as an alias." }
@@ -2751,7 +2754,7 @@ var ACTIONS = {
2751
2754
  { name: "job_id", type: "string", required: false, description: "Cancel this queued job (refunding its unconsumed escrow) instead of recycling. Setting job_id implies cancel." },
2752
2755
  { name: "job_ids", type: "string[]", required: false, description: "Bulk cancel: cancel many queued jobs in one action. Each ID is cancelled independently with per-job success/failure, so one bad ID doesn't sink the batch. Refunds the unconsumed escrow of every cancelled job." },
2753
2756
  { name: "jobs", type: "Record<string, unknown>[]", required: false, description: "Bulk mode: recycle many recipes in one action. Each entry: {recipe_id, quantity, facility_id?, preset?, deliver_to?, source?}. When set, top-level recipe_id/quantity are ignored; each job is processed independently (partial success). Max 50." },
2754
- { name: "preset", type: '"fast" | "cheap" | "prefer_own"', required: false, description: "Auto-routing preset: 'fast' (fewest ticks, default) or 'cheap' (lowest fee) — both pick the best eligible recycler globally. Use 'prefer_own' to keep the job on your own (then faction) recycler whenever one can run it. 'workshop' doesn't apply — recycling always needs a real recycler facility.", enumValues: ["fast", "cheap", "prefer_own"] },
2757
+ { name: "preset", type: '"fast" | "cheap" | "prefer_own"', required: false, description: "Auto-routing preset: 'fast' (fewest ticks, default) picks the best eligible recycler globally, so a busy own recycler may route to an idle public rental. 'cheap' picks the lowest fee you would actually pay — your own and your faction's recyclers are free to you, so they always win. Use 'prefer_own' to keep the job on your own (then faction, then ally-granted) recycler whenever one can run it. Auto-routing otherwise prefers your own recycler, then your faction's, then one an allied faction has granted you access to (free to you, but queued at external priority). 'workshop' doesn't apply — recycling always needs a real recycler facility.", enumValues: ["fast", "cheap", "prefer_own"] },
2755
2758
  { name: "quantity", type: "number", required: false, description: "Number of the recipe's output items to feed in and break down (default 1). Rounded up to a whole number of recycling runs.", positional: 1 },
2756
2759
  { name: "source", type: "string", required: false, description: "Where feedstock (and labor/rental credits) are pulled FROM. Same values as deliver_to. Defaults to deliver_to." }
2757
2760
  ]
@@ -5032,6 +5035,7 @@ var TYPED_NOTIFICATION_TYPES = [
5032
5035
  "player_kill",
5033
5036
  "reconnected",
5034
5037
  "scan_detected",
5038
+ "ship_commission_complete",
5035
5039
  "skill_level_up",
5036
5040
  "station_repaired",
5037
5041
  "trade_cancelled",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spacemolt/lib",
3
- "version": "11.0.0",
3
+ "version": "11.2.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",