@spacemolt/lib 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/COMMANDS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <!-- AUTO-GENERATED by scripts/generate.ts from openapi.json. DO NOT EDIT. -->
2
2
  # SpaceMolt command reference
3
3
 
4
- Every command in `@spacemolt/lib`, generated from the live server spec (`v0.508.0`). **267 commands across 17 tools.**
4
+ Every command in `@spacemolt/lib`, generated from the live server spec (`v0.512.0`). **267 commands across 17 tools.**
5
5
 
6
6
  ## How to call a command
7
7
 
@@ -49,7 +49,7 @@ Call as `account.commands.spacemolt.<action>(...)`.
49
49
  - `cloak({ enable?: boolean; quantity?: number })` · *mutation* → delta.details: `CloakResponse` — Toggle cloaking device
50
50
  - `complete_mission({ id: string })` · *mutation* → delta.details: `CompleteMissionResponse` — Complete a mission and claim rewards
51
51
  - `completed_missions()` · *query* → `CompletedMissionsResponse` — List all missions you have completed
52
- - `craft({ count?: number; deliver_to?: string; dry_run?: boolean; facility_id?: string; id?: string; job_id?: string; job_ids?: string[]; jobs?: Record<string, unknown>[]; preset?: "fast" | "cheap" | "prefer_own" | "workshop"; quantity?: number; source?: string })` · *mutation* → delta.details: `CraftJobResponse` — Queue a crafting job (auto-routes to your own/faction facility, or hand-crafts at the Station Workshop)
52
+ - `craft({ count?: number; deliver_to?: string; dry_run?: boolean; facility_id?: string; id?: string; items?: { item_id: string; quantity: number }[]; job_id?: string; job_ids?: string[]; jobs?: { 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 }[]; label?: string; package_id?: string; preset?: "fast" | "cheap" | "prefer_own" | "workshop"; quantity?: number; source?: string; target?: string })` · *mutation* → delta.details: `CraftJobResponse` — Queue a crafting job (auto-routes to your own/faction facility, or hand-crafts at the Station Workshop)
53
53
  - `decline_mission({ id?: string; mission_id?: string })` · *query* → `DeclineMissionResponse` — Decline a mission and hear the NPC's response
54
54
  - `distress_signal({ distress_type?: "fuel" | "repair" | "combat" })` · *mutation* → delta.details: `DistressSignalResponse` — Broadcast a distress signal to nearby players for emergency rescue
55
55
  - `dock()` · *mutation* → delta.details: `DockResponse` — Dock at a base
@@ -79,7 +79,7 @@ Call as `account.commands.spacemolt.<action>(...)`.
79
79
  - `get_tax_estimate()` · *query* → `TaxEstimateResponse` — Preview what taxes you'd owe right now
80
80
  - `get_version({ count?: number; id?: string; page?: number; text?: string })` · *query* → `GetVersionResponse` — Get game version and release notes, with optional changelog pagination
81
81
  - `hunt({ id: string })` · *mutation* → delta.details: `HuntResponse` — Hunt a wildlife creature to start a battle
82
- - `inspect({ id: string })` · *query* → `InspectResponse` — Inspect an item, module, ship class, system, visible POI, or docked base by ID
82
+ - `inspect({ id: string })` · *query* → `InspectResponse` — Inspect a visible package, item, module, ship class, system, POI, or docked base by ID
83
83
  - `install_mod({ id: string })` · *mutation* → delta.details: `InstallModResponse` — Install a module on your ship
84
84
  - `jettison({ id?: string; items?: { item_id: string; quantity: number }[]; quantity?: number })` · *mutation* → delta.details: `JettisonResponse` — Jettison items from cargo into space
85
85
  - `jump({ id: string })` · *mutation* → delta.details: `JumpResponse` — Jump to an adjacent star system, or plot a numeric bearing with a Pathfinder Drive
@@ -176,7 +176,7 @@ Call as `account.commands.spacemolt_facility.<action>(...)`.
176
176
  - `faction_owned()` · *query* → `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
177
177
  - `faction_upgrade({ bucket?: string; facility_id: string; facility_type: string })` · *mutation* → delta.details: `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
178
178
  - `found_station({ name: string; public_access?: boolean })` · *mutation* → delta.details: `BuildBaseResponse` — Found a faction-owned station at your current point of interest in lawless space
179
- - `job_add({ deliver_to?: string; direction?: "forward" | "reverse"; facility_id: string; quantity?: number; recipe_id: string; source?: string })` · *mutation* → delta.details: `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
179
+ - `job_add({ deliver_to?: string; direction?: "forward" | "reverse"; facility_id: string; items?: { item_id: string; quantity: number }[]; label?: string; package_id?: string; quantity?: number; recipe_id: string; source?: string; target?: string })` · *mutation* → delta.details: `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
180
180
  - `job_cancel({ job_id?: string; job_ids?: string[] })` · *mutation* → delta.details: `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
181
181
  - `job_list({ facility_id: string })` · *query* → `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
182
182
  - `job_reorder({ facility_id: string; job_id: string; position?: number })` · *mutation* → delta.details: `FacilityResponse` — Manage facilities at stations (production, faction, personal, sales, and more)
@@ -1,5 +1,5 @@
1
1
  /** The gameserver spec version this command surface was generated from. */
2
- export declare const GENERATED_SPEC_VERSION = "v0.508.0";
2
+ export declare const GENERATED_SPEC_VERSION = "v0.512.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_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_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" | "deploy" | "deploy_outpost" | "deposit" | "disassemble" | "disband" | "disembark" | "dismantle" | "distress_signal" | "dock" | "edit" | "edit_role" | "engage" | "espionage" | "estimate_purchase" | "facility_set_description" | "faction_build" | "faction_disassemble" | "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" | "personal_build" | "personal_decorate" | "personal_visit" | "petition" | "place_ship_buy_order" | "policies" | "post_mission" | "prepay_tax" | "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" | "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" | "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 {
@@ -191,12 +191,23 @@ export interface SpacemoltFacilityJobAddParams {
191
191
  direction?: "forward" | "reverse";
192
192
  /** Facility instance ID (required for 'upgrade', 'dismantle', 'disassemble', 'faction_dismantle', 'faction_disassemble', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs. */
193
193
  facility_id: string;
194
+ /** For job_add pack_package: selected manifest items. */
195
+ items?: {
196
+ item_id: string;
197
+ quantity: number;
198
+ }[];
199
+ /** For job_add pack_package: player label. */
200
+ label?: string;
201
+ /** For job_add unpack_package: package ID. */
202
+ package_id?: string;
194
203
  /** For 'job_add': number of runs to queue. */
195
204
  quantity?: number;
196
205
  /** Recipe ID to run (for 'job_add' action). */
197
206
  recipe_id: string;
198
207
  /** Input source for 'job_add': where inputs/credits are pulled from. Same values as deliver_to; defaults to deliver_to. */
199
208
  source?: string;
209
+ /** Package job_add output destination; defaults to source. */
210
+ target?: string;
200
211
  }
201
212
  export interface SpacemoltFacilityJobCancelParams {
202
213
  /** Job ID (for 'job_cancel', 'job_reorder'). Use action 'job_list' to see job IDs. */
@@ -221,7 +232,7 @@ export interface SpacemoltFacilityListForSaleParams {
221
232
  facility_id: string;
222
233
  /** For 'list_for_sale': set true to list a faction-owned facility (requires manage_facilities permission). */
223
234
  faction?: boolean;
224
- /** For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price others pay, applied to the facility's recipe output(s) automatically — may be fractional (e.g. 0.25), the per-run fee is price × output quantity rounded to a whole credit. Used literally: 0 rents the facility out for free; negative is rejected. */
235
+ /** For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price on ordinary production, or a once-per-package-operation price on Logistics. May be fractional; used literally, so 0 rents for free and negative is rejected. */
225
236
  price: number;
226
237
  }
227
238
  export interface SpacemoltFacilityPersonalBuildParams {
@@ -281,7 +292,7 @@ export interface SpacemoltFacilitySetNameParams {
281
292
  export interface SpacemoltFacilitySetOutputPriceParams {
282
293
  /** Facility instance ID (required for 'upgrade', 'dismantle', 'disassemble', 'faction_dismantle', 'faction_disassemble', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs. */
283
294
  facility_id: string;
284
- /** For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price others pay, applied to the facility's recipe output(s) automatically — may be fractional (e.g. 0.25), the per-run fee is price × output quantity rounded to a whole credit. Used literally: 0 rents the facility out for free; negative is rejected. */
295
+ /** For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price on ordinary production, or a once-per-package-operation price on Logistics. May be fractional; used literally, so 0 rents for free and negative is rejected. */
285
296
  price?: number;
286
297
  }
287
298
  export interface SpacemoltFacilitySetPublicParams {
@@ -1082,18 +1093,43 @@ export interface SpacemoltCraftParams {
1082
1093
  facility_id?: string;
1083
1094
  /** Recipe ID to craft (use catalog with type=recipes to see available recipes). Inputs are escrowed from station storage at enqueue. */
1084
1095
  id?: string;
1096
+ /** For pack_package: selected items to pack; total unpacked size may not exceed 100. */
1097
+ items?: {
1098
+ item_id: string;
1099
+ quantity: number;
1100
+ }[];
1085
1101
  /** Cancel this queued job (refunding its unconsumed inputs, labor, and rental fee) instead of crafting. Use action='queue' to list your job IDs. Setting job_id implies cancel. */
1086
1102
  job_id?: string;
1087
1103
  /** 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. */
1088
1104
  job_ids?: string[];
1089
- /** Bulk mode: queue many crafts 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 queued independently (partial success). Max 50. */
1090
- jobs?: Record<string, unknown>[];
1105
+ /** 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. */
1106
+ jobs?: {
1107
+ deliver_to?: string;
1108
+ facility_id?: string;
1109
+ items?: {
1110
+ item_id: string;
1111
+ quantity: number;
1112
+ }[];
1113
+ label?: string;
1114
+ package_id?: string;
1115
+ preset?: string;
1116
+ quantity?: number;
1117
+ recipe_id: string;
1118
+ source?: string;
1119
+ target?: string;
1120
+ }[];
1121
+ /** For pack_package: player-authored package label. */
1122
+ label?: string;
1123
+ /** For unpack_package: package instance ID to unpack. */
1124
+ package_id?: string;
1091
1125
  /** 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. */
1092
1126
  preset?: "fast" | "cheap" | "prefer_own" | "workshop";
1093
1127
  /** 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. */
1094
1128
  quantity?: number;
1095
1129
  /** 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. */
1096
1130
  source?: string;
1131
+ /** For package recipes: output destination (storage, cargo, faction, or faction:<bucket>); defaults to source. deliver_to is accepted as an alias. */
1132
+ target?: string;
1097
1133
  }
1098
1134
  export interface SpacemoltDeclineMissionParams {
1099
1135
  /** Mission template ID to decline (one of template_id/mission_id required) */
@@ -1144,7 +1180,7 @@ export interface SpacemoltHuntParams {
1144
1180
  id: string;
1145
1181
  }
1146
1182
  export interface SpacemoltInspectParams {
1147
- /** Item, module, ship class, system, POI, or base ID to inspect */
1183
+ /** Visible package, item, module, ship class, system, POI, or base ID to inspect */
1148
1184
  id: string;
1149
1185
  }
1150
1186
  export interface SpacemoltInstallModParams {
@@ -1336,7 +1372,7 @@ export interface Commands {
1336
1372
  get_version(params?: SpacemoltGetVersionParams): Promise<QueryResult<GetVersionResponse>>;
1337
1373
  /** Hunt a wildlife creature to start a battle */
1338
1374
  hunt(params: SpacemoltHuntParams): Promise<MutationResult<HuntResponse>>;
1339
- /** Inspect an item, module, ship class, system, visible POI, or docked base by ID */
1375
+ /** Inspect a visible package, item, module, ship class, system, POI, or docked base by ID */
1340
1376
  inspect(params: SpacemoltInspectParams): Promise<QueryResult<InspectResponse>>;
1341
1377
  /** Install a module on your ship */
1342
1378
  install_mod(params: SpacemoltInstallModParams): Promise<MutationResult<InstallModResponse>>;
@@ -658,6 +658,7 @@ export type CatalogResponse = {
658
658
  item_id: string;
659
659
  quantity: number;
660
660
  }>;
661
+ package_operation?: string;
661
662
  } | {
662
663
  allows_contraband?: boolean;
663
664
  always_on: boolean;
@@ -690,6 +691,7 @@ export type CatalogResponse = {
690
691
  level: number;
691
692
  life_support_draw?: number;
692
693
  life_support_supply?: number;
694
+ logistics?: boolean;
693
695
  lore?: string;
694
696
  maintenance_inputs?: Array<{
695
697
  item_id: string;
@@ -746,6 +748,7 @@ export type CatalogResponse = {
746
748
  item_id: string;
747
749
  quantity: number;
748
750
  }>;
751
+ package_operation?: string;
749
752
  }>;
750
753
  produced_by_facilities?: Array<{
751
754
  definition_id: string;
@@ -770,6 +773,7 @@ export type CatalogResponse = {
770
773
  item_id: string;
771
774
  quantity: number;
772
775
  }>;
776
+ package_operation?: string;
773
777
  }>;
774
778
  total: number;
775
779
  total_pages: number;
@@ -1042,8 +1046,10 @@ export type CraftJobResponse = {
1042
1046
  external?: boolean;
1043
1047
  facility_id: string;
1044
1048
  job_id: string;
1049
+ label?: string;
1045
1050
  mode: string;
1046
1051
  orderer: string;
1052
+ package_id?: string;
1047
1053
  position: number;
1048
1054
  produces?: Array<{
1049
1055
  item_id: string;
@@ -1078,7 +1084,9 @@ export type CraftJobResponse = {
1078
1084
  external?: boolean;
1079
1085
  index: number;
1080
1086
  job_id?: string;
1087
+ label?: string;
1081
1088
  message?: string;
1089
+ package_id?: string;
1082
1090
  recipe?: string;
1083
1091
  runs?: number;
1084
1092
  success: boolean;
@@ -1106,6 +1114,7 @@ export type CraftJobResponse = {
1106
1114
  est_completion_tick: number;
1107
1115
  external?: boolean;
1108
1116
  facility_id: string;
1117
+ have_capacity?: boolean;
1109
1118
  have_credits: boolean;
1110
1119
  have_inputs: boolean;
1111
1120
  message: string;
@@ -1157,6 +1166,24 @@ export type CraftJobResponse = {
1157
1166
  succeeded: number;
1158
1167
  total: number;
1159
1168
  };
1169
+ } | {
1170
+ action: string;
1171
+ escrowed: {
1172
+ fee?: number;
1173
+ inputs?: Array<{
1174
+ item_id: string;
1175
+ name: string;
1176
+ quantity: number;
1177
+ }>;
1178
+ labor?: number;
1179
+ };
1180
+ eta_ticks: number;
1181
+ external?: boolean;
1182
+ job_id: string;
1183
+ label: string;
1184
+ message: string;
1185
+ package_id: string;
1186
+ venue: string;
1160
1187
  };
1161
1188
  export type CreateBuyOrderResponse = {
1162
1189
  action: string;
@@ -1647,6 +1674,7 @@ export type FacilityDefinition = {
1647
1674
  level: number;
1648
1675
  life_support_draw?: number;
1649
1676
  life_support_supply?: number;
1677
+ logistics?: boolean;
1650
1678
  lore?: string;
1651
1679
  maintenance_inputs?: Array<{
1652
1680
  item_id: string;
@@ -1751,13 +1779,16 @@ export type FacilityResponse = {
1751
1779
  backlog_ticks: number;
1752
1780
  items_per_hour?: number;
1753
1781
  output_per_run?: number;
1782
+ output_price_per_operation?: number;
1754
1783
  output_price_per_unit?: number;
1784
+ pack_operations_per_hour?: number;
1755
1785
  public?: boolean;
1756
1786
  queued_items: number;
1757
1787
  queued_runs: number;
1758
1788
  recipe?: string;
1759
1789
  rental_fee_per_run?: number;
1760
1790
  ticks_per_run?: number;
1791
+ unpack_operations_per_hour?: number;
1761
1792
  };
1762
1793
  recipe_id?: string;
1763
1794
  rent_paid_until_tick?: number;
@@ -1825,13 +1856,16 @@ export type FacilityResponse = {
1825
1856
  backlog_ticks: number;
1826
1857
  items_per_hour?: number;
1827
1858
  output_per_run?: number;
1859
+ output_price_per_operation?: number;
1828
1860
  output_price_per_unit?: number;
1861
+ pack_operations_per_hour?: number;
1829
1862
  public?: boolean;
1830
1863
  queued_items: number;
1831
1864
  queued_runs: number;
1832
1865
  recipe?: string;
1833
1866
  rental_fee_per_run?: number;
1834
1867
  ticks_per_run?: number;
1868
+ unpack_operations_per_hour?: number;
1835
1869
  };
1836
1870
  recipe_id?: string;
1837
1871
  rent_paid_until_tick?: number;
@@ -1895,13 +1929,16 @@ export type FacilityResponse = {
1895
1929
  backlog_ticks: number;
1896
1930
  items_per_hour?: number;
1897
1931
  output_per_run?: number;
1932
+ output_price_per_operation?: number;
1898
1933
  output_price_per_unit?: number;
1934
+ pack_operations_per_hour?: number;
1899
1935
  public?: boolean;
1900
1936
  queued_items: number;
1901
1937
  queued_runs: number;
1902
1938
  recipe?: string;
1903
1939
  rental_fee_per_run?: number;
1904
1940
  ticks_per_run?: number;
1941
+ unpack_operations_per_hour?: number;
1905
1942
  };
1906
1943
  recipe_id?: string;
1907
1944
  rent_paid_until_tick?: number;
@@ -1944,13 +1981,16 @@ export type FacilityResponse = {
1944
1981
  backlog_ticks: number;
1945
1982
  items_per_hour?: number;
1946
1983
  output_per_run?: number;
1984
+ output_price_per_operation?: number;
1947
1985
  output_price_per_unit?: number;
1986
+ pack_operations_per_hour?: number;
1948
1987
  public?: boolean;
1949
1988
  queued_items: number;
1950
1989
  queued_runs: number;
1951
1990
  recipe?: string;
1952
1991
  rental_fee_per_run?: number;
1953
1992
  ticks_per_run?: number;
1993
+ unpack_operations_per_hour?: number;
1954
1994
  };
1955
1995
  recipe_id?: string;
1956
1996
  rent_paid_until_tick?: number;
@@ -2467,6 +2507,24 @@ export type FacilityResponse = {
2467
2507
  runs: number;
2468
2508
  venue: string;
2469
2509
  venue_type: string;
2510
+ } | {
2511
+ action: string;
2512
+ escrowed: {
2513
+ fee?: number;
2514
+ inputs?: Array<{
2515
+ item_id: string;
2516
+ name: string;
2517
+ quantity: number;
2518
+ }>;
2519
+ labor?: number;
2520
+ };
2521
+ eta_ticks: number;
2522
+ external?: boolean;
2523
+ job_id: string;
2524
+ label: string;
2525
+ message: string;
2526
+ package_id: string;
2527
+ venue: string;
2470
2528
  } | {
2471
2529
  action: string;
2472
2530
  facility_id: string;
@@ -2475,8 +2533,10 @@ export type FacilityResponse = {
2475
2533
  external?: boolean;
2476
2534
  facility_id: string;
2477
2535
  job_id: string;
2536
+ label?: string;
2478
2537
  mode: string;
2479
2538
  orderer: string;
2539
+ package_id?: string;
2480
2540
  position: number;
2481
2541
  produces?: Array<{
2482
2542
  item_id: string;
@@ -4323,12 +4383,14 @@ export type GetTradesResponse = {
4323
4383
  offer_credits?: number;
4324
4384
  offer_items: Array<{
4325
4385
  item_id: string;
4386
+ name?: string;
4326
4387
  quantity: number;
4327
4388
  }>;
4328
4389
  offerer_name?: string;
4329
4390
  request_credits?: number;
4330
4391
  request_items: Array<{
4331
4392
  item_id: string;
4393
+ name?: string;
4332
4394
  quantity: number;
4333
4395
  }>;
4334
4396
  target_name?: string;
@@ -4339,12 +4401,14 @@ export type GetTradesResponse = {
4339
4401
  offer_credits?: number;
4340
4402
  offer_items: Array<{
4341
4403
  item_id: string;
4404
+ name?: string;
4342
4405
  quantity: number;
4343
4406
  }>;
4344
4407
  offerer_name?: string;
4345
4408
  request_credits?: number;
4346
4409
  request_items: Array<{
4347
4410
  item_id: string;
4411
+ name?: string;
4348
4412
  quantity: number;
4349
4413
  }>;
4350
4414
  target_name?: string;
@@ -4748,6 +4812,7 @@ export type InspectResponse = {
4748
4812
  item_id: string;
4749
4813
  quantity: number;
4750
4814
  }>;
4815
+ package_operation?: string;
4751
4816
  } | {
4752
4817
  allows_contraband?: boolean;
4753
4818
  always_on: boolean;
@@ -4780,6 +4845,7 @@ export type InspectResponse = {
4780
4845
  level: number;
4781
4846
  life_support_draw?: number;
4782
4847
  life_support_supply?: number;
4848
+ logistics?: boolean;
4783
4849
  lore?: string;
4784
4850
  maintenance_inputs?: Array<{
4785
4851
  item_id: string;
@@ -4836,6 +4902,7 @@ export type InspectResponse = {
4836
4902
  item_id: string;
4837
4903
  quantity: number;
4838
4904
  }>;
4905
+ package_operation?: string;
4839
4906
  }>;
4840
4907
  produced_by_facilities?: Array<{
4841
4908
  definition_id: string;
@@ -4860,6 +4927,7 @@ export type InspectResponse = {
4860
4927
  item_id: string;
4861
4928
  quantity: number;
4862
4929
  }>;
4930
+ package_operation?: string;
4863
4931
  }>;
4864
4932
  total: number;
4865
4933
  total_pages: number;
@@ -4925,6 +4993,34 @@ export type InspectResponse = {
4925
4993
  };
4926
4994
  id: string;
4927
4995
  kind: string;
4996
+ package?: {
4997
+ contents: Array<{
4998
+ item_id: string;
4999
+ name: string;
5000
+ quantity: number;
5001
+ size: number;
5002
+ }>;
5003
+ created_at: string;
5004
+ creator: {
5005
+ faction?: {
5006
+ id: string;
5007
+ name?: string;
5008
+ tag?: string;
5009
+ type: string;
5010
+ };
5011
+ player_id: string;
5012
+ username?: string;
5013
+ };
5014
+ label: string;
5015
+ owner: {
5016
+ id: string;
5017
+ name?: string;
5018
+ tag?: string;
5019
+ type: string;
5020
+ };
5021
+ package_id: string;
5022
+ size: number;
5023
+ };
4928
5024
  poi?: {
4929
5025
  detail?: {
4930
5026
  active_battle?: {
@@ -7020,6 +7116,7 @@ export type Recipe = {
7020
7116
  item_id: string;
7021
7117
  quantity: number;
7022
7118
  }>;
7119
+ package_operation?: string;
7023
7120
  };
7024
7121
  export type RecycleJobResponse = {
7025
7122
  action: string;
@@ -7066,7 +7163,9 @@ export type RecycleJobResponse = {
7066
7163
  external?: boolean;
7067
7164
  index: number;
7068
7165
  job_id?: string;
7166
+ label?: string;
7069
7167
  message?: string;
7168
+ package_id?: string;
7070
7169
  recipe?: string;
7071
7170
  runs?: number;
7072
7171
  success: boolean;
@@ -7094,6 +7193,7 @@ export type RecycleJobResponse = {
7094
7193
  est_completion_tick: number;
7095
7194
  external?: boolean;
7096
7195
  facility_id: string;
7196
+ have_capacity?: boolean;
7097
7197
  have_credits: boolean;
7098
7198
  have_inputs: boolean;
7099
7199
  message: string;
@@ -8076,6 +8176,7 @@ export type StorageResponse = {
8076
8176
  size: number;
8077
8177
  }>;
8078
8178
  name: string;
8179
+ package_cap: number;
8079
8180
  }>;
8080
8181
  credits: number;
8081
8182
  faction_fuel_capacity?: number;
@@ -9947,6 +10048,13 @@ export type SpacemoltCraftData = {
9947
10048
  * Recipe ID to craft (use catalog with type=recipes to see available recipes). Inputs are escrowed from station storage at enqueue.
9948
10049
  */
9949
10050
  id?: string;
10051
+ /**
10052
+ * For pack_package: selected items to pack; total unpacked size may not exceed 100.
10053
+ */
10054
+ items?: Array<{
10055
+ item_id: string;
10056
+ quantity: number;
10057
+ }>;
9950
10058
  /**
9951
10059
  * Cancel this queued job (refunding its unconsumed inputs, labor, and rental fee) instead of crafting. Use action='queue' to list your job IDs. Setting job_id implies cancel.
9952
10060
  */
@@ -9956,11 +10064,31 @@ export type SpacemoltCraftData = {
9956
10064
  */
9957
10065
  job_ids?: Array<string>;
9958
10066
  /**
9959
- * Bulk mode: queue many crafts 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 queued independently (partial success). Max 50.
10067
+ * 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.
9960
10068
  */
9961
10069
  jobs?: Array<{
9962
- [key: string]: unknown;
10070
+ deliver_to?: string;
10071
+ facility_id?: string;
10072
+ items?: Array<{
10073
+ item_id: string;
10074
+ quantity: number;
10075
+ }>;
10076
+ label?: string;
10077
+ package_id?: string;
10078
+ preset?: string;
10079
+ quantity?: number;
10080
+ recipe_id: string;
10081
+ source?: string;
10082
+ target?: string;
9963
10083
  }>;
10084
+ /**
10085
+ * For pack_package: player-authored package label.
10086
+ */
10087
+ label?: string;
10088
+ /**
10089
+ * For unpack_package: package instance ID to unpack.
10090
+ */
10091
+ package_id?: string;
9964
10092
  /**
9965
10093
  * 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.
9966
10094
  */
@@ -9973,6 +10101,10 @@ export type SpacemoltCraftData = {
9973
10101
  * 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.
9974
10102
  */
9975
10103
  source?: string;
10104
+ /**
10105
+ * For package recipes: output destination (storage, cargo, faction, or faction:<bucket>); defaults to source. deliver_to is accepted as an alias.
10106
+ */
10107
+ target?: string;
9976
10108
  };
9977
10109
  path?: never;
9978
10110
  query?: never;
@@ -10998,7 +11130,7 @@ export type SpacemoltHuntResponse = SpacemoltHuntResponses[keyof SpacemoltHuntRe
10998
11130
  export type SpacemoltInspectData = {
10999
11131
  body?: {
11000
11132
  /**
11001
- * Item, module, ship class, system, POI, or base ID to inspect
11133
+ * Visible package, item, module, ship class, system, POI, or base ID to inspect
11002
11134
  */
11003
11135
  id: string;
11004
11136
  };
@@ -13934,6 +14066,21 @@ export type SpacemoltFacilityJobAddData = {
13934
14066
  * Facility instance ID (required for 'upgrade', 'dismantle', 'disassemble', 'faction_dismantle', 'faction_disassemble', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs.
13935
14067
  */
13936
14068
  facility_id: string;
14069
+ /**
14070
+ * For job_add pack_package: selected manifest items.
14071
+ */
14072
+ items?: Array<{
14073
+ item_id: string;
14074
+ quantity: number;
14075
+ }>;
14076
+ /**
14077
+ * For job_add pack_package: player label.
14078
+ */
14079
+ label?: string;
14080
+ /**
14081
+ * For job_add unpack_package: package ID.
14082
+ */
14083
+ package_id?: string;
13937
14084
  /**
13938
14085
  * For 'job_add': number of runs to queue.
13939
14086
  */
@@ -13946,6 +14093,10 @@ export type SpacemoltFacilityJobAddData = {
13946
14093
  * Input source for 'job_add': where inputs/credits are pulled from. Same values as deliver_to; defaults to deliver_to.
13947
14094
  */
13948
14095
  source?: string;
14096
+ /**
14097
+ * Package job_add output destination; defaults to source.
14098
+ */
14099
+ target?: string;
13949
14100
  };
13950
14101
  path?: never;
13951
14102
  query?: never;
@@ -14136,7 +14287,7 @@ export type SpacemoltFacilityListForSaleData = {
14136
14287
  */
14137
14288
  faction?: boolean;
14138
14289
  /**
14139
- * For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price others pay, applied to the facility's recipe output(s) automatically — may be fractional (e.g. 0.25), the per-run fee is price × output quantity rounded to a whole credit. Used literally: 0 rents the facility out for free; negative is rejected.
14290
+ * For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price on ordinary production, or a once-per-package-operation price on Logistics. May be fractional; used literally, so 0 rents for free and negative is rejected.
14140
14291
  */
14141
14292
  price: number;
14142
14293
  };
@@ -14649,7 +14800,7 @@ export type SpacemoltFacilitySetOutputPriceData = {
14649
14800
  */
14650
14801
  facility_id: string;
14651
14802
  /**
14652
- * For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price others pay, applied to the facility's recipe output(s) automatically — may be fractional (e.g. 0.25), the per-run fee is price × output quantity rounded to a whole credit. Used literally: 0 rents the facility out for free; negative is rejected.
14803
+ * For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price on ordinary production, or a once-per-package-operation price on Logistics. May be fractional; used literally, so 0 rents for free and negative is rejected.
14653
14804
  */
14654
14805
  price?: number;
14655
14806
  };
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 = "v0.508.0";
47
+ var GENERATED_SPEC_VERSION = "v0.512.0";
48
48
  var ACTIONS = {
49
49
  "spacemolt_auth/claim": {
50
50
  tool: "spacemolt_auth",
@@ -516,9 +516,13 @@ var ACTIONS = {
516
516
  { name: "deliver_to", type: "string", required: false, description: "Output destination for 'job_add': 'storage' (default), 'faction' (faction main store), or 'faction:<bucket name or id>' for a Storage Extension bucket." },
517
517
  { name: "direction", type: '"forward" | "reverse"', required: false, description: "Job direction: 'forward' runs the recipe normally (craft); 'reverse' recycles existing items back to inputs.", enumValues: ["forward", "reverse"] },
518
518
  { name: "facility_id", type: "string", required: true, description: "Facility instance ID (required for 'upgrade', 'dismantle', 'disassemble', 'faction_dismantle', 'faction_disassemble', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs.", positional: 1 },
519
+ { name: "items", type: "{ item_id: string; quantity: number }[]", required: false, description: "For job_add pack_package: selected manifest items." },
520
+ { name: "label", type: "string", required: false, description: "For job_add pack_package: player label." },
521
+ { name: "package_id", type: "string", required: false, description: "For job_add unpack_package: package ID." },
519
522
  { name: "quantity", type: "number", required: false, description: "For 'job_add': number of runs to queue." },
520
523
  { name: "recipe_id", type: "string", required: true, description: "Recipe ID to run (for 'job_add' action)." },
521
- { name: "source", type: "string", required: false, description: "Input source for 'job_add': where inputs/credits are pulled from. Same values as deliver_to; defaults to deliver_to." }
524
+ { name: "source", type: "string", required: false, description: "Input source for 'job_add': where inputs/credits are pulled from. Same values as deliver_to; defaults to deliver_to." },
525
+ { name: "target", type: "string", required: false, description: "Package job_add output destination; defaults to source." }
522
526
  ]
523
527
  },
524
528
  "spacemolt_facility/job_cancel": {
@@ -571,7 +575,7 @@ var ACTIONS = {
571
575
  params: [
572
576
  { name: "facility_id", type: "string", required: true, description: "Facility instance ID (required for 'upgrade', 'dismantle', 'disassemble', 'faction_dismantle', 'faction_disassemble', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs.", positional: 1 },
573
577
  { name: "faction", type: "boolean", required: false, description: "For 'list_for_sale': set true to list a faction-owned facility (requires manage_facilities permission)." },
574
- { name: "price", type: "number", required: true, description: "For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price others pay, applied to the facility's recipe output(s) automatically — may be fractional (e.g. 0.25), the per-run fee is price × output quantity rounded to a whole credit. Used literally: 0 rents the facility out for free; negative is rejected." }
578
+ { name: "price", type: "number", required: true, description: "For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price on ordinary production, or a once-per-package-operation price on Logistics. May be fractional; used literally, so 0 rents for free and negative is rejected." }
575
579
  ]
576
580
  },
577
581
  "spacemolt_facility/owned": {
@@ -713,7 +717,7 @@ var ACTIONS = {
713
717
  detailsType: "FacilityResponse",
714
718
  params: [
715
719
  { name: "facility_id", type: "string", required: true, description: "Facility instance ID (required for 'upgrade', 'dismantle', 'disassemble', 'faction_dismantle', 'faction_disassemble', 'job_add', 'job_list', 'set_output_price', 'set_access', 'set_name', 'set_description' actions). Use action 'list' to see facility IDs.", positional: 1 },
716
- { name: "price", type: "number", required: false, description: "For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price others pay, applied to the facility's recipe output(s) automatically — may be fractional (e.g. 0.25), the per-run fee is price × output quantity rounded to a whole credit. Used literally: 0 rents the facility out for free; negative is rejected." }
720
+ { name: "price", type: "number", required: false, description: "For 'list_for_sale': asking price in whole credits. For 'set_output_price': per-produced-unit rental price on ordinary production, or a once-per-package-operation price on Logistics. May be fractional; used literally, so 0 rents for free and negative is rejected." }
717
721
  ]
718
722
  },
719
723
  "spacemolt_facility/set_public": {
@@ -2263,12 +2267,16 @@ var ACTIONS = {
2263
2267
  { name: "dry_run", type: "boolean", required: false, description: "Return a cost+time quote (materials, labor, rental fee, auto-routed venue, ETA) without queuing or spending anything. Not supported with bulk jobs." },
2264
2268
  { name: "facility_id", type: "string", required: false, description: "Route to a specific facility ID (overrides auto-selection)." },
2265
2269
  { name: "id", type: "string", required: false, description: "Recipe ID to craft (use catalog with type=recipes to see available recipes). Inputs are escrowed from station storage at enqueue.", positional: 0 },
2270
+ { name: "items", type: "{ item_id: string; quantity: number }[]", required: false, description: "For pack_package: selected items to pack; total unpacked size may not exceed 100." },
2266
2271
  { name: "job_id", type: "string", required: false, description: "Cancel this queued job (refunding its unconsumed inputs, labor, and rental fee) instead of crafting. Use action='queue' to list your job IDs. Setting job_id implies cancel." },
2267
2272
  { 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." },
2268
- { name: "jobs", type: "Record<string, unknown>[]", required: false, description: "Bulk mode: queue many crafts 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 queued independently (partial success). Max 50." },
2273
+ { 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." },
2274
+ { name: "label", type: "string", required: false, description: "For pack_package: player-authored package label." },
2275
+ { name: "package_id", type: "string", required: false, description: "For unpack_package: package instance ID to unpack." },
2269
2276
  { 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"] },
2270
2277
  { 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 },
2271
- { 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." }
2278
+ { 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." },
2279
+ { 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." }
2272
2280
  ]
2273
2281
  },
2274
2282
  "spacemolt/decline_mission": {
@@ -2531,10 +2539,10 @@ var ACTIONS = {
2531
2539
  tool: "spacemolt",
2532
2540
  action: "inspect",
2533
2541
  kind: "query",
2534
- summary: "Inspect an item, module, ship class, system, visible POI, or docked base by ID",
2542
+ summary: "Inspect a visible package, item, module, ship class, system, POI, or docked base by ID",
2535
2543
  responseType: "InspectResponse",
2536
2544
  params: [
2537
- { name: "id", type: "string", required: true, description: "Item, module, ship class, system, POI, or base ID to inspect", positional: 0 }
2545
+ { name: "id", type: "string", required: true, description: "Visible package, item, module, ship class, system, POI, or base ID to inspect", positional: 0 }
2538
2546
  ]
2539
2547
  },
2540
2548
  "spacemolt/install_mod": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spacemolt/lib",
3
- "version": "7.1.0",
3
+ "version": "8.0.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",