shipeasy-sdk 3.7.0 → 4.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.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/docs/skill/SKILL.md +7 -4
  3. data/lib/shipeasy/admin.rb +23 -20
  4. data/lib/shipeasy/engine.rb +6 -4
  5. data/lib/shipeasy/sdk/see.rb +7 -5
  6. data/lib/shipeasy/sdk/version.rb +1 -1
  7. data/lib/shipeasy_admin/api/flags_api.rb +127 -214
  8. data/lib/shipeasy_admin/api/killswitch_api.rb +25 -525
  9. data/lib/shipeasy_admin/api/ops_api.rb +44 -351
  10. data/lib/shipeasy_admin/api_client.rb +2 -2
  11. data/lib/shipeasy_admin/api_error.rb +2 -2
  12. data/lib/shipeasy_admin/api_model_base.rb +2 -2
  13. data/lib/shipeasy_admin/configuration.rb +29 -2
  14. data/lib/shipeasy_admin/models/{set_killswitch_value_request.rb → add_to_gate_whitelist_request.rb} +37 -42
  15. data/lib/shipeasy_admin/models/create_public_bug_request.rb +464 -0
  16. data/lib/shipeasy_admin/models/create_public_feature_request_request.rb +407 -0
  17. data/lib/shipeasy_admin/models/{file_error_ticket_response.rb → create_public_ticket_response.rb} +22 -29
  18. data/lib/shipeasy_admin/models/env.rb +2 -2
  19. data/lib/shipeasy_admin/models/error.rb +41 -7
  20. data/lib/shipeasy_admin/models/error_code.rb +14 -3
  21. data/lib/shipeasy_admin/models/{get_experiment_timeseries_response_experiment.rb → gate_whitelist.rb} +51 -42
  22. data/lib/shipeasy_admin/models/gate_whitelist_attr.rb +40 -0
  23. data/lib/shipeasy_admin/models/killswitch_value.rb +2 -2
  24. data/lib/shipeasy_admin/models/notification_target.rb +2 -2
  25. data/lib/shipeasy_admin/models/notification_target_slack_channel.rb +2 -2
  26. data/lib/shipeasy_admin/models/ops_item_priority.rb +42 -0
  27. data/lib/shipeasy_admin/models/ops_item_status.rb +46 -0
  28. data/lib/shipeasy_admin/models/{discard_config_draft_request.rb → remove_from_gate_whitelist_request.rb} +34 -44
  29. data/lib/shipeasy_admin/models/{delete_alert_rule_response.rb → set_gate_whitelist_request.rb} +37 -25
  30. data/lib/shipeasy_admin/models/{set_killswitch_switch_request.rb → toggle_killswitch_request.rb} +30 -72
  31. data/lib/shipeasy_admin/models/{set_killswitch_value_response.rb → toggle_killswitch_response.rb} +100 -6
  32. data/lib/shipeasy_admin/version.rb +2 -2
  33. data/lib/shipeasy_admin.rb +14 -195
  34. metadata +14 -195
  35. data/lib/shipeasy_admin/api/alerts_api.rb +0 -352
  36. data/lib/shipeasy_admin/api/api_keys_api.rb +0 -229
  37. data/lib/shipeasy_admin/api/attributes_api.rb +0 -82
  38. data/lib/shipeasy_admin/api/configs_api.rb +0 -757
  39. data/lib/shipeasy_admin/api/connectors_api.rb +0 -497
  40. data/lib/shipeasy_admin/api/drafts_api.rb +0 -82
  41. data/lib/shipeasy_admin/api/errors_api.rb +0 -389
  42. data/lib/shipeasy_admin/api/events_api.rb +0 -438
  43. data/lib/shipeasy_admin/api/experiments_api.rb +0 -727
  44. data/lib/shipeasy_admin/api/keys_api.rb +0 -317
  45. data/lib/shipeasy_admin/api/metrics_api.rb +0 -281
  46. data/lib/shipeasy_admin/api/profiles_api.rb +0 -222
  47. data/lib/shipeasy_admin/api/projects_api.rb +0 -216
  48. data/lib/shipeasy_admin/api/universes_api.rb +0 -306
  49. data/lib/shipeasy_admin/models/approve_event_request.rb +0 -198
  50. data/lib/shipeasy_admin/models/approve_event_response.rb +0 -166
  51. data/lib/shipeasy_admin/models/claude_trigger_config.rb +0 -204
  52. data/lib/shipeasy_admin/models/connector_event.rb +0 -40
  53. data/lib/shipeasy_admin/models/connector_provider.rb +0 -45
  54. data/lib/shipeasy_admin/models/connector_record.rb +0 -468
  55. data/lib/shipeasy_admin/models/copilot_trigger_config.rb +0 -276
  56. data/lib/shipeasy_admin/models/create_alert_rule_request.rb +0 -383
  57. data/lib/shipeasy_admin/models/create_alert_rule_response.rb +0 -165
  58. data/lib/shipeasy_admin/models/create_claude_trigger_request.rb +0 -309
  59. data/lib/shipeasy_admin/models/create_config_request.rb +0 -291
  60. data/lib/shipeasy_admin/models/create_config_response.rb +0 -201
  61. data/lib/shipeasy_admin/models/create_connector_request.rb +0 -64
  62. data/lib/shipeasy_admin/models/create_connector_response.rb +0 -165
  63. data/lib/shipeasy_admin/models/create_copilot_trigger_request.rb +0 -316
  64. data/lib/shipeasy_admin/models/create_cursor_trigger_request.rb +0 -352
  65. data/lib/shipeasy_admin/models/create_event_request.rb +0 -236
  66. data/lib/shipeasy_admin/models/create_event_response.rb +0 -193
  67. data/lib/shipeasy_admin/models/create_experiment_request.rb +0 -807
  68. data/lib/shipeasy_admin/models/create_experiment_response.rb +0 -212
  69. data/lib/shipeasy_admin/models/create_gate_request.rb +0 -492
  70. data/lib/shipeasy_admin/models/create_gate_response.rb +0 -212
  71. data/lib/shipeasy_admin/models/create_i18n_profile_request.rb +0 -188
  72. data/lib/shipeasy_admin/models/create_i18n_profile_response.rb +0 -193
  73. data/lib/shipeasy_admin/models/create_jules_trigger_request.rb +0 -352
  74. data/lib/shipeasy_admin/models/create_key_request.rb +0 -297
  75. data/lib/shipeasy_admin/models/create_key_response.rb +0 -286
  76. data/lib/shipeasy_admin/models/create_killswitch_request.rb +0 -274
  77. data/lib/shipeasy_admin/models/create_killswitch_response.rb +0 -201
  78. data/lib/shipeasy_admin/models/create_metric_request.rb +0 -403
  79. data/lib/shipeasy_admin/models/create_metric_response.rb +0 -193
  80. data/lib/shipeasy_admin/models/create_o_auth_connector_request.rb +0 -273
  81. data/lib/shipeasy_admin/models/create_ops_item_request.rb +0 -287
  82. data/lib/shipeasy_admin/models/create_ops_item_response.rb +0 -177
  83. data/lib/shipeasy_admin/models/create_universe_request.rb +0 -272
  84. data/lib/shipeasy_admin/models/create_universe_response.rb +0 -212
  85. data/lib/shipeasy_admin/models/cursor_trigger_config.rb +0 -231
  86. data/lib/shipeasy_admin/models/delete_config_response.rb +0 -188
  87. data/lib/shipeasy_admin/models/delete_connector_response.rb +0 -188
  88. data/lib/shipeasy_admin/models/delete_event_response.rb +0 -189
  89. data/lib/shipeasy_admin/models/delete_experiment_response.rb +0 -188
  90. data/lib/shipeasy_admin/models/delete_gate_response.rb +0 -188
  91. data/lib/shipeasy_admin/models/delete_killswitch_response.rb +0 -188
  92. data/lib/shipeasy_admin/models/delete_metric_response.rb +0 -189
  93. data/lib/shipeasy_admin/models/delete_universe_response.rb +0 -188
  94. data/lib/shipeasy_admin/models/disable_gate_response.rb +0 -190
  95. data/lib/shipeasy_admin/models/discard_config_draft_response.rb +0 -188
  96. data/lib/shipeasy_admin/models/enable_gate_response.rb +0 -190
  97. data/lib/shipeasy_admin/models/error_record.rb +0 -597
  98. data/lib/shipeasy_admin/models/error_series_request.rb +0 -251
  99. data/lib/shipeasy_admin/models/error_series_response.rb +0 -195
  100. data/lib/shipeasy_admin/models/error_series_response_rows_inner.rb +0 -192
  101. data/lib/shipeasy_admin/models/experiment_inline_metric.rb +0 -337
  102. data/lib/shipeasy_admin/models/fire_connector_request.rb +0 -149
  103. data/lib/shipeasy_admin/models/fire_connector_response.rb +0 -176
  104. data/lib/shipeasy_admin/models/get_config_response.rb +0 -351
  105. data/lib/shipeasy_admin/models/get_current_project_response.rb +0 -606
  106. data/lib/shipeasy_admin/models/get_current_project_response_module_translations.rb +0 -104
  107. data/lib/shipeasy_admin/models/get_event_response.rb +0 -344
  108. data/lib/shipeasy_admin/models/get_experiment_response.rb +0 -688
  109. data/lib/shipeasy_admin/models/get_experiment_results_response.rb +0 -243
  110. data/lib/shipeasy_admin/models/get_experiment_results_response_experiment.rb +0 -248
  111. data/lib/shipeasy_admin/models/get_experiment_results_response_results_inner.rb +0 -252
  112. data/lib/shipeasy_admin/models/get_experiment_timeseries_response.rb +0 -192
  113. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_series_inner.rb +0 -278
  114. data/lib/shipeasy_admin/models/get_killswitch_response.rb +0 -270
  115. data/lib/shipeasy_admin/models/get_metric_response.rb +0 -378
  116. data/lib/shipeasy_admin/models/get_ops_item_response.rb +0 -349
  117. data/lib/shipeasy_admin/models/jules_trigger_config.rb +0 -240
  118. data/lib/shipeasy_admin/models/key_record.rb +0 -353
  119. data/lib/shipeasy_admin/models/link_pr_to_ops_item_request.rb +0 -186
  120. data/lib/shipeasy_admin/models/link_pr_to_ops_item_response.rb +0 -166
  121. data/lib/shipeasy_admin/models/list_alert_rules_response_inner.rb +0 -478
  122. data/lib/shipeasy_admin/models/list_attributes_response_inner.rb +0 -176
  123. data/lib/shipeasy_admin/models/list_config_activity_response_inner.rb +0 -280
  124. data/lib/shipeasy_admin/models/list_configs_response.rb +0 -178
  125. data/lib/shipeasy_admin/models/list_configs_response_data_inner.rb +0 -351
  126. data/lib/shipeasy_admin/models/list_configs_response_data_inner_drafts_value.rb +0 -237
  127. data/lib/shipeasy_admin/models/list_configs_response_data_inner_envs_value.rb +0 -237
  128. data/lib/shipeasy_admin/models/list_events_response_inner.rb +0 -344
  129. data/lib/shipeasy_admin/models/list_events_response_inner_properties_inner.rb +0 -259
  130. data/lib/shipeasy_admin/models/list_experiments_response.rb +0 -178
  131. data/lib/shipeasy_admin/models/list_experiments_response_data_inner.rb +0 -688
  132. data/lib/shipeasy_admin/models/list_experiments_response_data_inner_groups_inner.rb +0 -241
  133. data/lib/shipeasy_admin/models/list_gates_response.rb +0 -178
  134. data/lib/shipeasy_admin/models/list_gates_response_data_inner.rb +0 -395
  135. data/lib/shipeasy_admin/models/list_gates_response_data_inner_enabled.rb +0 -104
  136. data/lib/shipeasy_admin/models/list_gates_response_data_inner_rules_inner.rb +0 -238
  137. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner.rb +0 -105
  138. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of.rb +0 -358
  139. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of1.rb +0 -331
  140. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of_ramp.rb +0 -319
  141. data/lib/shipeasy_admin/models/list_i18n_drafts_response_inner.rb +0 -272
  142. data/lib/shipeasy_admin/models/list_i18n_keys_response.rb +0 -195
  143. data/lib/shipeasy_admin/models/list_i18n_keys_response_keys_inner.rb +0 -274
  144. data/lib/shipeasy_admin/models/list_i18n_profiles_response_inner.rb +0 -224
  145. data/lib/shipeasy_admin/models/list_keys_response.rb +0 -180
  146. data/lib/shipeasy_admin/models/list_killswitches_response.rb +0 -178
  147. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner.rb +0 -270
  148. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner_envs_value.rb +0 -248
  149. data/lib/shipeasy_admin/models/list_metrics_response_inner.rb +0 -378
  150. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir.rb +0 -288
  151. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg.rb +0 -113
  152. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of.rb +0 -188
  153. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of1.rb +0 -188
  154. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of2.rb +0 -188
  155. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of3.rb +0 -188
  156. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of4.rb +0 -188
  157. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of5.rb +0 -188
  158. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of6.rb +0 -188
  159. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of7.rb +0 -217
  160. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of8.rb +0 -233
  161. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9.rb +0 -240
  162. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator.rb +0 -266
  163. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator_filters_inner.rb +0 -264
  164. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_group_by.rb +0 -228
  165. data/lib/shipeasy_admin/models/list_ops_items_response_inner.rb +0 -349
  166. data/lib/shipeasy_admin/models/list_slack_channels_response.rb +0 -195
  167. data/lib/shipeasy_admin/models/list_slack_channels_response_channels_inner.rb +0 -203
  168. data/lib/shipeasy_admin/models/list_universes_response.rb +0 -178
  169. data/lib/shipeasy_admin/models/list_universes_response_data_inner.rb +0 -305
  170. data/lib/shipeasy_admin/models/notify_ops_request.rb +0 -261
  171. data/lib/shipeasy_admin/models/notify_ops_response.rb +0 -193
  172. data/lib/shipeasy_admin/models/publish_config_draft_request.rb +0 -187
  173. data/lib/shipeasy_admin/models/publish_config_draft_response.rb +0 -257
  174. data/lib/shipeasy_admin/models/publish_i18n_profile_response.rb +0 -391
  175. data/lib/shipeasy_admin/models/push_i18n_keys_request.rb +0 -195
  176. data/lib/shipeasy_admin/models/push_i18n_keys_request_keys_inner.rb +0 -192
  177. data/lib/shipeasy_admin/models/push_i18n_keys_response.rb +0 -251
  178. data/lib/shipeasy_admin/models/reanalyze_experiment_response.rb +0 -214
  179. data/lib/shipeasy_admin/models/revoke_key_response.rb +0 -216
  180. data/lib/shipeasy_admin/models/save_config_draft_request.rb +0 -199
  181. data/lib/shipeasy_admin/models/save_config_draft_response.rb +0 -283
  182. data/lib/shipeasy_admin/models/search_hit.rb +0 -284
  183. data/lib/shipeasy_admin/models/search_response.rb +0 -167
  184. data/lib/shipeasy_admin/models/set_experiment_metrics_request.rb +0 -168
  185. data/lib/shipeasy_admin/models/set_experiment_metrics_request_metrics_inner.rb +0 -216
  186. data/lib/shipeasy_admin/models/set_experiment_metrics_response.rb +0 -179
  187. data/lib/shipeasy_admin/models/set_experiment_metrics_response_metrics_inner.rb +0 -201
  188. data/lib/shipeasy_admin/models/set_experiment_status_request.rb +0 -190
  189. data/lib/shipeasy_admin/models/set_experiment_status_response.rb +0 -214
  190. data/lib/shipeasy_admin/models/set_i18n_label_request.rb +0 -213
  191. data/lib/shipeasy_admin/models/set_i18n_label_response.rb +0 -472
  192. data/lib/shipeasy_admin/models/set_killswitch_switch_response.rb +0 -285
  193. data/lib/shipeasy_admin/models/test_connector_response.rb +0 -189
  194. data/lib/shipeasy_admin/models/unset_killswitch_switch_request.rb +0 -234
  195. data/lib/shipeasy_admin/models/unset_killswitch_switch_response.rb +0 -286
  196. data/lib/shipeasy_admin/models/update_alert_rule_request.rb +0 -304
  197. data/lib/shipeasy_admin/models/update_alert_rule_response.rb +0 -165
  198. data/lib/shipeasy_admin/models/update_config_request.rb +0 -198
  199. data/lib/shipeasy_admin/models/update_config_response.rb +0 -165
  200. data/lib/shipeasy_admin/models/update_config_schema_request.rb +0 -168
  201. data/lib/shipeasy_admin/models/update_config_schema_response.rb +0 -165
  202. data/lib/shipeasy_admin/models/update_connector_request.rb +0 -211
  203. data/lib/shipeasy_admin/models/update_connector_response.rb +0 -166
  204. data/lib/shipeasy_admin/models/update_error_status_request.rb +0 -190
  205. data/lib/shipeasy_admin/models/update_event_request.rb +0 -198
  206. data/lib/shipeasy_admin/models/update_event_response.rb +0 -166
  207. data/lib/shipeasy_admin/models/update_experiment_request.rb +0 -747
  208. data/lib/shipeasy_admin/models/update_experiment_response.rb +0 -165
  209. data/lib/shipeasy_admin/models/update_gate_request.rb +0 -403
  210. data/lib/shipeasy_admin/models/update_gate_response.rb +0 -166
  211. data/lib/shipeasy_admin/models/update_i18n_key_request.rb +0 -176
  212. data/lib/shipeasy_admin/models/update_i18n_key_response.rb +0 -166
  213. data/lib/shipeasy_admin/models/update_killswitch_request.rb +0 -224
  214. data/lib/shipeasy_admin/models/update_killswitch_response.rb +0 -165
  215. data/lib/shipeasy_admin/models/update_ops_item_request.rb +0 -205
  216. data/lib/shipeasy_admin/models/update_ops_item_response.rb +0 -166
  217. data/lib/shipeasy_admin/models/update_universe_request.rb +0 -213
  218. data/lib/shipeasy_admin/models/update_universe_response.rb +0 -165
  219. data/lib/shipeasy_admin/models/upsert_project_request.rb +0 -222
  220. data/lib/shipeasy_admin/models/upsert_project_response.rb +0 -260
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c492371b226e15657ecdbdafdab11e79cd512d4f46ae412af3b000a203c0f3ec
4
- data.tar.gz: a10503e08343510e5b12ebb3c23e9cdc19f05cb5781edb5fac381d7c98f8bc78
3
+ metadata.gz: 9f974f7f31df4a3c30015d2ec1149d32814f7e54a79fed06fd215bfe4c40bf84
4
+ data.tar.gz: c165ac01e2f01449538b7bdbaba217fd42c79b63481cacde1071fedaf2bd164e
5
5
  SHA512:
6
- metadata.gz: 8df684d6629ee574b6e20bbac97c1409b56c00892c739357b980f298203cc7dc7fe1b34bce3f5758e983354c19124a648f1078f4e27bdcc9e383cef5aba5706c
7
- data.tar.gz: ca4ff0fcfceca63eaad68696f5e19168b07ca559530adb42747ec9f1138d12750e694b40025094ec0b97952b73bb6dd1d784dc94a3f0669b538693260ed9cf97
6
+ metadata.gz: 192d9656ff82682fccd90e94ece252f67ddb904e20faa50f13ea16ae291c6eb129aef61da23d3262c90b9b24edcc342ccd178e55c0aec639d4bbabad4a9458eb
7
+ data.tar.gz: ea186acc91a8dd5bb78956c013e298b8b3decbb9194a5432065ccd4c5d633385ea123998bd5845802b0c2b5e062a80865aa2a58fc3189855ecbba4040147fb23
data/docs/skill/SKILL.md CHANGED
@@ -126,10 +126,13 @@ rescue => e
126
126
  end
127
127
  ```
128
128
 
129
- Attach context with `.extras({...})` before `.to`, or inline as
130
- `.to(outcome, {...})`. To attach it from anywhere without threading it into the
131
- rescue, buffer it earlier with `Shipeasy.add_extras(order_id: id)` it merges
132
- into every see() report later in the same (fiber-local, per-request) scope.
129
+ Attach context inline on the terminal — `.to(outcome, {...})`. Never
130
+ `.causes_the(x).extras({...}).to(y)`: it splits the consequence sentence in half.
131
+ A stray `.extras` **after** `.to` is ignored with a warning (the report already
132
+ shipped), so the extras are dropped. To attach context from anywhere without
133
+ threading it into the rescue, buffer it earlier with
134
+ `Shipeasy.add_extras(order_id: id)` — it merges into every see() report later in
135
+ the same (fiber-local, per-request) scope.
133
136
 
134
137
  `Shipeasy.see_violation(name)` for non-exception problems;
135
138
  `Shipeasy.control_flow_exception(e).because(...)` marks expected control flow
@@ -15,7 +15,7 @@
15
15
  # api_key: ENV.fetch("SHIPEASY_ADMIN_KEY"),
16
16
  # project_id: ENV.fetch("SHIPEASY_PROJECT_ID"),
17
17
  # )
18
- # admin.gates.list_gates
18
+ # admin.ops.create_public_bug(title: "Checkout 500s on Safari")
19
19
  #
20
20
  # Everything under `Shipeasy::Admin::Generated` (lib/shipeasy_admin*) is produced
21
21
  # by scripts/gen_admin.sh from the OpenAPI spec and must not be edited by hand.
@@ -37,40 +37,43 @@ module Shipeasy
37
37
  module Admin
38
38
  # Programmatic client for the Shipeasy Admin REST API. Each resource group is
39
39
  # a lazily-constructed, memoized reader whose methods map 1:1 to the OpenAPI
40
- # operations: #flags, #configs, #killswitch, #experiments, #universes,
41
- # #attributes, #metrics, #events, #ops, #alerts, #projects, #profiles, #keys,
42
- # #drafts, #errors, #connectors, #api_keys.
40
+ # operations.
41
+ #
42
+ # This is the LEAN admin surface: the vendored spec is the dedicated
43
+ # server-SDK contract (marketplace/openapi/spec/openapi-sdk.yaml in the
44
+ # monorepo), seven operations across three capabilities — file a public
45
+ # ticket (#ops), toggle a kill switch (#killswitch), manage a flag's
46
+ # whitelist (#flags). The rest of the admin API (experiments, metrics,
47
+ # events, configs, i18n, projects, …) is intentionally NOT here; reach it
48
+ # through the Shipeasy CLI or MCP, which consume the complete spec.
43
49
  class Client
44
50
  # Friendly reader name => generated Api class.
45
51
  APIS = {
46
52
  flags: Generated::FlagsApi,
47
- configs: Generated::ConfigsApi,
48
53
  killswitch: Generated::KillswitchApi,
49
- experiments: Generated::ExperimentsApi,
50
- universes: Generated::UniversesApi,
51
- attributes: Generated::AttributesApi,
52
- metrics: Generated::MetricsApi,
53
- events: Generated::EventsApi,
54
54
  ops: Generated::OpsApi,
55
- alerts: Generated::AlertsApi,
56
- projects: Generated::ProjectsApi,
57
- profiles: Generated::ProfilesApi,
58
- keys: Generated::KeysApi,
59
- drafts: Generated::DraftsApi,
60
- errors: Generated::ErrorsApi,
61
- connectors: Generated::ConnectorsApi,
62
- api_keys: Generated::APIKeysApi,
63
55
  }.freeze
64
56
 
57
+ # Two of the seven operations — #ops.create_public_bug and
58
+ # #ops.create_public_feature_request — are the PUBLIC ticket intake. They
59
+ # live on the Shipeasy edge worker and authenticate with a CLIENT key
60
+ # (`X-SDK-Key`), not the admin key, so pass `client_key:` if you want to
61
+ # call them. The generated client routes them to the edge host itself.
62
+ #
65
63
  # @param api_key [String] admin SDK key, sent as `Authorization: Bearer <api_key>`.
66
64
  # @param project_id [String, nil] optional project id sent as the `X-Project-Id`
67
65
  # header on every request. Operations also accept an explicit `x_project_id:`
68
66
  # argument to override per call.
69
- # @param base_url [String] API base URL. Defaults to https://shipeasy.ai
67
+ # @param base_url [String] admin API base URL. Defaults to https://shipeasy.ai
70
68
  # (the spec's production server); use http://localhost:3000 for local dev.
71
- def initialize(api_key:, project_id: nil, base_url: "https://shipeasy.ai")
69
+ # The public intake ignores it — it carries its own server list.
70
+ # @param client_key [String, nil] client SDK key (`sdk_client_…`) carrying the
71
+ # `tickets:public_create` scope, sent as `X-SDK-Key` on the two public
72
+ # ticket operations. Optional — omit it if you only use the admin ones.
73
+ def initialize(api_key:, project_id: nil, base_url: "https://shipeasy.ai", client_key: nil)
72
74
  config = Generated::Configuration.new
73
75
  config.access_token = api_key
76
+ config.api_key["clientSdkKey"] = client_key if client_key
74
77
  scheme, _, host = base_url.rpartition("://")
75
78
  config.scheme = scheme unless scheme.empty?
76
79
  config.host = host.empty? ? base_url : host
@@ -32,7 +32,7 @@ module Shipeasy
32
32
  See = Shipeasy::SDK::See
33
33
 
34
34
  DEFAULT_BASE_URL = "https://api.shipeasy.ai"
35
- # CDN origin serving the static loader scripts (/sdk/bootstrap.js,
35
+ # CDN origin serving the static loader scripts (/sdk/runtime.js,
36
36
  # /sdk/i18n/loader.js) — distinct from the edge API the blobs are fetched from.
37
37
  DEFAULT_CDN_BASE = "https://cdn.shipeasy.ai"
38
38
 
@@ -470,8 +470,9 @@ module Shipeasy
470
470
  end
471
471
 
472
472
  # Return the cross-platform SSR bootstrap <script> tag for a request:
473
- # se-bootstrap.js reads its data-* attributes and hydrates
474
- # window.__SE_BOOTSTRAP (and writes the anon cookie). No key is embedded.
473
+ # /sdk/runtime.js reads its data-* attributes, installs window.shipeasy,
474
+ # republishes window.__SE_BOOTSTRAP for the npm client SDK and writes the
475
+ # anon cookie. No key is embedded.
475
476
  #
476
477
  # Every argument is OPTIONAL and falls back to `Shipeasy.configure`:
477
478
  # `user` to an anonymous request, `i18n_profile:` to `config.profile`,
@@ -483,6 +484,7 @@ module Shipeasy
483
484
  base = cdn_base(base_url || Shipeasy.config.cdn_base_url)
484
485
  attrs = [
485
486
  "data-se-bootstrap",
487
+ "data-se-boot",
486
488
  attr("data-flags", JSON.generate(payload["flags"])),
487
489
  attr("data-configs", JSON.generate(payload["configs"])),
488
490
  attr("data-experiments", JSON.generate(payload["experiments"])),
@@ -493,7 +495,7 @@ module Shipeasy
493
495
  attrs << attr("data-anon-id", anon_id) if anon_id && !anon_id.empty?
494
496
  data_user = identity_attrs(user)
495
497
  attrs << attr("data-user", data_user) if data_user
496
- html %(<script src="#{CGI.escapeHTML("#{base}/sdk/bootstrap.js")}" #{attrs.join(' ')}></script>)
498
+ html %(<script src="#{CGI.escapeHTML("#{base}/sdk/runtime.js")}" #{attrs.join(' ')}></script>)
497
499
  end
498
500
 
499
501
  # Return the i18n loader <script> tag (framework-agnostic; the Rails view
@@ -12,16 +12,18 @@
12
12
  #
13
13
  # Dispatch model (differs from TS, which uses a microtask): `.to(outcome)` is
14
14
  # the terminal — it builds the wire event and fire-and-forgets the POST to
15
- # /collect. `causes_the` and `extras` are chainable setters called *before*
16
- # `.to`; `.to` also accepts the extras inline as a second arg, so there is no
17
- # ordering trap to remember:
15
+ # /collect. `causes_the` and `.to` are two halves of one sentence and must stay
16
+ # adjacent, so pass the extras inline on the terminal:
18
17
  #
19
18
  # client.see(e).causes_the("checkout").to("use cached prices")
20
- # client.see(e).causes_the("checkout").extras({ order_id: oid }).to("use cached prices")
21
19
  # client.see(e).causes_the("checkout").to("use cached prices", { order_id: oid })
22
20
  #
21
+ # `extras` remains a chainable setter callable before `.to`, but do NOT wedge it
22
+ # between the subject and the outcome — it splits the consequence in half and is
23
+ # hard to read.
24
+ #
23
25
  # `.extras` chained AFTER `.to` is ignored with a warning (the report already
24
- # went out) — it never raises into the rescue block.
26
+ # went out) — it never raises into the rescue block, but its extras are dropped.
25
27
  #
26
28
  # To attach context from anywhere in a request without threading it into the
27
29
  # rescue block, use the ambient buffer (see `Context` below):
@@ -1,5 +1,5 @@
1
1
  module Shipeasy
2
2
  module SDK
3
- VERSION = "3.7.0"
3
+ VERSION = "4.0.0"
4
4
  end
5
5
  end