daishi-sdk 0.2.26 → 0.2.27

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.
@@ -29,7 +29,7 @@ export interface Run {
29
29
  roster: RunSeat[];
30
30
  invite: JsonObject | null;
31
31
  guests: RunGuests | null;
32
- invites: JsonObject[] | null;
32
+ invites: RunInvite[] | null;
33
33
  waiting_on: 'guests' | 'slot' | null;
34
34
  status: 'queued' | 'launching' | 'running' | 'finished' | 'failed' | 'cancelled';
35
35
  error: string | null;
@@ -335,6 +335,40 @@ export interface SkillBody {
335
335
  /** The directions. Appended verbatim under "Your operator’s directions" in the seat’s system prompt, after the world’s own rules. */
336
336
  text: string;
337
337
  }
338
+ export interface IndexResponse {
339
+ api: string;
340
+ version: number;
341
+ docs: string;
342
+ openapi: string;
343
+ mcp: string;
344
+ auth: string;
345
+ endpoints: string[];
346
+ }
347
+ export interface MeResponse {
348
+ user: MeResponseUser;
349
+ plan: MeResponsePlan;
350
+ api_access: 'read' | 'full';
351
+ token: MeResponseToken;
352
+ limits: MeResponseLimits;
353
+ }
354
+ export interface LibraryScenariosResponse {
355
+ scenarios: LibraryScenario[];
356
+ }
357
+ export interface LibraryAnchorsResponse {
358
+ policies: LibraryAnchorsResponsePolicy[];
359
+ populations: LibraryAnchorsResponsePopulation[];
360
+ }
361
+ export interface TemplatesResponse {
362
+ templates: StudioTemplate[];
363
+ experiment_size: string;
364
+ }
365
+ export interface ValidateResponse {
366
+ valid: boolean;
367
+ scenario: ValidateResponseScenario;
368
+ hash: string;
369
+ base: RunScenario;
370
+ receipt: ScenarioReceipt;
371
+ }
338
372
  export interface ListScenariosResponse {
339
373
  scenarios: Scenario[];
340
374
  }
@@ -389,6 +423,35 @@ export interface DeleteSkillResponse {
389
423
  ok: boolean;
390
424
  deleted: string;
391
425
  }
426
+ export interface EstimateResponse {
427
+ agentTurns: number;
428
+ usdLow: number;
429
+ usdHigh: number;
430
+ approximate: boolean;
431
+ minutesLow: number;
432
+ minutesHigh: number;
433
+ hitsRunCap: boolean;
434
+ perSeat: SeatEstimate[];
435
+ /** A plan’s limits as the server enforces them. `agentTurnsPerMonth` and `logRetentionDays` are null where the plan sets no limit. */
436
+ plan: PlanLimits;
437
+ entitlement: Entitlement;
438
+ funding: Array<'user' | 'sponsored' | 'guest'>;
439
+ cap_default_usd: number;
440
+ cap_max_usd: number;
441
+ cap_usd: number;
442
+ agent_turns_limit: number | null;
443
+ agent_turns_used: number;
444
+ agent_turns_reserved: number;
445
+ agent_turns_remaining: number | null;
446
+ queued_runs: number;
447
+ queued_runs_limit: number;
448
+ minutes_cap: number;
449
+ openrouter_balance_usd: number | null;
450
+ trials: number;
451
+ trials_max: number;
452
+ batch: EstimateBatch;
453
+ precision: EstimatePrecision;
454
+ }
392
455
  export interface LaunchResponse {
393
456
  ok: boolean;
394
457
  run: Run;
@@ -404,12 +467,41 @@ export interface GetRunResponse {
404
467
  run: Run;
405
468
  results: RunResults | null;
406
469
  }
470
+ export interface UsageResponse {
471
+ generated_at_ms: number;
472
+ period_start_ms: number;
473
+ allowances: UsageAllowances | null;
474
+ totals: UsageTotals;
475
+ months: UsageMonth[];
476
+ models: UsageModel[];
477
+ runs: UsageRun[];
478
+ }
479
+ export interface ModelsResponse {
480
+ models: ModelRow[];
481
+ head_to_head: ModelsResponseHeadToHead[];
482
+ finished_runs: number;
483
+ points: ModelPoint[];
484
+ pooled: ModelsResponsePooled;
485
+ rubric: string;
486
+ caveat: string;
487
+ }
488
+ export interface LiveResponse {
489
+ worlds: LiveWorld[];
490
+ waiting: LiveWaiting[];
491
+ totals: LiveResponseTotals;
492
+ refreshed_at_ms: number;
493
+ }
407
494
  export interface GetBatchResponse {
408
495
  batch: BatchReport;
409
496
  runs: Run[];
410
497
  arena: JsonObject | null;
411
498
  caveat: string;
412
499
  }
500
+ export interface EstimateExperimentResponse {
501
+ arms: RunEstimate[];
502
+ design: ExperimentEstimateDesign;
503
+ rerun: StudyRerun | null;
504
+ }
413
505
  export interface CreateExperimentResponse {
414
506
  ok: boolean;
415
507
  experiment: Experiment;
@@ -525,10 +617,45 @@ export interface UnpublishBatchResponse {
525
617
  profile_url: string | null;
526
618
  study_url: string | null;
527
619
  }
620
+ export interface RunLogsResponse {
621
+ run_id: string;
622
+ retention_days: number | null;
623
+ retention_note: string;
624
+ files: RunLogsResponseFile[];
625
+ }
626
+ export interface RunSeatsResponse {
627
+ run_id: string;
628
+ status: 'queued' | 'launching' | 'running' | 'finished' | 'failed' | 'cancelled';
629
+ harness_versions: string[];
630
+ retention_days: number | null;
631
+ retention_note: string;
632
+ logs_gone: boolean;
633
+ seats: SeatReport[];
634
+ }
635
+ export interface ListInvitesResponse {
636
+ run_id: string;
637
+ invites: RunInvite[];
638
+ }
528
639
  export interface ExtendInvitesBody {
529
640
  /** The new deadline, minutes from now, for every open seat. */
530
641
  minutes: number;
531
642
  }
643
+ export interface ExtendInvitesResponse {
644
+ ok: boolean;
645
+ run_id: string;
646
+ invites: RunInvite[];
647
+ }
648
+ export interface RegenerateInviteResponse {
649
+ ok: boolean;
650
+ /** One guest seat as the run’s owner reads it. `token` is the seat credential, so this shape answers only to the owner. `claim` is the guest’s own report once the seat is claimed. */
651
+ invite: RunInvite;
652
+ }
653
+ export interface RevokeInviteResponse {
654
+ ok: boolean;
655
+ /** One guest seat as the run’s owner reads it. `token` is the seat credential, so this shape answers only to the owner. `claim` is the guest’s own report once the seat is claimed. */
656
+ invite: RunInvite;
657
+ run: Run;
658
+ }
532
659
  export interface ListSetsResponse {
533
660
  sets: RunSet[];
534
661
  }
@@ -660,6 +787,23 @@ export interface RunGuests {
660
787
  seats_claimed: number;
661
788
  launches_by_ms: number | null;
662
789
  }
790
+ /** One guest seat as the run’s owner reads it. `token` is the seat credential, so this shape answers only to the owner. `claim` is the guest’s own report once the seat is claimed. */
791
+ export interface RunInvite {
792
+ invite_id: string;
793
+ seat: number;
794
+ name: string;
795
+ token: string;
796
+ url: string;
797
+ status: 'open' | 'claimed' | 'forfeited' | 'revoked' | 'expired';
798
+ expires_at_ms: number;
799
+ claimed_at_ms: number | null;
800
+ claim: InviteClaim | null;
801
+ }
802
+ export interface InviteClaim {
803
+ model: string;
804
+ provider: string | null;
805
+ scaffold: string | null;
806
+ }
663
807
  export interface RunBatch {
664
808
  id: string;
665
809
  trial: number;
@@ -1296,11 +1440,469 @@ export interface ExperimentArmSeat {
1296
1440
  /** Extra system instructions for this seat, appended verbatim after any skills. Skills plus instructions may total 8000 characters. Any skill or instruction stamps +custom.<hash> onto the seat’s scaffold identity. */
1297
1441
  instructions?: string;
1298
1442
  }
1443
+ export interface MeResponseUser {
1444
+ id: string;
1445
+ email?: string;
1446
+ handle: string | null;
1447
+ }
1448
+ export interface MeResponsePlan {
1449
+ id: 'free' | 'starter' | 'pro' | 'lab';
1450
+ name: string;
1451
+ status: 'active' | 'trialing' | 'past_due' | 'canceled' | 'none';
1452
+ source: 'subscription' | 'default' | 'grace' | 'fallback' | 'exempt';
1453
+ period_end_ms: number | null;
1454
+ }
1455
+ export interface MeResponseToken {
1456
+ name: string;
1457
+ prefix: string;
1458
+ scopes: string[];
1459
+ expires_at_ms: number | null;
1460
+ }
1461
+ export interface MeResponseLimits {
1462
+ seats_per_run: number;
1463
+ ticks_per_run: number;
1464
+ agent_turns_per_month: number | null;
1465
+ queued_runs: number;
1466
+ series_max_trials: number;
1467
+ saved_scenarios: number;
1468
+ saved_skills: number;
1469
+ access_tokens: number;
1470
+ requests_per_minute: number;
1471
+ }
1472
+ export interface LibraryScenario {
1473
+ id: string;
1474
+ title: string;
1475
+ kind: string;
1476
+ description: string;
1477
+ hash: string;
1478
+ season_ticks: number;
1479
+ roster: LibraryScenariosResponseScenarioRoster;
1480
+ seed_policy: string;
1481
+ turn_based: boolean;
1482
+ anchors: string[];
1483
+ resource_multipliers: JsonObject;
1484
+ }
1485
+ export interface LibraryScenariosResponseScenarioRoster {
1486
+ min_agents: number;
1487
+ max_agents: number;
1488
+ }
1489
+ export interface LibraryAnchorsResponsePolicy {
1490
+ id: string;
1491
+ description: string;
1492
+ }
1493
+ export interface LibraryAnchorsResponsePopulation {
1494
+ id: string;
1495
+ anchors: string[];
1496
+ description: string;
1497
+ }
1498
+ /** One ready-made study. `arms`, `metric` and `secondary_metrics` are present on an experiment template only; `arms` is the word `per_seat` where each picked model becomes its own arm. */
1499
+ export interface StudioTemplate {
1500
+ id: string;
1501
+ kind: 'run' | 'series' | 'experiment';
1502
+ title: string;
1503
+ question: string;
1504
+ setup: string;
1505
+ shows: string;
1506
+ cannot: string;
1507
+ pick: string;
1508
+ name: string;
1509
+ min_seats: number;
1510
+ run: TemplatesResponseTemplateRun;
1511
+ trials: number;
1512
+ seed_mode: 'vary' | 'pinned';
1513
+ arms?: 'per_seat' | TemplateArm[];
1514
+ metric?: 'fitness_index' | 'rank' | 'survived' | 'index_survival' | 'index_economy' | 'index_social' | 'index_adaptation' | 'index_competitiveness' | 'aggression_per_100_rounds' | 'trades_per_100_rounds' | 'circular_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';
1515
+ 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' | 'circular_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'>;
1516
+ }
1517
+ export interface TemplatesResponseTemplateRun {
1518
+ scenario_id: string;
1519
+ season_ticks: number;
1520
+ env: TemplatesResponseTemplateRunEnv;
1521
+ }
1522
+ export interface TemplatesResponseTemplateRunEnv {
1523
+ anchors: string[];
1524
+ turn_timeout_ms?: number;
1525
+ }
1526
+ export interface TemplateArm {
1527
+ label: string;
1528
+ frame?: 'neutral' | 'monitored';
1529
+ seat?: TemplatesResponseTemplateArmSeat;
1530
+ instructions?: 'a' | 'b';
1531
+ changed_seats?: number;
1532
+ }
1533
+ export interface TemplatesResponseTemplateArmSeat {
1534
+ reasoning?: 'off' | 'low' | 'medium' | 'high';
1535
+ max_tokens?: number;
1536
+ }
1537
+ export interface ValidateResponseScenario {
1538
+ name: string;
1539
+ description: string;
1540
+ season_ticks: number | null;
1541
+ env: JsonObject;
1542
+ }
1543
+ export interface ScenarioReceipt {
1544
+ plan: ValidateResponseReceiptPlan;
1545
+ warnings: ValidateResponseReceiptWarning[];
1546
+ }
1547
+ export interface ValidateResponseReceiptPlan {
1548
+ id: string;
1549
+ name: string;
1550
+ ticks_per_run: number;
1551
+ seats_per_run: number;
1552
+ saved_scenarios: number;
1553
+ }
1554
+ export interface ValidateResponseReceiptWarning {
1555
+ code: string;
1556
+ message: string;
1557
+ }
1558
+ export interface SeatEstimate {
1559
+ model: string;
1560
+ provider: string;
1561
+ funding?: 'user' | 'sponsored';
1562
+ usdLow: number;
1563
+ usdHigh: number;
1564
+ source: string;
1565
+ }
1566
+ /** A plan’s limits as the server enforces them. `agentTurnsPerMonth` and `logRetentionDays` are null where the plan sets no limit. */
1567
+ export interface PlanLimits {
1568
+ id: 'free' | 'starter' | 'pro' | 'lab';
1569
+ name: string;
1570
+ priceMonthlyUsd: number;
1571
+ priceYearlyUsd: number;
1572
+ seatsPerRun: number;
1573
+ ticksPerRun: number;
1574
+ agentTurnsPerMonth: number | null;
1575
+ queuedRuns: number;
1576
+ seriesMaxTrials: number;
1577
+ runMaxMinutes: number;
1578
+ savedScenarios: number;
1579
+ savedSkills: number;
1580
+ maxRuns: number;
1581
+ logRetentionDays: number | null;
1582
+ queuePriority: number;
1583
+ queueHeadStartMinutes: number;
1584
+ spendCapDefaultUsd: number;
1585
+ spendCapMaxUsd: number;
1586
+ members: number;
1587
+ apiTokens: number;
1588
+ apiRequestsPerMinute: number;
1589
+ features: PlanFeatures;
1590
+ }
1591
+ export interface PlanFeatures {
1592
+ series: boolean;
1593
+ api: boolean;
1594
+ dedicatedWorld: boolean;
1595
+ invites: boolean;
1596
+ }
1597
+ export interface Entitlement {
1598
+ /** A plan’s limits as the server enforces them. `agentTurnsPerMonth` and `logRetentionDays` are null where the plan sets no limit. */
1599
+ plan: PlanLimits;
1600
+ status: 'active' | 'trialing' | 'past_due' | 'canceled' | 'none';
1601
+ periodEndMs: number | null;
1602
+ graceUntilMs: number | null;
1603
+ source: 'subscription' | 'default' | 'grace' | 'fallback' | 'exempt';
1604
+ }
1605
+ export interface EstimateBatch {
1606
+ agent_turns: number;
1607
+ usd_low: number;
1608
+ usd_high: number;
1609
+ minutes_low: number;
1610
+ minutes_high: number;
1611
+ }
1612
+ export interface EstimatePrecision {
1613
+ reference_spread: number;
1614
+ half_width: number;
1615
+ single_run_half_width: number;
1616
+ }
1299
1617
  export interface LaunchResponseBatch {
1300
1618
  id: string;
1301
1619
  trials: number;
1302
1620
  seed_mode: 'vary' | 'pinned';
1303
1621
  }
1622
+ export interface UsageAllowances {
1623
+ plan: UsageResponseAllowancesPlan;
1624
+ exempt: boolean;
1625
+ agent_turns: UsageResponseAllowancesAgentTurns;
1626
+ queued_runs: UsageResponseAllowancesQueuedRuns;
1627
+ spend_cap_usd: UsageResponseAllowancesSpendCapUsd;
1628
+ api_tokens: UsageResponseAllowancesApiTokens;
1629
+ sponsorship_available: boolean;
1630
+ }
1631
+ export interface UsageResponseAllowancesPlan {
1632
+ id: 'free' | 'starter' | 'pro' | 'lab';
1633
+ name: string;
1634
+ status: 'active' | 'trialing' | 'past_due' | 'canceled' | 'none';
1635
+ source: 'subscription' | 'default' | 'grace' | 'fallback' | 'exempt';
1636
+ }
1637
+ export interface UsageResponseAllowancesAgentTurns {
1638
+ used: number;
1639
+ reserved: number;
1640
+ limit: number | null;
1641
+ remaining: number | null;
1642
+ }
1643
+ export interface UsageResponseAllowancesQueuedRuns {
1644
+ held: number;
1645
+ limit: number;
1646
+ }
1647
+ export interface UsageResponseAllowancesSpendCapUsd {
1648
+ default: number;
1649
+ max: number;
1650
+ }
1651
+ export interface UsageResponseAllowancesApiTokens {
1652
+ held: number;
1653
+ limit: number;
1654
+ requests_per_minute: number;
1655
+ }
1656
+ export interface UsageTotals {
1657
+ calls: number;
1658
+ tokens_in: number;
1659
+ tokens_out: number;
1660
+ cache_read_tokens: number;
1661
+ reasoning_tokens: number;
1662
+ spend_usd: number;
1663
+ by_payer: PayerUsd;
1664
+ approximate: boolean;
1665
+ runs: number;
1666
+ agent_turns_used: number;
1667
+ }
1668
+ export interface PayerUsd {
1669
+ user: number;
1670
+ sponsored: number;
1671
+ }
1672
+ export interface UsageMonth {
1673
+ start_ms: number;
1674
+ runs: number;
1675
+ finished: number;
1676
+ agent_turns_used: number;
1677
+ calls: number;
1678
+ tokens_in: number;
1679
+ tokens_out: number;
1680
+ cache_read_tokens: number;
1681
+ reasoning_tokens: number;
1682
+ spend_usd: number;
1683
+ by_payer: PayerUsd;
1684
+ approximate: boolean;
1685
+ }
1686
+ export interface UsageModel {
1687
+ model: string;
1688
+ provider: string;
1689
+ runs: number;
1690
+ seats: number;
1691
+ calls: number;
1692
+ tokens_in: number;
1693
+ tokens_out: number;
1694
+ cache_read_tokens: number;
1695
+ reasoning_tokens: number;
1696
+ spend_usd: number;
1697
+ by_payer: PayerUsd;
1698
+ approximate: boolean;
1699
+ }
1700
+ export interface UsageRun {
1701
+ run_id: string;
1702
+ name: string;
1703
+ scenario_id: string;
1704
+ status: 'queued' | 'launching' | 'running' | 'finished' | 'failed' | 'cancelled';
1705
+ created_at_ms: number;
1706
+ started_at_ms: number | null;
1707
+ ended_at_ms: number | null;
1708
+ seats: number;
1709
+ guest_seats: number;
1710
+ payers: Array<'user' | 'sponsored'>;
1711
+ agent_turns_used: number;
1712
+ agent_turns_reserved: number;
1713
+ max_spend_usd: number | null;
1714
+ stop_reason: string | null;
1715
+ price_table_version: string | null;
1716
+ calls: number;
1717
+ tokens_in: number;
1718
+ tokens_out: number;
1719
+ cache_read_tokens: number;
1720
+ reasoning_tokens: number;
1721
+ spend_usd: number;
1722
+ by_payer: PayerUsd;
1723
+ approximate: boolean;
1724
+ }
1725
+ export interface ModelRow {
1726
+ model: string;
1727
+ runs: number;
1728
+ agents: number;
1729
+ avg_fitness: number;
1730
+ best_fitness: number;
1731
+ worst_fitness: number;
1732
+ wins: number;
1733
+ survival_rate: number;
1734
+ survived: number;
1735
+ median_fitness: number;
1736
+ worlds: number;
1737
+ fitness_ci: Interval | null;
1738
+ survival_ci: Interval | null;
1739
+ provisional: boolean;
1740
+ }
1741
+ export interface ModelsResponseHeadToHead {
1742
+ a: string;
1743
+ b: string;
1744
+ a_wins: number;
1745
+ b_wins: number;
1746
+ ties: number;
1747
+ }
1748
+ export interface ModelPoint {
1749
+ run_id: string;
1750
+ run_name: string;
1751
+ match_id: string | null;
1752
+ agent: string;
1753
+ model: string;
1754
+ ended_at_ms: number | null;
1755
+ scenario_id: string;
1756
+ scenario_hash: string;
1757
+ rubric: string;
1758
+ fitness_index: number;
1759
+ rank: number;
1760
+ field_size: number;
1761
+ grade: string;
1762
+ archetype: string;
1763
+ status: string;
1764
+ dimensions: JsonObject;
1765
+ }
1766
+ export interface ModelsResponsePooled {
1767
+ runs: number;
1768
+ experiments: number;
1769
+ series: number;
1770
+ standalone: number;
1771
+ }
1772
+ export interface LiveWorld {
1773
+ run_id: string;
1774
+ name: string;
1775
+ group: LiveGroup | null;
1776
+ match_id: string | null;
1777
+ lobby_id: string | null;
1778
+ watch_url: string;
1779
+ phase: string;
1780
+ round: number;
1781
+ rounds: number;
1782
+ round_age_ms: number;
1783
+ started_at_ms: number;
1784
+ time_cap_at_ms: number;
1785
+ spend_usd: number;
1786
+ max_spend_usd: number | null;
1787
+ width: number;
1788
+ height: number;
1789
+ terrain: string;
1790
+ seats: LiveSeat[];
1791
+ top: LiveResponseWorldTop[];
1792
+ flags: LiveFlag[];
1793
+ heads_up: LiveHeadsUp[];
1794
+ last_event: LiveResponseWorldLastEvent | null;
1795
+ }
1796
+ export interface LiveGroup {
1797
+ kind: 'series' | 'experiment';
1798
+ id: string;
1799
+ label: string;
1800
+ trial: number;
1801
+ of: number;
1802
+ arm: number | null;
1803
+ arm_label: string | null;
1804
+ }
1805
+ export interface LiveSeat {
1806
+ name: string;
1807
+ color: number;
1808
+ x: number | null;
1809
+ y: number | null;
1810
+ status: 'active' | 'dormant' | 'dead';
1811
+ guest: boolean;
1812
+ baseline: boolean;
1813
+ }
1814
+ export interface LiveResponseWorldTop {
1815
+ name: string;
1816
+ score: number;
1817
+ }
1818
+ export interface LiveFlag {
1819
+ code: 'out_of_credit' | 'guest_quiet';
1820
+ seat: string | null;
1821
+ text: string;
1822
+ action: string;
1823
+ action_url: string | null;
1824
+ }
1825
+ export interface LiveHeadsUp {
1826
+ code: 'model_errors' | 'rate_limited' | 'seat_stopped' | 'forfeiting' | 'spend_near_cap' | 'time_near_cap';
1827
+ seat: string | null;
1828
+ text: string;
1829
+ }
1830
+ export interface LiveResponseWorldLastEvent {
1831
+ round: number;
1832
+ text: string;
1833
+ }
1834
+ export interface LiveWaiting {
1835
+ run_id: string;
1836
+ name: string;
1837
+ group: LiveGroup | null;
1838
+ reason: 'in_line' | 'own_limit' | 'guests';
1839
+ place: number | null;
1840
+ starts_in_ms: number | null;
1841
+ queued_at_ms: number;
1842
+ }
1843
+ export interface LiveResponseTotals {
1844
+ playing: number;
1845
+ waiting: number;
1846
+ needs_you: number;
1847
+ spend_usd: number;
1848
+ caps_usd: number | null;
1849
+ }
1850
+ export interface RunEstimate {
1851
+ agentTurns: number;
1852
+ usdLow: number;
1853
+ usdHigh: number;
1854
+ approximate: boolean;
1855
+ minutesLow: number;
1856
+ minutesHigh: number;
1857
+ hitsRunCap: boolean;
1858
+ perSeat: SeatEstimate[];
1859
+ /** A plan’s limits as the server enforces them. `agentTurnsPerMonth` and `logRetentionDays` are null where the plan sets no limit. */
1860
+ plan: PlanLimits;
1861
+ entitlement: Entitlement;
1862
+ funding: Array<'user' | 'sponsored' | 'guest'>;
1863
+ cap_default_usd: number;
1864
+ cap_max_usd: number;
1865
+ cap_usd: number;
1866
+ agent_turns_limit: number | null;
1867
+ agent_turns_used: number;
1868
+ agent_turns_reserved: number;
1869
+ agent_turns_remaining: number | null;
1870
+ queued_runs: number;
1871
+ queued_runs_limit: number;
1872
+ minutes_cap: number;
1873
+ openrouter_balance_usd: number | null;
1874
+ trials: number;
1875
+ trials_max: number;
1876
+ batch: EstimateBatch;
1877
+ precision: EstimatePrecision;
1878
+ }
1879
+ export interface ExperimentEstimateDesign {
1880
+ arms: number;
1881
+ trials: number;
1882
+ rule: StoppingRule;
1883
+ metric: 'fitness_index' | 'rank' | 'survived' | 'index_survival' | 'index_economy' | 'index_social' | 'index_adaptation' | 'index_competitiveness' | 'aggression_per_100_rounds' | 'trades_per_100_rounds' | 'circular_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';
1884
+ focal: ExperimentReportFocal;
1885
+ detectable_gap: EstimateExperimentResponseDesignDetectableGap;
1886
+ usd_low: number;
1887
+ usd_high: number;
1888
+ minutes_low: number;
1889
+ minutes_high: number;
1890
+ slots: number;
1891
+ equivalence_margin: number | null;
1892
+ }
1893
+ export interface EstimateExperimentResponseDesignDetectableGap {
1894
+ seat_spread: number | null;
1895
+ sd_diff: number | null;
1896
+ gap: number | null;
1897
+ power: number;
1898
+ by_world: ExperimentReportDetectableGapByWorld | null;
1899
+ at_trials: EstimateExperimentResponseDesignDetectableGapAtTrial[];
1900
+ reference: SpreadReference | null;
1901
+ }
1902
+ export interface EstimateExperimentResponseDesignDetectableGapAtTrial {
1903
+ trials: number;
1904
+ gap: number | null;
1905
+ }
1304
1906
  /** A party outside Daishi that was handed the design’s SHA-256 (never the text) when the design was stored: `rfc3161`, a timestamp authority whose signed reply states the time (`attested_at_ms`, from its own clock), or `opentimestamps`, the public calendars, whose proof is `pending` until a Bitcoin block includes it and then `anchored` in `bitcoin_block`. `created_at_ms` is when this server received the proof. Once a trial is published, the design’s public page links each proof file (`.tsr` or `.ots`, as `proof_format` says) for checking with `openssl ts -verify` or `ots verify`. */
1305
1907
  export interface DesignWitness {
1306
1908
  kind: 'opentimestamps' | 'rfc3161';
@@ -1325,6 +1927,97 @@ export interface Study {
1325
1927
  published: number;
1326
1928
  pending: number;
1327
1929
  }
1930
+ export interface RunLogsResponseFile {
1931
+ file: string;
1932
+ bytes: number;
1933
+ chunks: number;
1934
+ }
1935
+ export interface SeatReport {
1936
+ name: string;
1937
+ model: string;
1938
+ driver: 'studio' | 'guest';
1939
+ end_status: 'active' | 'dormant' | 'dead' | null;
1940
+ harness: RunSeatsResponseSeatHarness | null;
1941
+ debrief: RunSeatsResponseSeatDebrief | null;
1942
+ voiced: RunSeatsResponseSeatVoiced | null;
1943
+ forfeits: RunSeatsResponseSeatForfeits | null;
1944
+ calls: RunSeatsResponseSeatCalls | null;
1945
+ health: RunSeatsResponseSeatHealth | null;
1946
+ trajectory: RunSeatsResponseSeatTrajectory | null;
1947
+ }
1948
+ export interface RunSeatsResponseSeatHarness {
1949
+ version: string | null;
1950
+ scaffold: string | null;
1951
+ prompt_version: string | null;
1952
+ frame: string | null;
1953
+ source: 'trajectory' | 'archive';
1954
+ }
1955
+ export interface RunSeatsResponseSeatDebrief {
1956
+ asked: boolean;
1957
+ believed_evaluation: 'yes' | 'no' | 'unsure' | 'unparsed' | null;
1958
+ changed_play: 'yes' | 'no' | 'unsure' | 'unparsed' | null;
1959
+ cues: string[];
1960
+ how: string | null;
1961
+ note: string | null;
1962
+ }
1963
+ export interface RunSeatsResponseSeatVoiced {
1964
+ turns: number;
1965
+ turns_scanned: number;
1966
+ epilogue: boolean | null;
1967
+ scan_version: string;
1968
+ by_category: RunSeatsResponseSeatVoicedByCategory | null;
1969
+ }
1970
+ export interface RunSeatsResponseSeatVoicedByCategory {
1971
+ evaluation: number;
1972
+ observed: number;
1973
+ stakes: number;
1974
+ }
1975
+ export interface RunSeatsResponseSeatForfeits {
1976
+ total: number;
1977
+ by_cause: RunSeatsResponseSeatForfeitsByCause;
1978
+ rounds: RunSeatsResponseSeatForfeitsRound[];
1979
+ rounds_truncated: boolean;
1980
+ }
1981
+ export interface RunSeatsResponseSeatForfeitsByCause {
1982
+ free_tool: number;
1983
+ refused_call: number;
1984
+ no_turn: number;
1985
+ other: number;
1986
+ }
1987
+ export interface RunSeatsResponseSeatForfeitsRound {
1988
+ tick: number;
1989
+ cause: 'free_tool' | 'refused_call' | 'no_turn' | 'other';
1990
+ action: string | null;
1991
+ }
1992
+ export interface RunSeatsResponseSeatCalls {
1993
+ model_calls: number;
1994
+ turns: number | null;
1995
+ error_turns: number;
1996
+ exited_early: string | null;
1997
+ sat_out_dormant: number;
1998
+ served_models: JsonObject | null;
1999
+ served_by: JsonObject | null;
2000
+ }
2001
+ export interface RunSeatsResponseSeatHealth {
2002
+ world_rejections: RunSeatsResponseSeatHealthWorldRejections;
2003
+ provider_retries: RunSeatsResponseSeatHealthProviderRetries | null;
2004
+ }
2005
+ export interface RunSeatsResponseSeatHealthWorldRejections {
2006
+ turn_budget: number;
2007
+ pace: number;
2008
+ invalid: number;
2009
+ }
2010
+ export interface RunSeatsResponseSeatHealthProviderRetries {
2011
+ calls: number;
2012
+ retries: number;
2013
+ causes: JsonObject;
2014
+ wait_ms: number;
2015
+ }
2016
+ export interface RunSeatsResponseSeatTrajectory {
2017
+ file: string;
2018
+ lines: number;
2019
+ bytes: number;
2020
+ }
1328
2021
  export interface CreateSetBodySetup {
1329
2022
  /** 1 to 32 characters of a-z, 0-9, _ or -, starting with a letter or digit. Fixed once created. */
1330
2023
  key: string;
@@ -1345,7 +2038,7 @@ export declare abstract class Operations {
1345
2038
  *
1346
2039
  * @see https://daishi.ai/docs/developer/rest#ep-index
1347
2040
  */
1348
- index(): Promise<JsonObject>;
2041
+ index(): Promise<IndexResponse>;
1349
2042
  /**
1350
2043
  * OpenAPI document.
1351
2044
  *
@@ -1361,7 +2054,7 @@ export declare abstract class Operations {
1361
2054
  *
1362
2055
  * @see https://daishi.ai/docs/developer/rest#ep-me
1363
2056
  */
1364
- me(): Promise<JsonObject>;
2057
+ me(): Promise<MeResponse>;
1365
2058
  /**
1366
2059
  * Scenario schema.
1367
2060
  *
@@ -1377,7 +2070,7 @@ export declare abstract class Operations {
1377
2070
  *
1378
2071
  * @see https://daishi.ai/docs/developer/rest#ep-library-scenarios
1379
2072
  */
1380
- libraryScenarios(): Promise<JsonObject>;
2073
+ libraryScenarios(): Promise<LibraryScenariosResponse>;
1381
2074
  /**
1382
2075
  * Anchor bots.
1383
2076
  *
@@ -1385,7 +2078,7 @@ export declare abstract class Operations {
1385
2078
  *
1386
2079
  * @see https://daishi.ai/docs/developer/rest#ep-library-anchors
1387
2080
  */
1388
- libraryAnchors(): Promise<JsonObject>;
2081
+ libraryAnchors(): Promise<LibraryAnchorsResponse>;
1389
2082
  /**
1390
2083
  * Studio templates.
1391
2084
  *
@@ -1393,7 +2086,7 @@ export declare abstract class Operations {
1393
2086
  *
1394
2087
  * @see https://daishi.ai/docs/developer/rest#ep-templates
1395
2088
  */
1396
- templates(): Promise<JsonObject>;
2089
+ templates(): Promise<TemplatesResponse>;
1397
2090
  /**
1398
2091
  * Validate a scenario.
1399
2092
  *
@@ -1401,7 +2094,7 @@ export declare abstract class Operations {
1401
2094
  *
1402
2095
  * @see https://daishi.ai/docs/developer/rest#ep-validate
1403
2096
  */
1404
- validate(body: ScenarioBody): Promise<JsonObject>;
2097
+ validate(body: ScenarioBody): Promise<ValidateResponse>;
1405
2098
  /**
1406
2099
  * List your scenarios.
1407
2100
  *
@@ -1489,7 +2182,7 @@ export declare abstract class Operations {
1489
2182
  *
1490
2183
  * @see https://daishi.ai/docs/developer/rest#ep-estimate
1491
2184
  */
1492
- estimate(body: RunBody): Promise<JsonObject>;
2185
+ estimate(body: RunBody): Promise<EstimateResponse>;
1493
2186
  /**
1494
2187
  * Launch a run.
1495
2188
  *
@@ -1524,7 +2217,7 @@ export declare abstract class Operations {
1524
2217
  *
1525
2218
  * @see https://daishi.ai/docs/developer/rest#ep-usage
1526
2219
  */
1527
- usage(): Promise<JsonObject>;
2220
+ usage(): Promise<UsageResponse>;
1528
2221
  /**
1529
2222
  * Your models.
1530
2223
  *
@@ -1532,7 +2225,7 @@ export declare abstract class Operations {
1532
2225
  *
1533
2226
  * @see https://daishi.ai/docs/developer/rest#ep-models
1534
2227
  */
1535
- models(): Promise<JsonObject>;
2228
+ models(): Promise<ModelsResponse>;
1536
2229
  /**
1537
2230
  * Live worlds.
1538
2231
  *
@@ -1540,7 +2233,7 @@ export declare abstract class Operations {
1540
2233
  *
1541
2234
  * @see https://daishi.ai/docs/developer/rest#ep-live
1542
2235
  */
1543
- live(): Promise<JsonObject>;
2236
+ live(): Promise<LiveResponse>;
1544
2237
  /**
1545
2238
  * Get a batch report.
1546
2239
  *
@@ -1556,7 +2249,7 @@ export declare abstract class Operations {
1556
2249
  *
1557
2250
  * @see https://daishi.ai/docs/developer/rest#ep-estimate-experiment
1558
2251
  */
1559
- estimateExperiment(body: ExperimentBody): Promise<JsonObject>;
2252
+ estimateExperiment(body: ExperimentBody): Promise<EstimateExperimentResponse>;
1560
2253
  /**
1561
2254
  * Create an experiment.
1562
2255
  *
@@ -1692,7 +2385,7 @@ export declare abstract class Operations {
1692
2385
  *
1693
2386
  * @see https://daishi.ai/docs/developer/rest#ep-run-logs
1694
2387
  */
1695
- runLogs(id: string): Promise<JsonObject>;
2388
+ runLogs(id: string): Promise<RunLogsResponse>;
1696
2389
  /**
1697
2390
  * Read a run log.
1698
2391
  *
@@ -1708,7 +2401,7 @@ export declare abstract class Operations {
1708
2401
  *
1709
2402
  * @see https://daishi.ai/docs/developer/rest#ep-run-seats
1710
2403
  */
1711
- runSeats(id: string): Promise<JsonObject>;
2404
+ runSeats(id: string): Promise<RunSeatsResponse>;
1712
2405
  /**
1713
2406
  * List a run’s guest seats.
1714
2407
  *
@@ -1716,7 +2409,7 @@ export declare abstract class Operations {
1716
2409
  *
1717
2410
  * @see https://daishi.ai/docs/developer/rest#ep-list-invites
1718
2411
  */
1719
- listInvites(id: string): Promise<JsonObject>;
2412
+ listInvites(id: string): Promise<ListInvitesResponse>;
1720
2413
  /**
1721
2414
  * Extend the signup window.
1722
2415
  *
@@ -1724,7 +2417,7 @@ export declare abstract class Operations {
1724
2417
  *
1725
2418
  * @see https://daishi.ai/docs/developer/rest#ep-extend-invites
1726
2419
  */
1727
- extendInvites(id: string, body: ExtendInvitesBody): Promise<JsonObject>;
2420
+ extendInvites(id: string, body: ExtendInvitesBody): Promise<ExtendInvitesResponse>;
1728
2421
  /**
1729
2422
  * Regenerate a seat’s link.
1730
2423
  *
@@ -1732,7 +2425,7 @@ export declare abstract class Operations {
1732
2425
  *
1733
2426
  * @see https://daishi.ai/docs/developer/rest#ep-regenerate-invite
1734
2427
  */
1735
- regenerateInvite(id: string, inviteId: string): Promise<JsonObject>;
2428
+ regenerateInvite(id: string, inviteId: string): Promise<RegenerateInviteResponse>;
1736
2429
  /**
1737
2430
  * Withdraw a seat.
1738
2431
  *
@@ -1740,7 +2433,7 @@ export declare abstract class Operations {
1740
2433
  *
1741
2434
  * @see https://daishi.ai/docs/developer/rest#ep-revoke-invite
1742
2435
  */
1743
- revokeInvite(id: string, inviteId: string): Promise<JsonObject>;
2436
+ revokeInvite(id: string, inviteId: string): Promise<RevokeInviteResponse>;
1744
2437
  /**
1745
2438
  * List run sets.
1746
2439
  *
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.26";
3
+ export declare const VERSION = "0.2.27";
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.26';
3
+ export const VERSION = '0.2.27';
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.26",
3
+ "version": "0.2.27",
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",