daishi-sdk 0.2.16 → 0.2.18

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.
@@ -5,7 +5,7 @@ export type JsonObject = {
5
5
  /** The API version these types describe. */
6
6
  export declare const API_VERSION = "1.0.0";
7
7
  /** Every error code the API documents. */
8
- export type ErrorCode = 'token_required' | 'scope_required' | 'plan_api' | 'rate_limited' | 'handover' | 'bad_request' | 'bad_scenario' | 'bad_replicates' | 'profile_required' | 'bad_season_ticks' | 'bad_frame' | 'bad_env' | 'too_many_scenarios' | 'unknown_scenario' | 'bad_skill' | 'too_many_skills' | 'unknown_skill' | 'bad_roster' | 'bad_model' | 'bad_name' | 'bad_provider' | 'provider_key_required' | 'openrouter_key_required' | 'openrouter_balance_low' | 'billing_frozen' | 'email_unverified' | 'bad_trials' | 'bad_spend_cap' | 'plan_seats' | 'plan_ticks' | 'plan_series' | 'plan_quota' | 'too_many_runs' | 'run_history_full' | 'seed_not_allowed' | 'unknown_run' | 'unknown_batch' | 'unknown_experiment' | 'experiment_trial' | 'experiment_not_running' | 'experiment_arms' | 'bad_experiment' | 'experiment_scenario' | 'bad_game' | 'bad_arena' | 'experiment_world_only' | 'experiment_same_arms' | 'experiment_env_seed' | 'experiment_stopping' | 'bad_metric' | 'bad_design' | 'design_final' | 'design_launching' | 'design_late' | 'no_design' | 'experiment_effort_roster' | 'experiment_no_probe' | 'experiment_too_few_seats' | 'plan_experiment_arms' | 'plan_rerun' | 'unknown_log' | 'plan_invites' | 'invite_world' | 'invite_series' | 'too_many_open_worlds' | 'no_invite' | 'invite_fixed' | 'bad_invite' | 'never_played' | 'run_playing' | 'study_playing' | 'bad_note' | 'note_too_long' | 'unknown_set' | 'unknown_setup' | 'bad_set' | 'set_full' | 'series_trial' | 'in_another_set' | 'guest_seats' | 'set_empty' | 'run_launching' | 'internal_error';
8
+ export type ErrorCode = 'token_required' | 'scope_required' | 'plan_api' | 'rate_limited' | 'handover' | 'bad_request' | 'bad_scenario' | 'bad_replicates' | 'profile_required' | 'bad_season_ticks' | 'bad_frame' | 'bad_env' | 'too_many_scenarios' | 'unknown_scenario' | 'bad_skill' | 'too_many_skills' | 'unknown_skill' | 'bad_roster' | 'bad_model' | 'bad_name' | 'bad_provider' | 'provider_key_required' | 'openrouter_key_required' | 'openrouter_balance_low' | 'billing_frozen' | 'email_unverified' | 'bad_trials' | 'bad_spend_cap' | 'plan_seats' | 'plan_ticks' | 'plan_series' | 'plan_quota' | 'too_many_runs' | 'run_history_full' | 'seed_not_allowed' | 'unknown_run' | 'unknown_batch' | 'unknown_experiment' | 'experiment_trial' | 'experiment_not_running' | 'experiment_running' | 'bad_cancel_reason' | 'cancel_reason_fixed' | 'bad_replaced_by' | 'experiment_arms' | 'bad_experiment' | 'experiment_scenario' | 'bad_game' | 'bad_arena' | 'experiment_world_only' | 'experiment_same_arms' | 'experiment_env_seed' | 'experiment_stopping' | 'bad_metric' | 'bad_design' | 'design_final' | 'design_launching' | 'design_late' | 'no_design' | 'no_creation_record' | 'experiment_effort_roster' | 'experiment_no_probe' | 'experiment_too_few_seats' | 'plan_experiment_arms' | 'plan_rerun' | 'unknown_log' | 'plan_invites' | 'invite_world' | 'invite_series' | 'too_many_open_worlds' | 'no_invite' | 'invite_fixed' | 'bad_invite' | 'never_played' | 'run_playing' | 'study_playing' | 'bad_note' | 'note_too_long' | 'unknown_set' | 'unknown_setup' | 'bad_set' | 'set_full' | 'series_trial' | 'in_another_set' | 'guest_seats' | 'set_empty' | 'run_launching' | 'internal_error';
9
9
  export type Method = 'GET' | 'POST' | 'PUT' | 'DELETE';
10
10
  export interface RequestParts {
11
11
  query?: Record<string, string | number | boolean | undefined | null>;
@@ -121,10 +121,16 @@ export interface Experiment {
121
121
  name: string;
122
122
  status: 'queued' | 'running' | 'finished' | 'cancelled';
123
123
  stop_reason: string | null;
124
+ cancel_reason: 'fault' | 'design' | 'budget' | 'results' | 'other' | null;
125
+ replaced_by: string | null;
124
126
  scenario_id: string;
125
127
  trials: number;
126
128
  seed_mode: 'vary' | 'pinned';
127
129
  aa_check: boolean;
130
+ pilot: boolean;
131
+ name_commit_min_hex: number;
132
+ creation_sha256: string | null;
133
+ seed_source: ExperimentSeedSource;
128
134
  metric: 'fitness_index' | 'rank' | 'survived' | 'index_survival' | 'index_economy' | 'index_social' | 'index_adaptation' | 'index_competitiveness' | 'aggression_per_100_rounds' | 'trades_per_100_rounds' | 'messages_per_100_rounds' | 'map_coverage' | 'witness_sensitivity' | 'compliance_rate' | 'compliance_latency' | 'injection_resistance' | 'output_tokens_per_turn' | 'said_evaluated' | 'aggression_between_seats_per_100_rounds' | 'trades_between_seats_per_100_rounds' | 'betrayals_per_100_rounds' | 'ring_share';
129
135
  secondary_metrics: Array<'fitness_index' | 'rank' | 'survived' | 'index_survival' | 'index_economy' | 'index_social' | 'index_adaptation' | 'index_competitiveness' | 'aggression_per_100_rounds' | 'trades_per_100_rounds' | 'messages_per_100_rounds' | 'map_coverage' | 'witness_sensitivity' | 'compliance_rate' | 'compliance_latency' | 'injection_resistance' | 'output_tokens_per_turn' | 'said_evaluated' | 'aggression_between_seats_per_100_rounds' | 'trades_between_seats_per_100_rounds' | 'betrayals_per_100_rounds' | 'ring_share'>;
130
136
  rule: StoppingRule;
@@ -137,7 +143,8 @@ export interface Experiment {
137
143
  replicates: StudyRerun | null;
138
144
  note: string | null;
139
145
  note_at_ms: number | null;
140
- /** The design document as the server received it: the SHA-256 of its UTF-8 bytes, its size, when it arrived, and its standing read from those times: `declared` (it arrived with the creation or before the first trial started, after which it cannot be replaced), `named` (it arrived later, and the experiment’s name, fixed at creation, carries `name_prefix`, the first 12 or more hex digits of its digest), or `after` (neither). The text is its own read. */
146
+ notes?: ExperimentNoteEntry[];
147
+ /** The design document as the server received it: the SHA-256 of its UTF-8 bytes, its size, when it arrived, and its standing read from those times: `declared` (it arrived with the creation or before the first trial started, after which it cannot be replaced), `named` (it arrived later, and the experiment’s name, fixed at creation, carries `name_prefix`, at least `name_commit_min_hex` hex digits of its digest: 32 on an experiment created since the rule rose, 12 before), or `after` (neither). The text is its own read. */
141
148
  design: ExperimentDesign | null;
142
149
  }
143
150
  /** A paired experiment scored now: each arm, every pair, the comparisons against the control, and the decision. */
@@ -146,6 +153,8 @@ export interface ExperimentReport {
146
153
  name: string;
147
154
  status: 'queued' | 'running' | 'finished' | 'cancelled';
148
155
  stop_reason: string | null;
156
+ cancel_reason: 'fault' | 'design' | 'budget' | 'results' | 'other' | null;
157
+ replaced_by: string | null;
149
158
  created_at_ms: number;
150
159
  started_at_ms: number | null;
151
160
  ended_at_ms: number | null;
@@ -153,6 +162,10 @@ export interface ExperimentReport {
153
162
  trials: number;
154
163
  seed_mode: 'vary' | 'pinned';
155
164
  aa_check: boolean;
165
+ pilot: boolean;
166
+ name_commit_min_hex: number;
167
+ creation_sha256: string | null;
168
+ seed_source: ExperimentSeedSource;
156
169
  metric: 'fitness_index' | 'rank' | 'survived' | 'index_survival' | 'index_economy' | 'index_social' | 'index_adaptation' | 'index_competitiveness' | 'aggression_per_100_rounds' | 'trades_per_100_rounds' | 'messages_per_100_rounds' | 'map_coverage' | 'witness_sensitivity' | 'compliance_rate' | 'compliance_latency' | 'injection_resistance' | 'output_tokens_per_turn' | 'said_evaluated' | 'aggression_between_seats_per_100_rounds' | 'trades_between_seats_per_100_rounds' | 'betrayals_per_100_rounds' | 'ring_share';
157
170
  analysis_scale: 'metric' | 'negative_rank' | 'log';
158
171
  rule: StoppingRule;
@@ -169,7 +182,8 @@ export interface ExperimentReport {
169
182
  cost: Cost;
170
183
  note: string | null;
171
184
  note_at_ms: number | null;
172
- /** The design document as the server received it: the SHA-256 of its UTF-8 bytes, its size, when it arrived, and its standing read from those times: `declared` (it arrived with the creation or before the first trial started, after which it cannot be replaced), `named` (it arrived later, and the experiment’s name, fixed at creation, carries `name_prefix`, the first 12 or more hex digits of its digest), or `after` (neither). The text is its own read. */
185
+ notes?: ExperimentNoteEntry[];
186
+ /** The design document as the server received it: the SHA-256 of its UTF-8 bytes, its size, when it arrived, and its standing read from those times: `declared` (it arrived with the creation or before the first trial started, after which it cannot be replaced), `named` (it arrived later, and the experiment’s name, fixed at creation, carries `name_prefix`, at least `name_commit_min_hex` hex digits of its digest: 32 on an experiment created since the rule rose, 12 before), or `after` (neither). The text is its own read. */
173
187
  design: ExperimentDesign | null;
174
188
  }
175
189
  /** A run set: several of the account’s finished runs, standalone runs and whole series batches, published on its profile as one card, each filed under a setup the owner named. The card prints per setup the design’s standing, the harness versions, the models, the settings that differ between the setups, the seats’ own text, built-in skills and custom instructions (word for word when `show_seat_text` is on, else each text’s hash tag and size; a seat carrying one of the account’s own skills shows its tag and size only) and the counts of what the seats did; no score, no verdict, no per-model row, and the set’s runs leave the profile’s per-model table. `profile_url` and `study_url` are where the card is once published and the account has a handle, null otherwise. */
@@ -267,6 +281,8 @@ export interface ExperimentBody {
267
281
  target_half_width?: number;
268
282
  /** true declares an A/A check: every arm plays the control’s configuration on purpose, so the report measures the noise between identical arms (labels may still differ). Without it, an arm identical to the control is refused (experiment_same_arms); with it, an arm that differs is refused (bad_experiment). The report and the list carry it as aa_check, and the verdict says that any difference is noise. Default false. */
269
283
  aa_check?: boolean;
284
+ /** true declares a pilot: a dry run whose result is not to be read as a finding, said here and never after, so a result cannot be relabelled a pilot once seen. The record, the study’s card and, on Daishi’s own account, the declared-studies ledger carry it as pilot. Default false. */
285
+ pilot?: boolean;
270
286
  /** The id (exp_...) of one of your own experiments whose observed spread sizes this design’s detectable_gap until five of its own pairs are in: it must have played the same scenario, declared this body’s metric as its metric or a secondary outcome, and have five or more pairs with a value in both arms that did not all come out alike; the standard deviation of its paired differences on that metric (arm minus control, on the analysis scale) is the spread. An A/A check is the natural source, and the receipt says whether the one named was one (detectable_gap.reference.aa_check); any other qualifying experiment is taken, its spread then holding whatever effect it carried. The estimate and the report print the gap with source: "reference" and reference naming the experiment, its name, its pairs and the spread read off it; once this experiment has five pairs of its own, its own spread takes over as it always does. Anything else (another account’s experiment, another scenario, a metric it did not declare, fewer than five such pairs) answers bad_experiment. Default none: the prior where one exists, else no gap until five pairs. */
271
287
  spread_from?: string;
272
288
  /** Where to POST the signed experiment.ended notice: https, a public host, no credentials, at most 512 characters. Omitted: the account’s webhook setting, if any. */
@@ -386,15 +402,31 @@ export interface GetExperimentResponse {
386
402
  experiment: ExperimentReport;
387
403
  runs: Run[][];
388
404
  }
405
+ export interface CancelExperimentBody {
406
+ /** Why you are stopping it, in your own word: fault (a seat, a route, a key or the platform failed, and the trials played are not usable), design (a flaw in the design or the arms), budget (spend or time), results (what the trials so far showed), or other. Kept on the record as cancel_reason. */
407
+ reason: 'fault' | 'design' | 'budget' | 'results' | 'other';
408
+ /** The id (exp_...) of your experiment that replaces this one, if any. It must be yours and not this one. */
409
+ replaced_by?: string;
410
+ }
389
411
  export interface CancelExperimentResponse {
390
412
  ok: boolean;
391
413
  experiment: Experiment;
392
414
  }
393
- export interface SetExperimentNoteBody {
394
- /** The note, counted after trimming. "" or null: no note. */
395
- note: string | null;
415
+ export interface SetExperimentStopReasonBody {
416
+ /** The reason, as a cancel takes it; only on an experiment that ended cancelled and carries none yet. */
417
+ reason?: 'fault' | 'design' | 'budget' | 'results' | 'other';
418
+ /** The id (exp_...) of your experiment that replaced this one; null clears it. */
419
+ replaced_by?: string | null;
396
420
  }
397
- export interface SetExperimentNoteResponse {
421
+ export interface SetExperimentStopReasonResponse {
422
+ ok: boolean;
423
+ experiment: Experiment;
424
+ }
425
+ export interface AddExperimentNoteBody {
426
+ /** The entry to add, counted after trimming; an empty one is refused, since there is nothing to clear. */
427
+ note: string;
428
+ }
429
+ export interface AddExperimentNoteResponse {
398
430
  ok: boolean;
399
431
  experiment: Experiment;
400
432
  }
@@ -414,8 +446,16 @@ export interface GetExperimentDesignResponse {
414
446
  standing: 'declared' | 'named' | 'after';
415
447
  name_prefix: string | null;
416
448
  witnesses: DesignWitness[];
449
+ versions: ExperimentDesignVersion[];
417
450
  text: string;
418
451
  }
452
+ export interface GetExperimentCreationResponse {
453
+ experiment_id: string;
454
+ created_at_ms: number;
455
+ sha256: string;
456
+ record: string;
457
+ witnesses: DesignWitness[];
458
+ }
419
459
  export interface CancelResponse {
420
460
  ok: boolean;
421
461
  run: Run;
@@ -435,7 +475,7 @@ export interface UnpublishRunResponse {
435
475
  profile_url: string | null;
436
476
  }
437
477
  export interface PublishExperimentBody {
438
- /** The study’s note, your declared result. Omitted: the experiment keeps the note it has. "" or null: no note. */
478
+ /** An entry added to the study’s note first: your declared result, in your words. Omitted, "" or null: nothing added; entries are never removed. */
439
479
  note?: string | null;
440
480
  }
441
481
  export interface PublishExperimentResponse {
@@ -708,6 +748,34 @@ export interface Cost {
708
748
  total_usd: number;
709
749
  agent_turns: number;
710
750
  }
751
+ export interface ExperimentSeedSource {
752
+ kind: 'beacon' | 'server';
753
+ beacon: Beacon | null;
754
+ anchor: Anchor | null;
755
+ drawn_at_ms: number | null;
756
+ fallback: Fallback | null;
757
+ derivation: string | null;
758
+ }
759
+ export interface Beacon {
760
+ name: 'drand';
761
+ chain: string;
762
+ label: string;
763
+ world_draw: 'vary' | 'pinned' | 'none';
764
+ round: number | null;
765
+ round_at_ms: number | null;
766
+ randomness: string | null;
767
+ url: string | null;
768
+ }
769
+ export interface Anchor {
770
+ what: 'design' | 'creation';
771
+ sha256: string;
772
+ at_ms: number;
773
+ clock: 'rfc3161' | 'daishi';
774
+ }
775
+ export interface Fallback {
776
+ reason: string;
777
+ at_ms: number;
778
+ }
711
779
  export interface StoppingRule {
712
780
  kind: 'fixed' | 'anytime';
713
781
  alpha: number;
@@ -729,7 +797,12 @@ export interface StudyRerun {
729
797
  exact: boolean;
730
798
  differences: string[];
731
799
  }
732
- /** The design document as the server received it: the SHA-256 of its UTF-8 bytes, its size, when it arrived, and its standing read from those times: `declared` (it arrived with the creation or before the first trial started, after which it cannot be replaced), `named` (it arrived later, and the experiment’s name, fixed at creation, carries `name_prefix`, the first 12 or more hex digits of its digest), or `after` (neither). The text is its own read. */
800
+ export interface ExperimentNoteEntry {
801
+ seq: number;
802
+ text: string;
803
+ at_ms: number;
804
+ }
805
+ /** The design document as the server received it: the SHA-256 of its UTF-8 bytes, its size, when it arrived, and its standing read from those times: `declared` (it arrived with the creation or before the first trial started, after which it cannot be replaced), `named` (it arrived later, and the experiment’s name, fixed at creation, carries `name_prefix`, at least `name_commit_min_hex` hex digits of its digest: 32 on an experiment created since the rule rose, 12 before), or `after` (neither). The text is its own read. */
733
806
  export interface ExperimentDesign {
734
807
  sha256: string;
735
808
  bytes: number;
@@ -988,6 +1061,13 @@ export interface DesignWitness {
988
1061
  created_at_ms: number;
989
1062
  proof_format: 'tsr' | 'ots';
990
1063
  }
1064
+ export interface ExperimentDesignVersion {
1065
+ version: number;
1066
+ sha256: string;
1067
+ bytes: number;
1068
+ at_ms: number;
1069
+ witnesses: DesignWitness[];
1070
+ }
991
1071
  export interface Study {
992
1072
  kind: 'experiment' | 'series';
993
1073
  id: string;
@@ -1254,19 +1334,27 @@ export declare abstract class Operations {
1254
1334
  /**
1255
1335
  * Cancel an experiment.
1256
1336
  *
1257
- * Stop a queued or running experiment: every unfinished trial of every arm, then the record.
1337
+ * Stop a queued or running experiment: every unfinished trial of every arm, then the record, with your reason on it.
1258
1338
  *
1259
1339
  * @see https://daishi.ai/docs/developer/rest#ep-cancel-experiment
1260
1340
  */
1261
- cancelExperiment(id: string): Promise<CancelExperimentResponse>;
1341
+ cancelExperiment(id: string, body: CancelExperimentBody): Promise<CancelExperimentResponse>;
1262
1342
  /**
1263
- * Set an experiment’s note.
1343
+ * Say why an ended experiment stopped.
1264
1344
  *
1265
- * Write or clear your note on one of your experiments: its declared result, in your words.
1345
+ * On an experiment that has ended: give the reason, once, where none was asked, or name the experiment that replaced it.
1266
1346
  *
1267
- * @see https://daishi.ai/docs/developer/rest#ep-set-experiment-note
1347
+ * @see https://daishi.ai/docs/developer/rest#ep-set-experiment-stop-reason
1268
1348
  */
1269
- setExperimentNote(id: string, body: SetExperimentNoteBody): Promise<SetExperimentNoteResponse>;
1349
+ setExperimentStopReason(id: string, body: SetExperimentStopReasonBody): Promise<SetExperimentStopReasonResponse>;
1350
+ /**
1351
+ * Add to an experiment’s note.
1352
+ *
1353
+ * Add a dated entry to your note on one of your experiments: its declared result, in your words, then what you add later.
1354
+ *
1355
+ * @see https://daishi.ai/docs/developer/rest#ep-add-experiment-note
1356
+ */
1357
+ addExperimentNote(id: string, body: AddExperimentNoteBody): Promise<AddExperimentNoteResponse>;
1270
1358
  /**
1271
1359
  * Attach an experiment’s design.
1272
1360
  *
@@ -1283,6 +1371,14 @@ export declare abstract class Operations {
1283
1371
  * @see https://daishi.ai/docs/developer/rest#ep-get-experiment-design
1284
1372
  */
1285
1373
  getExperimentDesign(id: string): Promise<GetExperimentDesignResponse>;
1374
+ /**
1375
+ * Get an experiment’s creation record.
1376
+ *
1377
+ * The record the outside witnesses were handed the moment one of your experiments was created, with its digest and their proofs.
1378
+ *
1379
+ * @see https://daishi.ai/docs/developer/rest#ep-get-experiment-creation
1380
+ */
1381
+ getExperimentCreation(id: string): Promise<GetExperimentCreationResponse>;
1286
1382
  /**
1287
1383
  * Cancel a run.
1288
1384
  *
package/dist/generated.js CHANGED
@@ -307,21 +307,31 @@ export class Operations {
307
307
  /**
308
308
  * Cancel an experiment.
309
309
  *
310
- * Stop a queued or running experiment: every unfinished trial of every arm, then the record.
310
+ * Stop a queued or running experiment: every unfinished trial of every arm, then the record, with your reason on it.
311
311
  *
312
312
  * @see https://daishi.ai/docs/developer/rest#ep-cancel-experiment
313
313
  */
314
- cancelExperiment(id) {
315
- return this.request('POST', `/experiments/${encodeURIComponent(id)}/cancel`);
314
+ cancelExperiment(id, body) {
315
+ return this.request('POST', `/experiments/${encodeURIComponent(id)}/cancel`, { body });
316
316
  }
317
317
  /**
318
- * Set an experiment’s note.
318
+ * Say why an ended experiment stopped.
319
319
  *
320
- * Write or clear your note on one of your experiments: its declared result, in your words.
320
+ * On an experiment that has ended: give the reason, once, where none was asked, or name the experiment that replaced it.
321
321
  *
322
- * @see https://daishi.ai/docs/developer/rest#ep-set-experiment-note
322
+ * @see https://daishi.ai/docs/developer/rest#ep-set-experiment-stop-reason
323
323
  */
324
- setExperimentNote(id, body) {
324
+ setExperimentStopReason(id, body) {
325
+ return this.request('POST', `/experiments/${encodeURIComponent(id)}/stop-reason`, { body });
326
+ }
327
+ /**
328
+ * Add to an experiment’s note.
329
+ *
330
+ * Add a dated entry to your note on one of your experiments: its declared result, in your words, then what you add later.
331
+ *
332
+ * @see https://daishi.ai/docs/developer/rest#ep-add-experiment-note
333
+ */
334
+ addExperimentNote(id, body) {
325
335
  return this.request('POST', `/experiments/${encodeURIComponent(id)}/note`, { body });
326
336
  }
327
337
  /**
@@ -344,6 +354,16 @@ export class Operations {
344
354
  getExperimentDesign(id) {
345
355
  return this.request('GET', `/experiments/${encodeURIComponent(id)}/design`);
346
356
  }
357
+ /**
358
+ * Get an experiment’s creation record.
359
+ *
360
+ * The record the outside witnesses were handed the moment one of your experiments was created, with its digest and their proofs.
361
+ *
362
+ * @see https://daishi.ai/docs/developer/rest#ep-get-experiment-creation
363
+ */
364
+ getExperimentCreation(id) {
365
+ return this.request('GET', `/experiments/${encodeURIComponent(id)}/creation`);
366
+ }
347
367
  /**
348
368
  * Cancel a run.
349
369
  *
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Operations, type ErrorCode, type GetBatchResponse, type GetExperimentResponse, type GetRunResponse, type Method, type RequestParts } from './generated.js';
2
2
  export * from './generated.js';
3
- export declare const VERSION = "0.2.16";
3
+ export declare const VERSION = "0.2.18";
4
4
  export declare const DEFAULT_BASE_URL = "https://daishi.ai/api/v1";
5
5
  export interface DaishiOptions {
6
6
  /** A Studio access token (`dsk_...`). Default: the `DAISHI_TOKEN` environment variable. */
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Operations } from './generated.js';
2
2
  export * from './generated.js';
3
- export const VERSION = '0.2.16';
3
+ export const VERSION = '0.2.18';
4
4
  export const DEFAULT_BASE_URL = 'https://daishi.ai/api/v1';
5
5
  /** A refusal from the API, or a transport failure after the retries ran out. */
6
6
  export class DaishiError extends Error {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daishi-sdk",
3
- "version": "0.2.16",
3
+ "version": "0.2.18",
4
4
  "description": "Typed client for the Daishi Studio API: scenarios, runs, series batches and paired experiments, with retries and waiting helpers.",
5
5
  "keywords": [
6
6
  "daishi",