@deepnoodle/mobius 0.0.25 → 0.0.28

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.
@@ -545,7 +545,7 @@ export interface paths {
545
545
  patch?: never;
546
546
  trace?: never;
547
547
  };
548
- "/v1/projects/{project_handle}/agents/{resource_id}/sessions": {
548
+ "/v1/projects/{project_handle}/turns/{resource_id}/messages": {
549
549
  parameters: {
550
550
  query?: never;
551
551
  header?: never;
@@ -553,10 +553,10 @@ export interface paths {
553
553
  cookie?: never;
554
554
  };
555
555
  /**
556
- * List agent sessions
557
- * @description Returns durable conversation sessions for one agent, newest activity first. Remote workers use this to inspect their own remembered conversations.
556
+ * List turn messages
557
+ * @description Returns the transcript messages for one turn in sequence order. Use this endpoint when a client already has a turn ID; use the session messages endpoint to read the full session transcript.
558
558
  */
559
- get: operations["listAgentSessions"];
559
+ get: operations["listTurnMessages"];
560
560
  put?: never;
561
561
  post?: never;
562
562
  delete?: never;
@@ -565,7 +565,7 @@ export interface paths {
565
565
  patch?: never;
566
566
  trace?: never;
567
567
  };
568
- "/v1/projects/{project_handle}/agents/{resource_id}/sessions/{session_id}": {
568
+ "/v1/projects/{project_handle}/agents/{resource_id}/messaging-bindings": {
569
569
  parameters: {
570
570
  query?: never;
571
571
  header?: never;
@@ -573,11 +573,15 @@ export interface paths {
573
573
  cookie?: never;
574
574
  };
575
575
  /**
576
- * Get agent session
577
- * @description Returns one durable conversation session for an agent.
576
+ * List agent messaging bindings
577
+ * @description Returns messaging provider accounts that route messages to this agent.
578
578
  */
579
- get: operations["getAgentSession"];
580
- put?: never;
579
+ get: operations["listAgentMessagingBindings"];
580
+ /**
581
+ * Save agent messaging binding
582
+ * @description Saves one provider-account binding used to route messages to this agent.
583
+ */
584
+ put: operations["saveAgentMessagingBinding"];
581
585
  post?: never;
582
586
  delete?: never;
583
587
  options?: never;
@@ -585,31 +589,51 @@ export interface paths {
585
589
  patch?: never;
586
590
  trace?: never;
587
591
  };
588
- "/v1/projects/{project_handle}/agents/{resource_id}/sessions/{session_id}/messages": {
592
+ "/v1/projects/{project_handle}/agents/{resource_id}/messaging-bindings/{binding_id}": {
589
593
  parameters: {
590
594
  query?: never;
591
595
  header?: never;
592
596
  path?: never;
593
597
  cookie?: never;
594
598
  };
599
+ get?: never;
600
+ put?: never;
601
+ post?: never;
595
602
  /**
596
- * List session messages
597
- * @description Returns raw session messages in sequence order for replay.
603
+ * Delete agent messaging binding
604
+ * @description Deletes one messaging binding from the agent and provider account.
598
605
  */
599
- get: operations["listSessionMessages"];
600
- put?: never;
606
+ delete: operations["deleteAgentMessagingBinding"];
607
+ options?: never;
608
+ head?: never;
609
+ patch?: never;
610
+ trace?: never;
611
+ };
612
+ "/v1/projects/{project_handle}/agents/{resource_id}/toolkit-assignments": {
613
+ parameters: {
614
+ query?: never;
615
+ header?: never;
616
+ path?: never;
617
+ cookie?: never;
618
+ };
601
619
  /**
602
- * Append session messages
603
- * @description Appends one or more messages to a durable session and returns the updated session. The service assigns sequence numbers atomically and may append an additional compaction summary when the session crosses its compaction threshold.
620
+ * List agent toolkit assignments
621
+ * @description Returns the toolkits assigned to an agent in assignment order.
604
622
  */
605
- post: operations["appendSessionMessages"];
623
+ get: operations["listAgentToolkitAssignments"];
624
+ /**
625
+ * Replace agent toolkit assignments
626
+ * @description Replaces the agent's toolkit assignment set as a whole. The effective tool surface is the union of the assigned toolkits' actions, narrowed by any active skills and per-invocation filters.
627
+ */
628
+ put: operations["replaceAgentToolkitAssignments"];
629
+ post?: never;
606
630
  delete?: never;
607
631
  options?: never;
608
632
  head?: never;
609
633
  patch?: never;
610
634
  trace?: never;
611
635
  };
612
- "/v1/projects/{project_handle}/agents/{resource_id}/sessions/{session_id}/turns": {
636
+ "/v1/projects/{project_handle}/agents/{resource_id}/skill-assignments": {
613
637
  parameters: {
614
638
  query?: never;
615
639
  header?: never;
@@ -617,11 +641,15 @@ export interface paths {
617
641
  cookie?: never;
618
642
  };
619
643
  /**
620
- * List session turns
621
- * @description Returns the session's turns in chronological order. Each turn groups related transcript messages and includes links to any run step or channel exchange that produced it.
644
+ * List agent skill assignments
645
+ * @description Returns the skills assigned to an agent in assignment order.
622
646
  */
623
- get: operations["listSessionTurns"];
624
- put?: never;
647
+ get: operations["listAgentSkillAssignments"];
648
+ /**
649
+ * Replace agent skill assignments
650
+ * @description Replaces the agent's skill assignment set as a whole. A skill can narrow the agent's tools while active via its `allowed_tools` filter; it never widens the set beyond the assigned toolkits' actions.
651
+ */
652
+ put: operations["replaceAgentSkillAssignments"];
625
653
  post?: never;
626
654
  delete?: never;
627
655
  options?: never;
@@ -629,7 +657,7 @@ export interface paths {
629
657
  patch?: never;
630
658
  trace?: never;
631
659
  };
632
- "/v1/projects/{project_handle}/turns/{resource_id}/messages": {
660
+ "/v1/projects/{project_handle}/agents/{resource_id}/tools": {
633
661
  parameters: {
634
662
  query?: never;
635
663
  header?: never;
@@ -637,10 +665,10 @@ export interface paths {
637
665
  cookie?: never;
638
666
  };
639
667
  /**
640
- * List turn messages
641
- * @description Returns the transcript messages for one turn in sequence order. Use this endpoint when a client already has a turn ID; use the session messages endpoint to read the full session transcript.
668
+ * Get agent tools
669
+ * @description Resolves the effective set of tools an agent can invoke: the flat union of the assigned toolkits' actions, optionally restricted by a toolkit subset, per-invocation tool filters, and active skill narrowing.
642
670
  */
643
- get: operations["listTurnMessages"];
671
+ get: operations["getAgentTools"];
644
672
  put?: never;
645
673
  post?: never;
646
674
  delete?: never;
@@ -649,7 +677,7 @@ export interface paths {
649
677
  patch?: never;
650
678
  trace?: never;
651
679
  };
652
- "/v1/projects/{project_handle}/agents/{resource_id}/messaging-bindings": {
680
+ "/v1/projects/{project_handle}/sessions": {
653
681
  parameters: {
654
682
  query?: never;
655
683
  header?: never;
@@ -657,43 +685,51 @@ export interface paths {
657
685
  cookie?: never;
658
686
  };
659
687
  /**
660
- * List agent messaging bindings
661
- * @description Returns messaging provider accounts that route messages to this agent.
688
+ * List sessions
689
+ * @description Returns durable conversation sessions for the project, newest activity first. Pass `agent_id` to scope the list to one agent's remembered conversations.
662
690
  */
663
- get: operations["listAgentMessagingBindings"];
691
+ get: operations["listSessions"];
692
+ put?: never;
664
693
  /**
665
- * Save agent messaging binding
666
- * @description Saves one provider-account binding used to route messages to this agent.
694
+ * Create or resolve a session
695
+ * @description Resolves a durable conversation session for an agent by policy and returns it. With `mode: continue_or_create` (the default) an existing session for the given `session_key` is returned, or a new one is created; `mode: new` always creates a fresh session; `mode: continue` resolves an existing session and fails if none exists. This is the entry point an application calls before sending input events.
667
696
  */
668
- put: operations["saveAgentMessagingBinding"];
669
- post?: never;
697
+ post: operations["createSession"];
670
698
  delete?: never;
671
699
  options?: never;
672
700
  head?: never;
673
701
  patch?: never;
674
702
  trace?: never;
675
703
  };
676
- "/v1/projects/{project_handle}/agents/{resource_id}/messaging-bindings/{binding_id}": {
704
+ "/v1/projects/{project_handle}/sessions/{resource_id}": {
677
705
  parameters: {
678
706
  query?: never;
679
707
  header?: never;
680
708
  path?: never;
681
709
  cookie?: never;
682
710
  };
683
- get?: never;
711
+ /**
712
+ * Get session
713
+ * @description Returns one durable conversation session.
714
+ */
715
+ get: operations["getSession"];
684
716
  put?: never;
685
717
  post?: never;
686
718
  /**
687
- * Delete agent messaging binding
688
- * @description Deletes one messaging binding from the agent and provider account.
719
+ * Delete session
720
+ * @description Deletes a session from normal product views. The transcript row is retained as a tombstone for audit and retention.
689
721
  */
690
- delete: operations["deleteAgentMessagingBinding"];
722
+ delete: operations["deleteSession"];
691
723
  options?: never;
692
724
  head?: never;
693
- patch?: never;
725
+ /**
726
+ * Update session
727
+ * @description Updates session display or lifecycle fields. Setting `status` to `archived` hides the session from the current list while keeping it restorable; setting it to `active` restores an archived session. Deleted sessions are retained tombstones and cannot be restored.
728
+ */
729
+ patch: operations["updateSession"];
694
730
  trace?: never;
695
731
  };
696
- "/v1/projects/{project_handle}/agents/{resource_id}/sessions/{session_id}/events.stream": {
732
+ "/v1/projects/{project_handle}/sessions/{resource_id}/messages": {
697
733
  parameters: {
698
734
  query?: never;
699
735
  header?: never;
@@ -701,19 +737,23 @@ export interface paths {
701
737
  cookie?: never;
702
738
  };
703
739
  /**
704
- * Stream session events
705
- * @description Streams live Server-Sent Events for a conversation session. This is a live transport for ephemeral events such as `generation.delta`; durable session transcript state remains available from the messages endpoint.
740
+ * List session messages
741
+ * @description Returns raw session messages in sequence order for replay.
706
742
  */
707
- get: operations["streamSessionEvents"];
743
+ get: operations["listSessionMessages"];
708
744
  put?: never;
709
- post?: never;
745
+ /**
746
+ * Append session messages
747
+ * @description Appends one or more messages to a durable session and returns the updated session. The service assigns sequence numbers atomically and may append an additional compaction summary when the session crosses its compaction threshold.
748
+ */
749
+ post: operations["appendSessionMessages"];
710
750
  delete?: never;
711
751
  options?: never;
712
752
  head?: never;
713
753
  patch?: never;
714
754
  trace?: never;
715
755
  };
716
- "/v1/projects/{project_handle}/agents/{resource_id}/toolkit-assignments": {
756
+ "/v1/projects/{project_handle}/sessions/{resource_id}/turns": {
717
757
  parameters: {
718
758
  query?: never;
719
759
  header?: never;
@@ -721,15 +761,11 @@ export interface paths {
721
761
  cookie?: never;
722
762
  };
723
763
  /**
724
- * List agent toolkit assignments
725
- * @description Returns the toolkits assigned to an agent in assignment order.
726
- */
727
- get: operations["listAgentToolkitAssignments"];
728
- /**
729
- * Replace agent toolkit assignments
730
- * @description Replaces the agent's toolkit assignment set as a whole. The effective tool surface is the union of the assigned toolkits' actions, narrowed by any active skills and per-invocation filters.
764
+ * List session turns
765
+ * @description Returns the session's turns in chronological order. Each turn groups related transcript messages and includes links to any run step or channel exchange that produced it.
731
766
  */
732
- put: operations["replaceAgentToolkitAssignments"];
767
+ get: operations["listSessionTurns"];
768
+ put?: never;
733
769
  post?: never;
734
770
  delete?: never;
735
771
  options?: never;
@@ -737,7 +773,7 @@ export interface paths {
737
773
  patch?: never;
738
774
  trace?: never;
739
775
  };
740
- "/v1/projects/{project_handle}/agents/{resource_id}/skill-assignments": {
776
+ "/v1/projects/{project_handle}/sessions/{resource_id}/events.stream": {
741
777
  parameters: {
742
778
  query?: never;
743
779
  header?: never;
@@ -745,15 +781,11 @@ export interface paths {
745
781
  cookie?: never;
746
782
  };
747
783
  /**
748
- * List agent skill assignments
749
- * @description Returns the skills assigned to an agent in assignment order.
750
- */
751
- get: operations["listAgentSkillAssignments"];
752
- /**
753
- * Replace agent skill assignments
754
- * @description Replaces the agent's skill assignment set as a whole. A skill can narrow the agent's tools while active via its `allowed_tools` filter; it never widens the set beyond the assigned toolkits' actions.
784
+ * Stream session events
785
+ * @description Streams Server-Sent Events for a conversation session. Durable lifecycle events (`user.message`, `session.status_running`, `agent.message`, `agent.tool_use`, `agent.tool_result`, and the terminal `session.status_*` events) are replayed from the durable log and then tailed live, so a client reconnecting with `?after_sequence=N` (or the `Last-Event-ID` header) resumes exactly where it left off. The stream closes after the terminal event for the active invocation is delivered. Live-only `generation.delta` frames are interleaved best-effort.
755
786
  */
756
- put: operations["replaceAgentSkillAssignments"];
787
+ get: operations["streamSessionEvents"];
788
+ put?: never;
757
789
  post?: never;
758
790
  delete?: never;
759
791
  options?: never;
@@ -761,20 +793,40 @@ export interface paths {
761
793
  patch?: never;
762
794
  trace?: never;
763
795
  };
764
- "/v1/projects/{project_handle}/agents/{resource_id}/tools": {
796
+ "/v1/projects/{project_handle}/sessions/{resource_id}/events": {
765
797
  parameters: {
766
798
  query?: never;
767
799
  header?: never;
768
800
  path?: never;
769
801
  cookie?: never;
770
802
  };
803
+ get?: never;
804
+ put?: never;
771
805
  /**
772
- * Get agent tools
773
- * @description Resolves the effective set of tools an agent can invoke: the flat union of the assigned toolkits' actions, optionally restricted by a toolkit subset, per-invocation tool filters, and active skill narrowing.
806
+ * Send input to a session
807
+ * @description Appends one input message to a session and starts an agent invocation to respond, returning `202 Accepted` immediately with a durable `seq` cursor to stream from — the work continues even if the caller disconnects. A repeated send with the same `idempotency_key` returns the existing invocation's cursor without starting a second invocation or appending a second input message. Requires the `mobius.agent.invoke` permission (or the agent's own backing principal).
774
808
  */
775
- get: operations["getAgentTools"];
809
+ post: operations["sendSessionEvents"];
810
+ delete?: never;
811
+ options?: never;
812
+ head?: never;
813
+ patch?: never;
814
+ trace?: never;
815
+ };
816
+ "/v1/projects/{project_handle}/sessions/{resource_id}/cancel": {
817
+ parameters: {
818
+ query?: never;
819
+ header?: never;
820
+ path?: never;
821
+ cookie?: never;
822
+ };
823
+ get?: never;
776
824
  put?: never;
777
- post?: never;
825
+ /**
826
+ * Cancel a session's active invocation
827
+ * @description Cancels the session's in-flight invocation. Queued and running grains for the session are marked cancelled and a terminal `session.status_cancelled` event is emitted. Returns the updated session. Requires the `mobius.agent.invoke` permission (or the agent's own backing principal).
828
+ */
829
+ post: operations["cancelSession"];
778
830
  delete?: never;
779
831
  options?: never;
780
832
  head?: never;
@@ -1280,7 +1332,7 @@ export interface paths {
1280
1332
  put?: never;
1281
1333
  /**
1282
1334
  * Upsert row
1283
- * @description Inserts or updates a row identified by key columns. Existing rows are patched with supplied fields; missing matches create a new row.
1335
+ * @description Inserts or updates a row identified by the table's identity column. Existing rows are patched with supplied fields; missing matches create a new row.
1284
1336
  */
1285
1337
  post: operations["upsertTableRow"];
1286
1338
  delete?: never;
@@ -1604,6 +1656,11 @@ export interface components {
1604
1656
  tool_presentation?: components["schemas"]["AgentToolPresentation"];
1605
1657
  /** @description Custom system prompt for platform agents. Empty string uses the generated default based on the agent name. */
1606
1658
  system_prompt?: string;
1659
+ /**
1660
+ * Format: int64
1661
+ * @description Execution timeout, in seconds, for a single turn of this platform agent. `0` (or omitted) uses the platform default (600s / 10 minutes). A loop step's own timeout overrides this for that step.
1662
+ */
1663
+ timeout_seconds?: number;
1607
1664
  /** @description Current agent status: `active` or `inactive`. */
1608
1665
  status: components["schemas"]["AgentStatus"];
1609
1666
  /** @description Inbox address provisioned via POST /v1/projects/{project_handle}/agents/{resource_id}/inbox (opt-in; not created automatically at agent creation). The field is populated only after a successful provisioning call. Use this address to add the agent as a member on external platforms (Linear, GitHub, Slack, etc.) so the platform can deliver notifications to the agent. */
@@ -2798,10 +2855,10 @@ export interface components {
2798
2855
  */
2799
2856
  AgentMessagingReplyMode: "auto";
2800
2857
  /**
2801
- * @description Provider supported by built-in agent messaging: `slack` or `telegram`.
2858
+ * @description Provider supported by built-in agent messaging: `slack`, `telegram`, or `linear` (Linear agent sessions).
2802
2859
  * @enum {string}
2803
2860
  */
2804
- AgentMessagingProvider: "slack" | "telegram";
2861
+ AgentMessagingProvider: "slack" | "telegram" | "linear";
2805
2862
  /** @description Messaging provider account that an agent can answer from. */
2806
2863
  AgentMessagingBinding: {
2807
2864
  /** @description Messaging binding identifier. */
@@ -2886,284 +2943,64 @@ export interface components {
2886
2943
  /** @description Messaging bindings configured for this agent. */
2887
2944
  items: components["schemas"]["AgentMessagingBinding"][];
2888
2945
  };
2889
- /**
2890
- * @description Durable conversation session status: `active`, `archived`, or `deleted`.
2891
- * @enum {string}
2892
- */
2893
- SessionStatus: "active" | "archived" | "deleted";
2894
- /**
2895
- * @description Surface that created the session: `manual`, `api`, or `loop`.
2896
- * @enum {string}
2897
- */
2898
- SessionOrigin: "manual" | "api" | "loop";
2899
- /**
2900
- * @description Boundary used to resolve named sessions: `agent` or `loop`.
2901
- * @enum {string}
2902
- */
2903
- SessionScope: "agent" | "loop";
2904
- /**
2905
- * @description Visibility of the session in project surfaces: `project` or `private`.
2906
- * @enum {string}
2907
- */
2908
- SessionVisibility: "project" | "private";
2909
- /**
2910
- * @description Message role: `system`, `user`, `assistant`, `tool`, or `compaction`.
2911
- * @enum {string}
2912
- */
2913
- SessionMessageRole: "system" | "user" | "assistant" | "tool" | "compaction";
2914
- /**
2915
- * @description Transcript entry type: `message` or `compaction`.
2916
- * @enum {string}
2917
- */
2918
- SessionMessageEntryType: "message" | "compaction";
2919
- /**
2920
- * @description Agent turn lifecycle status: `running`, `waiting`, `completed`, `failed`, or `cancelled`.
2921
- * @enum {string}
2922
- */
2923
- AgentTurnStatus: "running" | "waiting" | "completed" | "failed" | "cancelled";
2924
- /** @description One attempt of an agent running the agent loop — the unit that produces a transcript. A turn is triggered either by a loop step (run_id + step_id) or an inbound channel message (channel_exchange_id); the two are mutually exclusive. Its messages are read via the turn's transcript endpoint. */
2925
- AgentTurn: {
2926
- /** @description Stable turn identifier. */
2927
- id: string;
2928
- /** @description Agent that ran this turn. */
2946
+ /** @description Assignment linking a toolkit to an agent. */
2947
+ ToolkitAssignment: {
2948
+ /** @description Agent the toolkit is assigned to. */
2929
2949
  agent_id: string;
2930
- /** @description Session this turn's transcript was appended to. */
2931
- session_id: string;
2932
- /** @description Loop run that triggered this turn. Absent for messaging turns. */
2933
- run_id?: string;
2934
- /** @description Step key (matches LoopRunStep.step_key, not its id) of the loop step that triggered this turn. Absent for messaging turns. */
2935
- step_key?: string;
2936
- /** @description Inbound channel exchange that triggered this turn. Absent for loop turns. */
2937
- channel_exchange_id?: string;
2938
- /** @description 1-based attempt number for this run-step; retries create new turns. */
2939
- attempt: number;
2940
- /** @description Current lifecycle status of the agent turn. */
2941
- status: components["schemas"]["AgentTurnStatus"];
2942
- /** @description Per-session ordering hint (cosmetic; turns are ordered by creation time). */
2943
- seq?: number;
2944
- /** @description Machine-readable failure category when the turn failed. */
2945
- error_type?: string;
2946
- /** @description Human-readable failure detail when the turn failed. */
2947
- error_message?: string;
2950
+ /** @description Toolkit assigned to the agent. */
2951
+ toolkit_id: string;
2952
+ /** @description Expanded toolkit metadata for this assignment. */
2953
+ toolkit?: components["schemas"]["Toolkit"];
2954
+ /** @description Ordering position of this assignment in the agent's toolkit list. */
2955
+ position: number;
2948
2956
  /**
2949
2957
  * Format: date-time
2950
- * @description Time the turn was created.
2958
+ * @description Record creation timestamp.
2951
2959
  */
2952
2960
  created_at: string;
2961
+ };
2962
+ ReplaceToolkitsRequest: {
2963
+ /** @description Full replace-set of toolkit IDs to assign to the agent, in desired order. */
2964
+ toolkit_ids: string[];
2965
+ };
2966
+ ToolkitAssignmentListResponse: {
2967
+ /** @description Toolkit assignments for this agent, in position order. */
2968
+ items: components["schemas"]["ToolkitAssignment"][];
2969
+ };
2970
+ /** @description Assignment linking a skill to an agent. */
2971
+ SkillAssignment: {
2972
+ /** @description Agent the skill is assigned to. */
2973
+ agent_id: string;
2974
+ /** @description Skill assigned to the agent. */
2975
+ skill_id: string;
2976
+ /** @description Expanded skill metadata for this assignment. */
2977
+ skill?: components["schemas"]["Skill"];
2978
+ /** @description Whether the assignment is currently active. */
2979
+ enabled: boolean;
2980
+ /** @description Ordering position of this assignment in the agent's skill list. */
2981
+ position: number;
2953
2982
  /**
2954
2983
  * Format: date-time
2955
- * @description Time the turn was last updated.
2956
- */
2957
- updated_at: string;
2958
- /**
2959
- * Format: date-time
2960
- * @description When the turn reached a terminal status.
2984
+ * @description Record creation timestamp.
2961
2985
  */
2962
- completed_at?: string;
2986
+ created_at: string;
2963
2987
  };
2964
- AgentTurnListResponse: {
2965
- /** @description Turns in this session, ordered by creation time. */
2966
- items: components["schemas"]["AgentTurn"][];
2967
- };
2968
- /** @description Durable conversation transcript owned by an agent. */
2969
- Session: {
2970
- /** @description Stable session identifier. */
2971
- id: string;
2972
- /** @description Agent that owns this session. */
2973
- agent_id: string;
2974
- /** @description Human-readable session title. */
2975
- title: string;
2976
- /** @description Lifecycle status of the session. */
2977
- status: components["schemas"]["SessionStatus"];
2978
- /** @description Surface that created the session. */
2979
- origin: components["schemas"]["SessionOrigin"];
2980
- /** @description Boundary used to resolve the session key. */
2981
- scope: components["schemas"]["SessionScope"];
2982
- /** @description Identifier of the resource the session is scoped to (e.g. the agent for agent-scoped sessions). */
2983
- scope_ref_id: string;
2984
- /** @description Caller-assigned name identifying this conversation within its scope (`scope` + `scope_ref_id`); reused as the session routing key. */
2985
- scope_name: string;
2986
- /** @description Stable session routing key used to look up a scoped conversation (mirrors `scope_name`). */
2987
- session_key: string;
2988
- /** @description Where the session appears in project UI surfaces. */
2989
- visibility: components["schemas"]["SessionVisibility"];
2990
- /** @description Model the session most recently exchanged tokens with. */
2991
- model?: string;
2992
- /** @description Provider for the recorded `model`. */
2993
- model_provider?: string;
2994
- /** @description Per-session overrides for the message-compaction policy. */
2995
- compaction_policy?: {
2996
- [key: string]: unknown;
2997
- };
2998
- /** @description Total messages currently in the session, including compaction summaries. */
2999
- message_count: number;
3000
- /** @description Lifetime input-token total reported for this session. */
3001
- token_input_total: number;
3002
- /** @description Lifetime output-token total reported for this session. */
3003
- token_output_total: number;
3004
- /** @description Optimistic-concurrency version. Increments on every mutation. */
3005
- version: number;
3006
- /**
3007
- * Format: date-time
3008
- * @description Timestamp of the most recent message append; null before any messages are stored.
3009
- */
3010
- last_message_at?: string | null;
3011
- /** @description Source session this one was forked from, if any. */
3012
- forked_from_session_id?: string;
3013
- /** @description Sequence number in the source session at which the fork was taken. */
3014
- forked_from_sequence?: number;
3015
- /** @description User who created this session, if attribution was captured. */
3016
- created_by?: string;
3017
- /** @description Free-form caller metadata. */
3018
- metadata?: {
3019
- [key: string]: unknown;
3020
- };
3021
- /**
3022
- * Format: date-time
3023
- * @description Record creation timestamp.
3024
- */
3025
- created_at: string;
3026
- /**
3027
- * Format: date-time
3028
- * @description Last update timestamp.
3029
- */
3030
- updated_at: string;
3031
- };
3032
- SessionListResponse: {
3033
- /** @description The list of results for this page. */
3034
- items: components["schemas"]["Session"][];
3035
- };
3036
- /** @description JSON payload of a single `data:` line on the session event stream. The SSE `event:` field carries the event type (e.g. `generation.delta`); this object carries the event-specific fields. Additional fields beyond `session_id` vary by event type. */
3037
- SessionStreamEvent: {
3038
- /** @description The session this event belongs to. */
3039
- session_id: string;
3040
- } & {
3041
- [key: string]: unknown;
3042
- };
3043
- /** @description One persisted message or compaction entry in a session transcript. */
3044
- SessionMessage: {
3045
- /** @description Stable message identifier. */
3046
- id: string;
3047
- /** @description Session this message belongs to. */
3048
- session_id: string;
3049
- /** @description Agent that owns the parent session. */
3050
- agent_id: string;
3051
- /** @description Role of this message in the transcript. */
3052
- role: components["schemas"]["SessionMessageRole"];
3053
- /** @description Ordered content blocks (text, tool calls, tool results, images). */
3054
- content: {
3055
- [key: string]: unknown;
3056
- }[];
3057
- /** @description Whether this row is a normal message or a compaction summary. */
3058
- entry_type: components["schemas"]["SessionMessageEntryType"];
3059
- /** @description For `compaction` messages, the highest sequence number this summary covers. */
3060
- covers_through_sequence?: number;
3061
- /** @description Monotonic per-session sequence number assigned at append time. */
3062
- sequence: number;
3063
- /** @description AgentTurn that produced this message. Run, step, and channel identity for the message are read from this turn. Absent for compaction summaries and messages not tied to a turn. */
3064
- turn_id?: string;
3065
- /** @description Free-form caller metadata for this message. */
3066
- metadata?: {
3067
- [key: string]: unknown;
3068
- };
3069
- /**
3070
- * Format: date-time
3071
- * @description Server timestamp when the message was appended.
3072
- */
3073
- created_at: string;
3074
- };
3075
- SessionMessageListResponse: {
3076
- /** @description Messages in this page, ordered by `sequence` ascending. */
3077
- items: components["schemas"]["SessionMessage"][];
3078
- };
3079
- AppendSessionMessagesRequest: {
3080
- /** @description Messages to append to the session, in order. */
3081
- messages: components["schemas"]["AppendSessionMessage"][];
3082
- /** @description Updated lifetime input-token total for this session. */
3083
- token_input_total?: number;
3084
- /** @description Updated lifetime output-token total for this session. */
3085
- token_output_total?: number;
3086
- /** @description Model that produced these messages. */
3087
- model?: string;
3088
- /** @description Provider for the supplied `model`. */
3089
- model_provider?: string;
3090
- };
3091
- /** @description Message payload to append to an existing durable session. */
3092
- AppendSessionMessage: {
3093
- /** @description Role to store for this appended message. */
3094
- role: components["schemas"]["SessionMessageRole"];
3095
- /** @description Ordered content blocks (text, tool calls, tool results, images). */
3096
- content: {
3097
- [key: string]: unknown;
3098
- }[];
3099
- /** @description Free-form caller metadata for this message. */
3100
- metadata?: {
3101
- [key: string]: unknown;
3102
- };
3103
- /**
3104
- * Format: date-time
3105
- * @description Caller-supplied creation timestamp. The server assigns one if absent.
3106
- */
3107
- created_at?: string;
3108
- };
3109
- /** @description Assignment linking a toolkit to an agent. */
3110
- ToolkitAssignment: {
3111
- /** @description Agent the toolkit is assigned to. */
3112
- agent_id: string;
3113
- /** @description Toolkit assigned to the agent. */
3114
- toolkit_id: string;
3115
- /** @description Expanded toolkit metadata for this assignment. */
3116
- toolkit?: components["schemas"]["Toolkit"];
3117
- /** @description Ordering position of this assignment in the agent's toolkit list. */
3118
- position: number;
3119
- /**
3120
- * Format: date-time
3121
- * @description Record creation timestamp.
3122
- */
3123
- created_at: string;
3124
- };
3125
- ReplaceToolkitsRequest: {
3126
- /** @description Full replace-set of toolkit IDs to assign to the agent, in desired order. */
3127
- toolkit_ids: string[];
3128
- };
3129
- ToolkitAssignmentListResponse: {
3130
- /** @description Toolkit assignments for this agent, in position order. */
3131
- items: components["schemas"]["ToolkitAssignment"][];
3132
- };
3133
- /** @description Assignment linking a skill to an agent. */
3134
- SkillAssignment: {
3135
- /** @description Agent the skill is assigned to. */
3136
- agent_id: string;
3137
- /** @description Skill assigned to the agent. */
3138
- skill_id: string;
3139
- /** @description Expanded skill metadata for this assignment. */
3140
- skill?: components["schemas"]["Skill"];
3141
- /** @description Whether the assignment is currently active. */
3142
- enabled: boolean;
3143
- /** @description Ordering position of this assignment in the agent's skill list. */
3144
- position: number;
3145
- /**
3146
- * Format: date-time
3147
- * @description Record creation timestamp.
3148
- */
3149
- created_at: string;
3150
- };
3151
- ReplaceSkillsRequest: {
3152
- /** @description Full replace-set of skill IDs to assign to the agent, in desired order. */
3153
- skill_ids: string[];
2988
+ ReplaceSkillsRequest: {
2989
+ /** @description Full replace-set of skill IDs to assign to the agent, in desired order. */
2990
+ skill_ids: string[];
3154
2991
  };
3155
2992
  SkillAssignmentListResponse: {
3156
2993
  /** @description Skill assignments for this agent, in position order. */
3157
2994
  items: components["schemas"]["SkillAssignment"][];
3158
2995
  };
3159
- /** @description Skill entry included in a resolved agent tool manifest. */
2996
+ /** @description Skill metadata included in a resolved agent tool manifest. Full instructions are loaded at runtime through the invoke_skill tool. */
3160
2997
  SkillManifestEntry: {
3161
2998
  /** @description Skill ID this manifest entry resolved to. */
3162
2999
  id: string;
3163
3000
  /** @description Display name of the skill. */
3164
3001
  name: string;
3165
- /** @description Markdown instructions loaded for this skill. */
3166
- instructions: string;
3002
+ /** @description Markdown description of the skill's purpose. */
3003
+ description?: string;
3167
3004
  /** @description Whether this skill is currently active in the resolved manifest. */
3168
3005
  active: boolean;
3169
3006
  /** @description Tool selectors the skill requires but that are not available to the agent. */
@@ -3240,6 +3077,11 @@ export interface components {
3240
3077
  tool_presentation?: components["schemas"]["AgentToolPresentation"];
3241
3078
  /** @description Custom system prompt for platform agents. Empty uses the generated default. */
3242
3079
  system_prompt?: string;
3080
+ /**
3081
+ * Format: int64
3082
+ * @description Per-turn execution timeout in seconds for this platform agent. Omit or `0` to use the platform default (600s / 10 minutes); a loop step's own timeout overrides it for that step.
3083
+ */
3084
+ timeout_seconds?: number;
3243
3085
  /** @description Initial labels used for filtering, ownership, or automation. */
3244
3086
  tags?: components["schemas"]["TagMap"];
3245
3087
  };
@@ -3261,6 +3103,11 @@ export interface components {
3261
3103
  tool_presentation?: components["schemas"]["AgentToolPresentation"];
3262
3104
  /** @description Replacement system prompt for platform agents. */
3263
3105
  system_prompt?: string;
3106
+ /**
3107
+ * Format: int64
3108
+ * @description Replacement per-turn execution timeout in seconds for this platform agent. `0` resets to the platform default (600s / 10 minutes); a loop step's own timeout overrides it for that step.
3109
+ */
3110
+ timeout_seconds?: number;
3264
3111
  /**
3265
3112
  * @description Replacement agent status: `active` or `inactive`. Use DELETE to delete the agent.
3266
3113
  * @enum {string}
@@ -3269,6 +3116,52 @@ export interface components {
3269
3116
  /** @description Replacement labels; send an empty object to clear all tags. */
3270
3117
  tags?: components["schemas"]["TagMap"];
3271
3118
  };
3119
+ /**
3120
+ * @description Message role: `system`, `user`, `assistant`, `tool`, or `compaction`.
3121
+ * @enum {string}
3122
+ */
3123
+ SessionMessageRole: "system" | "user" | "assistant" | "tool" | "compaction";
3124
+ /**
3125
+ * @description Transcript entry type: `message` or `compaction`.
3126
+ * @enum {string}
3127
+ */
3128
+ SessionMessageEntryType: "message" | "compaction";
3129
+ /** @description One persisted message or compaction entry in a session transcript. */
3130
+ SessionMessage: {
3131
+ /** @description Stable message identifier. */
3132
+ id: string;
3133
+ /** @description Session this message belongs to. */
3134
+ session_id: string;
3135
+ /** @description Agent that owns the parent session. */
3136
+ agent_id: string;
3137
+ /** @description Role of this message in the transcript. */
3138
+ role: components["schemas"]["SessionMessageRole"];
3139
+ /** @description Ordered content blocks (text, tool calls, tool results, images). */
3140
+ content: {
3141
+ [key: string]: unknown;
3142
+ }[];
3143
+ /** @description Whether this row is a normal message or a compaction summary. */
3144
+ entry_type: components["schemas"]["SessionMessageEntryType"];
3145
+ /** @description For `compaction` messages, the highest sequence number this summary covers. */
3146
+ covers_through_sequence?: number;
3147
+ /** @description Monotonic per-session sequence number assigned at append time. */
3148
+ sequence: number;
3149
+ /** @description AgentTurn that produced this message. Run, step, and channel identity for the message are read from this turn. Absent for compaction summaries and messages not tied to a turn. */
3150
+ turn_id?: string;
3151
+ /** @description Free-form caller metadata for this message. */
3152
+ metadata?: {
3153
+ [key: string]: unknown;
3154
+ };
3155
+ /**
3156
+ * Format: date-time
3157
+ * @description Server timestamp when the message was appended.
3158
+ */
3159
+ created_at: string;
3160
+ };
3161
+ SessionMessageListResponse: {
3162
+ /** @description Messages in this page, ordered by `sequence` ascending. */
3163
+ items: components["schemas"]["SessionMessage"][];
3164
+ };
3272
3165
  /**
3273
3166
  * @description Action selector included in a toolkit.
3274
3167
  * @example {
@@ -3366,20 +3259,153 @@ export interface components {
3366
3259
  /** @description Markdown description of the skill's purpose. */
3367
3260
  description?: string;
3368
3261
  /**
3369
- * @description Provenance of this skill. `system` is built-in; `project` is project-local.
3370
- * @enum {string}
3262
+ * @description Provenance of this skill. `system` is built-in; `project` is project-local.
3263
+ * @enum {string}
3264
+ */
3265
+ source: "system" | "project";
3266
+ /** @description Markdown instructions loaded when the skill is active. */
3267
+ instructions: string;
3268
+ /** @description Canonical action names, wildcard selectors, or group references that narrow the agent's effective tool set while this skill is active. Uses the same selector vocabulary as toolkit grants. */
3269
+ allowed_tools?: string[];
3270
+ /** @description Labels to apply to the skill. */
3271
+ tags?: components["schemas"]["TagMap"];
3272
+ /** @description ID of the principal who created this skill. */
3273
+ created_by?: string;
3274
+ /** @description ID of the principal who last updated this skill. */
3275
+ updated_by?: string;
3276
+ /**
3277
+ * Format: date-time
3278
+ * @description Record creation timestamp.
3279
+ */
3280
+ created_at: string;
3281
+ /**
3282
+ * Format: date-time
3283
+ * @description Last update timestamp.
3284
+ */
3285
+ updated_at: string;
3286
+ };
3287
+ /**
3288
+ * @description Durable conversation session status: `active`, `archived`, or `deleted`.
3289
+ * @enum {string}
3290
+ */
3291
+ SessionStatus: "active" | "archived" | "deleted";
3292
+ /**
3293
+ * @description Surface that created the session: `manual`, `api`, or `loop`.
3294
+ * @enum {string}
3295
+ */
3296
+ SessionOrigin: "manual" | "api" | "loop";
3297
+ /**
3298
+ * @description Boundary used to resolve named sessions: `agent` or `loop`.
3299
+ * @enum {string}
3300
+ */
3301
+ SessionScope: "agent" | "loop";
3302
+ /**
3303
+ * @description Visibility of the session in project surfaces: `project` or `private`.
3304
+ * @enum {string}
3305
+ */
3306
+ SessionVisibility: "project" | "private";
3307
+ /**
3308
+ * @description Agent turn lifecycle status: `running`, `waiting`, `completed`, `failed`, or `cancelled`.
3309
+ * @enum {string}
3310
+ */
3311
+ AgentTurnStatus: "running" | "waiting" | "completed" | "failed" | "cancelled";
3312
+ /** @description One attempt of an agent running the agent loop — the unit that produces a transcript. A turn is triggered either by a loop step (run_id + step_id) or an inbound channel message (channel_exchange_id); the two are mutually exclusive. Its messages are read via the turn's transcript endpoint. */
3313
+ AgentTurn: {
3314
+ /** @description Stable turn identifier. */
3315
+ id: string;
3316
+ /** @description Agent that ran this turn. */
3317
+ agent_id: string;
3318
+ /** @description Session this turn's transcript was appended to. */
3319
+ session_id: string;
3320
+ /** @description Loop run that triggered this turn. Absent for messaging turns. */
3321
+ run_id?: string;
3322
+ /** @description Step key (matches LoopRunStep.step_key, not its id) of the loop step that triggered this turn. Absent for messaging turns. */
3323
+ step_key?: string;
3324
+ /** @description Inbound channel exchange that triggered this turn. Absent for loop turns. */
3325
+ channel_exchange_id?: string;
3326
+ /** @description 1-based attempt number for this run-step; retries create new turns. */
3327
+ attempt: number;
3328
+ /** @description Current lifecycle status of the agent turn. */
3329
+ status: components["schemas"]["AgentTurnStatus"];
3330
+ /** @description Per-session ordering hint (cosmetic; turns are ordered by creation time). */
3331
+ seq?: number;
3332
+ /** @description Machine-readable failure category when the turn failed. */
3333
+ error_type?: string;
3334
+ /** @description Human-readable failure detail when the turn failed. */
3335
+ error_message?: string;
3336
+ /**
3337
+ * Format: date-time
3338
+ * @description Time the turn was created.
3339
+ */
3340
+ created_at: string;
3341
+ /**
3342
+ * Format: date-time
3343
+ * @description Time the turn was last updated.
3344
+ */
3345
+ updated_at: string;
3346
+ /**
3347
+ * Format: date-time
3348
+ * @description When the turn reached a terminal status.
3349
+ */
3350
+ completed_at?: string;
3351
+ };
3352
+ AgentTurnListResponse: {
3353
+ /** @description Turns in this session, ordered by creation time. */
3354
+ items: components["schemas"]["AgentTurn"][];
3355
+ };
3356
+ /** @description Durable conversation transcript owned by an agent. */
3357
+ Session: {
3358
+ /** @description Stable session identifier. */
3359
+ id: string;
3360
+ /** @description Agent that owns this session. */
3361
+ agent_id: string;
3362
+ /** @description Human-readable session title. */
3363
+ title: string;
3364
+ /** @description Lifecycle status of the session. */
3365
+ status: components["schemas"]["SessionStatus"];
3366
+ /** @description Surface that created the session. */
3367
+ origin: components["schemas"]["SessionOrigin"];
3368
+ /** @description Boundary used to resolve the session key. */
3369
+ scope: components["schemas"]["SessionScope"];
3370
+ /** @description Identifier of the resource the session is scoped to (e.g. the agent for agent-scoped sessions). */
3371
+ scope_ref_id: string;
3372
+ /** @description Caller-assigned name identifying this conversation within its scope (`scope` + `scope_ref_id`); reused as the session routing key. */
3373
+ scope_name: string;
3374
+ /** @description Stable session routing key used to look up a scoped conversation (mirrors `scope_name`). */
3375
+ session_key: string;
3376
+ /** @description Where the session appears in project UI surfaces. */
3377
+ visibility: components["schemas"]["SessionVisibility"];
3378
+ /** @description Model the session most recently exchanged tokens with. */
3379
+ model?: string;
3380
+ /** @description Provider for the recorded `model`. */
3381
+ model_provider?: string;
3382
+ /** @description Per-session overrides for the message-compaction policy. */
3383
+ compaction_policy?: {
3384
+ [key: string]: unknown;
3385
+ };
3386
+ /** @description Total messages currently in the session, including compaction summaries. */
3387
+ message_count: number;
3388
+ /** @description Lifetime input-token total reported for this session. */
3389
+ token_input_total: number;
3390
+ /** @description Lifetime output-token total reported for this session. */
3391
+ token_output_total: number;
3392
+ /** @description Optimistic-concurrency version. Increments on every mutation. */
3393
+ version: number;
3394
+ /**
3395
+ * Format: date-time
3396
+ * @description Timestamp of the most recent message append; null before any messages are stored.
3371
3397
  */
3372
- source: "system" | "project";
3373
- /** @description Markdown instructions loaded when the skill is active. */
3374
- instructions: string;
3375
- /** @description Canonical action names, wildcard selectors, or group references that narrow the agent's effective tool set while this skill is active. Uses the same selector vocabulary as toolkit grants. */
3376
- allowed_tools?: string[];
3377
- /** @description Labels to apply to the skill. */
3378
- tags?: components["schemas"]["TagMap"];
3379
- /** @description ID of the principal who created this skill. */
3398
+ last_message_at?: string | null;
3399
+ /** @description Source session this one was forked from, if any. */
3400
+ forked_from_session_id?: string;
3401
+ /** @description Sequence number in the source session at which the fork was taken. */
3402
+ forked_from_sequence?: number;
3403
+ /** @description User who created this session, if attribution was captured. */
3380
3404
  created_by?: string;
3381
- /** @description ID of the principal who last updated this skill. */
3382
- updated_by?: string;
3405
+ /** @description Free-form caller metadata. */
3406
+ metadata?: {
3407
+ [key: string]: unknown;
3408
+ };
3383
3409
  /**
3384
3410
  * Format: date-time
3385
3411
  * @description Record creation timestamp.
@@ -3391,6 +3417,111 @@ export interface components {
3391
3417
  */
3392
3418
  updated_at: string;
3393
3419
  };
3420
+ SessionListResponse: {
3421
+ /** @description The list of results for this page. */
3422
+ items: components["schemas"]["Session"][];
3423
+ };
3424
+ /** @description Mutable display and lifecycle fields for a session. */
3425
+ UpdateSessionRequest: {
3426
+ /** @description Human-readable session title. */
3427
+ title?: string;
3428
+ /** @description Lifecycle status. `active` restores archived sessions; `deleted` is terminal. */
3429
+ status?: components["schemas"]["SessionStatus"];
3430
+ };
3431
+ /** @description JSON payload of a single `data:` line on the session event stream. The SSE `event:` field carries the event type (e.g. `generation.delta`); this object carries the event-specific fields. Additional fields beyond `session_id` vary by event type. */
3432
+ SessionStreamEvent: {
3433
+ /** @description The session this event belongs to. */
3434
+ session_id: string;
3435
+ } & {
3436
+ [key: string]: unknown;
3437
+ };
3438
+ AppendSessionMessagesRequest: {
3439
+ /** @description Messages to append to the session, in order. */
3440
+ messages: components["schemas"]["AppendSessionMessage"][];
3441
+ /** @description Updated lifetime input-token total for this session. */
3442
+ token_input_total?: number;
3443
+ /** @description Updated lifetime output-token total for this session. */
3444
+ token_output_total?: number;
3445
+ /** @description Model that produced these messages. */
3446
+ model?: string;
3447
+ /** @description Provider for the supplied `model`. */
3448
+ model_provider?: string;
3449
+ };
3450
+ /** @description Message payload to append to an existing durable session. */
3451
+ AppendSessionMessage: {
3452
+ /** @description Role to store for this appended message. */
3453
+ role: components["schemas"]["SessionMessageRole"];
3454
+ /** @description Ordered content blocks (text, tool calls, tool results, images). */
3455
+ content: {
3456
+ [key: string]: unknown;
3457
+ }[];
3458
+ /** @description Free-form caller metadata for this message. */
3459
+ metadata?: {
3460
+ [key: string]: unknown;
3461
+ };
3462
+ /**
3463
+ * Format: date-time
3464
+ * @description Caller-supplied creation timestamp. The server assigns one if absent.
3465
+ */
3466
+ created_at?: string;
3467
+ };
3468
+ /** @description Resolve-or-create policy for a session. */
3469
+ CreateSessionRequest: {
3470
+ /** @description Agent that owns the session. */
3471
+ agent_id: string;
3472
+ /**
3473
+ * @description `continue_or_create` (default) resolves an existing session for the `session_key` or creates one; `new` always creates a fresh session; `continue` resolves an existing session and fails if none exists.
3474
+ * @enum {string}
3475
+ */
3476
+ mode?: "new" | "continue" | "continue_or_create";
3477
+ /** @description Stable key identifying the conversation within the agent. */
3478
+ session_key?: string;
3479
+ /** @description Human-friendly session title. */
3480
+ title?: string;
3481
+ visibility?: components["schemas"]["SessionVisibility"];
3482
+ /** @description Model to record on the session. */
3483
+ model?: string;
3484
+ /** @description Free-form caller metadata for the session. */
3485
+ metadata?: {
3486
+ [key: string]: unknown;
3487
+ };
3488
+ };
3489
+ /** @description One input event in a send. Phase 1 supports a single `user.message`. */
3490
+ SendSessionEventInput: {
3491
+ /**
3492
+ * @description Input event type. Defaults to `user.message`.
3493
+ * @enum {string}
3494
+ */
3495
+ type?: "user.message";
3496
+ /** @description Role to store for the input message. Defaults to `user`. */
3497
+ role?: components["schemas"]["SessionMessageRole"];
3498
+ /** @description Ordered content blocks (text, images) for the input message. */
3499
+ content: {
3500
+ [key: string]: unknown;
3501
+ }[];
3502
+ };
3503
+ /** @description Caller input to append and run against a session. */
3504
+ SendSessionEventsRequest: {
3505
+ /** @description Input events to send. Phase 1 accepts exactly one `user.message`. */
3506
+ events: components["schemas"]["SendSessionEventInput"][];
3507
+ /** @description Dedup key scoped to the session. A repeat send with the same key returns the existing invocation's cursor and writes nothing new. */
3508
+ idempotency_key?: string;
3509
+ /** @description Free-form caller metadata attached to the input message. */
3510
+ metadata?: {
3511
+ [key: string]: unknown;
3512
+ };
3513
+ };
3514
+ /** @description Acknowledgement that an invocation started, with a stream cursor. */
3515
+ SessionInvocationAck: {
3516
+ session: components["schemas"]["Session"];
3517
+ /**
3518
+ * Format: int64
3519
+ * @description The durable event sequence cursor to stream from. Pass it as `after_sequence` to the events stream to follow this invocation.
3520
+ */
3521
+ seq: number;
3522
+ /** @description True when a repeated idempotency key returned an existing invocation. */
3523
+ deduped?: boolean;
3524
+ };
3394
3525
  /**
3395
3526
  * @description A loop and its current authored definition. Updating any authoring field creates an internal revision and makes it runnable immediately.
3396
3527
  * @example {
@@ -3400,7 +3531,7 @@ export interface components {
3400
3531
  * "status": "active",
3401
3532
  * "owner": "user_2f9s3k4m5n6p7q8r",
3402
3533
  * "agent_id": "agent_5n8p2q7m4x9r3v6t",
3403
- * "schema_version": "2",
3534
+ * "schema_version": "1",
3404
3535
  * "default_config": {
3405
3536
  * "repository": "deepnoodle-ai/mobius-cloud"
3406
3537
  * },
@@ -3446,11 +3577,11 @@ export interface components {
3446
3577
  /** @description Agent associated with this loop. Agent steps use it when they do not pin `config.agent_id`. */
3447
3578
  agent_id?: string;
3448
3579
  /**
3449
- * @description Loop authoring schema version. Only schema version 2 is accepted.
3450
- * @default 2
3580
+ * @description Loop authoring schema version. Only schema version 1 is accepted.
3581
+ * @default 1
3451
3582
  * @enum {string}
3452
3583
  */
3453
- schema_version: "2";
3584
+ schema_version: "1";
3454
3585
  /** @description Declared event fields for this loop. */
3455
3586
  event?: {
3456
3587
  [key: string]: components["schemas"]["LoopSpecInput"];
@@ -3546,7 +3677,7 @@ export interface components {
3546
3677
  * "name": "Daily security check",
3547
3678
  * "description": "Review open pull requests each morning.",
3548
3679
  * "agent_id": "agent_5n8p2q7m4x9r3v6t",
3549
- * "schema_version": "2",
3680
+ * "schema_version": "1",
3550
3681
  * "triggers": [
3551
3682
  * {
3552
3683
  * "name": "Weekday morning",
@@ -3582,11 +3713,11 @@ export interface components {
3582
3713
  /** @description Agent associated with this loop. Agent steps use it when they do not pin `config.agent_id`. */
3583
3714
  agent_id?: string;
3584
3715
  /**
3585
- * @description Loop authoring schema version. Only schema version 2 is accepted.
3586
- * @default 2
3716
+ * @description Loop authoring schema version. Only schema version 1 is accepted.
3717
+ * @default 1
3587
3718
  * @enum {string}
3588
3719
  */
3589
- schema_version: "2";
3720
+ schema_version: "1";
3590
3721
  /** @description Declared event fields for this loop. */
3591
3722
  event?: {
3592
3723
  [key: string]: components["schemas"]["LoopSpecInput"];
@@ -3640,10 +3771,10 @@ export interface components {
3640
3771
  /** @description Agent associated with this loop. Agent steps use it when they do not pin `config.agent_id`. */
3641
3772
  agent_id?: string;
3642
3773
  /**
3643
- * @description Loop authoring schema version. Only schema version 2 is accepted.
3774
+ * @description Loop authoring schema version. Only schema version 1 is accepted.
3644
3775
  * @enum {string}
3645
3776
  */
3646
- schema_version?: "2";
3777
+ schema_version?: "1";
3647
3778
  /** @description Declared event fields for this loop. */
3648
3779
  event?: {
3649
3780
  [key: string]: components["schemas"]["LoopSpecInput"];
@@ -3686,8 +3817,14 @@ export interface components {
3686
3817
  /** @description Replacement labels; send an empty object to clear all tags. */
3687
3818
  tags?: components["schemas"]["TagMap"];
3688
3819
  };
3689
- /** @description Source repository target attached to a loop spec. */
3820
+ /** @description Source repository target attached to a loop spec. A `static` repository clones the named `full_name`. A `match` repository resolves the repository from the run's trigger event (for example the base repository of an opened GitHub pull request) and requires the loop to have an event trigger; pull requests opened from a fork are never cloned. `full_name` is required for `static` repositories and ignored for `match` repositories. */
3690
3821
  LoopSpecRepository: {
3822
+ /**
3823
+ * @description How the repository target is resolved. `static` clones `full_name`; `match` clones the repository the trigger event concerns.
3824
+ * @default static
3825
+ * @enum {string}
3826
+ */
3827
+ source: "static" | "match";
3691
3828
  /**
3692
3829
  * @description Repository provider. GitHub is the only supported provider today.
3693
3830
  * @default github
@@ -3696,8 +3833,10 @@ export interface components {
3696
3833
  provider: "github";
3697
3834
  /** @description Provider-specific repository id. */
3698
3835
  id?: number | string;
3699
- /** @description Provider repository full name, e.g. `owner/repo`. */
3700
- full_name: string;
3836
+ /** @description Provider repository full name, e.g. `owner/repo`. Required when `source` is `static`. */
3837
+ full_name?: string;
3838
+ /** @description Optional branch, tag, or ref to check out. For `static` repositories it pins the checkout; for `match` repositories it overrides the ref derived from the event. Omitted uses the provider default branch. */
3839
+ ref?: string;
3701
3840
  /** @description Whether the provider reports this repository as private. */
3702
3841
  private?: boolean;
3703
3842
  };
@@ -3884,7 +4023,7 @@ export interface components {
3884
4023
  LoopSpecLimits: {
3885
4024
  /**
3886
4025
  * Format: double
3887
- * @description Run budget in US dollars (1 credit = $0.01). The run halts with stop reason `budget_exceeded` at the next checkpoint (step boundary or agent tool iteration) once its metered spend reaches the ceiling; a `run.budget_warning` event fires once at 80%. Enforcement granularity is one model call or metered action — a run can overshoot by at most the call in flight. Mutually exclusive with `credit_budget`; values finer than 0.001 credit ($0.00001) are rejected at compile.
4026
+ * @description Run budget in US dollars (1 credit = $0.01). The budget is a hard limit: the run halts with stop reason `budget_exceeded` at the next checkpoint (step boundary or agent tool iteration) once its metered spend reaches the ceiling. Enforcement granularity is one model call or metered action — a run can overshoot by at most the call in flight. Mutually exclusive with `credit_budget`; values finer than 0.001 credit ($0.00001) are rejected at compile.
3888
4027
  */
3889
4028
  budget_usd?: number;
3890
4029
  /**
@@ -3945,7 +4084,7 @@ export interface components {
3945
4084
  instructions: string;
3946
4085
  /** @description Optional per-step tool allow-list. When omitted, prompt-only managed agent steps default to no tools; set `disable_tools: false` to allow the agent's full granted tool set. */
3947
4086
  tool_names?: string[];
3948
- /** @description Disable all tool calls for this agent step. When omitted, prompt-only managed agent steps (no `tool_names`, output schema, or worker model route) default to tool-less execution and skip managed environment allocation. Set `false` explicitly to opt back into the agent's granted tools. */
4087
+ /** @description Disable granted action and memory tools for this agent step. Reserved runtime tools such as `invoke_skill` and structured-output submission may still be present when applicable. When omitted, the agent's granted tools are available. */
3949
4088
  disable_tools?: boolean;
3950
4089
  /** @description JSON Schema the agent should satisfy when returning structured output. */
3951
4090
  output_schema?: {
@@ -4441,6 +4580,12 @@ export interface components {
4441
4580
  job_id?: string | null;
4442
4581
  /** @description Wait record this step is suspended on, when applicable. */
4443
4582
  wait_id?: string | null;
4583
+ /** @description Session the agent ran in, for `agent`-kind steps. Present once the step has started a turn; links the step to its conversation so the UI can open the transcript with this step's messages highlighted. */
4584
+ session_id?: string;
4585
+ /** @description Agent that executed this step, for `agent`-kind steps. */
4586
+ agent_id?: string;
4587
+ /** @description Most recent AgentTurn this step ran (its latest attempt), for `agent`-kind steps. Resolves to the step's messages within the session via their `turn_id`. */
4588
+ agent_turn_id?: string;
4444
4589
  /** @description Machine-readable error code populated on failure. */
4445
4590
  error_type?: string;
4446
4591
  /** @description Human-readable error message populated on failure. */
@@ -4507,7 +4652,7 @@ export interface components {
4507
4652
  /**
4508
4653
  * @description Event type from the run-stream taxonomy (e.g. `run.started`, `step.completed`, `wait.opened`, `action.called`, `action.completed`, `action.failed`, `artifact.created`, `limit.reached`, `usage.recorded`).
4509
4654
  *
4510
- * Guardrail events: `run.budget_warning` fires once when run spend first reaches 80% of the run budget (payload: `credit_budget`, `credit_spent`, `percent`); `run.budget_exceeded` fires when the budget halts the run at a checkpoint (same payload plus the `step` it halted before). `usage.recorded` payloads carry `step_key`, the event's `credit_cost`, its `budget_cost` (rate-card cost counted against the run budget, nonzero even for BYOK), and the cumulative `run_credit_spent`.
4655
+ * Guardrail events: `run.budget_exceeded` fires when the budget halts the run at a checkpoint (payload: `credit_budget`, `credit_spent`, `percent_used`, plus the `step` it halted before). `usage.recorded` payloads carry `step_key`, the event's `credit_cost`, its `budget_cost` (rate-card cost counted against the run budget, nonzero even for BYOK), and the cumulative `run_credit_spent`.
4511
4656
  */
4512
4657
  event_type: string;
4513
4658
  /** @description ID of the step this event belongs to, when applicable. */
@@ -4618,11 +4763,6 @@ export interface components {
4618
4763
  * @default false
4619
4764
  */
4620
4765
  required: boolean;
4621
- /**
4622
- * @description Whether the column value must be unique within the table.
4623
- * @default false
4624
- */
4625
- unique: boolean;
4626
4766
  /**
4627
4767
  * @description Marks the column as an expected filter/sort field so backends can maintain efficient indexes.
4628
4768
  * @default false
@@ -4644,14 +4784,11 @@ export interface components {
4644
4784
  name: string;
4645
4785
  /** @description Column names included in the index, in order. */
4646
4786
  columns: string[];
4647
- /**
4648
- * @description Whether the index enforces uniqueness across its columns.
4649
- * @default false
4650
- */
4651
- unique: boolean;
4652
4787
  };
4653
- /** @description Column and index definition for a table. */
4788
+ /** @description Column and index definition for a table. Each table has exactly one required string identity column. */
4654
4789
  TableSchema: {
4790
+ /** @description Name of the required string column that uniquely identifies one row in this table. */
4791
+ identity_column: string;
4655
4792
  /** @description Ordered list of columns accepted in row data. */
4656
4793
  columns: components["schemas"]["ColumnDef"][];
4657
4794
  /** @description Optional declared indexes maintained by the backend. */
@@ -4667,7 +4804,8 @@ export interface components {
4667
4804
  * "columns": [
4668
4805
  * {
4669
4806
  * "name": "pull_request_url",
4670
- * "type": "string"
4807
+ * "type": "string",
4808
+ * "required": true
4671
4809
  * },
4672
4810
  * {
4673
4811
  * "name": "severity",
@@ -4677,7 +4815,8 @@ export interface components {
4677
4815
  * "name": "summary",
4678
4816
  * "type": "string"
4679
4817
  * }
4680
- * ]
4818
+ * ],
4819
+ * "identity_column": "pull_request_url"
4681
4820
  * },
4682
4821
  * "tags": {
4683
4822
  * "team": "product"
@@ -4727,9 +4866,11 @@ export interface components {
4727
4866
  * "columns": [
4728
4867
  * {
4729
4868
  * "name": "pull_request_url",
4730
- * "type": "string"
4869
+ * "type": "string",
4870
+ * "required": true
4731
4871
  * }
4732
- * ]
4872
+ * ],
4873
+ * "identity_column": "pull_request_url"
4733
4874
  * },
4734
4875
  * "created_at": "2026-06-15T14:30:00Z",
4735
4876
  * "updated_at": "2026-06-15T14:30:00Z"
@@ -4795,7 +4936,8 @@ export interface components {
4795
4936
  * "columns": [
4796
4937
  * {
4797
4938
  * "name": "pull_request_url",
4798
- * "type": "string"
4939
+ * "type": "string",
4940
+ * "required": true
4799
4941
  * },
4800
4942
  * {
4801
4943
  * "name": "severity",
@@ -4805,7 +4947,8 @@ export interface components {
4805
4947
  * "name": "summary",
4806
4948
  * "type": "string"
4807
4949
  * }
4808
- * ]
4950
+ * ],
4951
+ * "identity_column": "pull_request_url"
4809
4952
  * }
4810
4953
  * }
4811
4954
  */
@@ -4964,14 +5107,12 @@ export interface components {
4964
5107
  items: components["schemas"]["TableRow"][];
4965
5108
  };
4966
5109
  UpsertRowRequest: {
4967
- /** @description Column names used to match an existing row. */
4968
- key_columns: string[];
4969
- /** @description Full row data. Must include values for all key_columns. */
5110
+ /** @description Fields to create or merge into the row. Must include the table's identity column. */
4970
5111
  data: {
4971
5112
  [key: string]: unknown;
4972
5113
  };
4973
5114
  };
4974
- /** @description Result of inserting or updating a row by key columns. */
5115
+ /** @description Result of inserting or updating a row by the table's identity column. */
4975
5116
  UpsertRowResult: {
4976
5117
  /** @description Row after insert or update. */
4977
5118
  row: components["schemas"]["TableRow"];
@@ -5032,6 +5173,29 @@ export interface components {
5032
5173
  updated_at?: string;
5033
5174
  /** @description Principal ID of the actor who last updated this artifact. Empty for system-initiated writes. */
5034
5175
  updated_by?: string;
5176
+ /** @description Thumbnail summary for the default variant, when available. Absent until thumbnail processing has produced a state for the current content. */
5177
+ thumbnail?: components["schemas"]["ArtifactThumbnailSummary"];
5178
+ };
5179
+ /** @description Summary of the Mobius-generated thumbnail for an artifact's default variant. The UI uses `status` to decide whether to fetch the thumbnail image, render a placeholder, or show a typed fallback card. */
5180
+ ArtifactThumbnailSummary: {
5181
+ /**
5182
+ * @description Current thumbnail state for the source artifact's content.
5183
+ * @enum {string}
5184
+ */
5185
+ status: "queued" | "processing" | "available" | "skipped" | "failed" | "stale";
5186
+ /** @description Variant name this summary describes (e.g. `card`). */
5187
+ variant: string;
5188
+ /** @description Thumbnail image MIME type when available (image/jpeg or image/png). */
5189
+ mime_type?: string;
5190
+ /** @description Thumbnail pixel width when available. */
5191
+ width?: number;
5192
+ /** @description Thumbnail pixel height when available. */
5193
+ height?: number;
5194
+ /**
5195
+ * Format: date-time
5196
+ * @description Time this thumbnail state was last updated.
5197
+ */
5198
+ updated_at?: string;
5035
5199
  };
5036
5200
  /**
5037
5201
  * @example {
@@ -5220,6 +5384,8 @@ export interface components {
5220
5384
  IntegrationIDParam: string;
5221
5385
  /** @description Integration event receipt ID. */
5222
5386
  IntegrationEventIDParam: string;
5387
+ /** @description Framework provider identifier from the integration provider catalog. */
5388
+ IntegrationProviderParam: string;
5223
5389
  /** @description Table ID. */
5224
5390
  TableIDParam: string;
5225
5391
  /** @description Filter tables by name. Table names are unique within a project; use this as a discovery filter and use the returned table `id` for follow-up operations. */
@@ -6687,7 +6853,147 @@ export interface operations {
6687
6853
  * }
6688
6854
  * }
6689
6855
  */
6690
- "application/json": components["schemas"]["UpdateAgentRequest"];
6856
+ "application/json": components["schemas"]["UpdateAgentRequest"];
6857
+ };
6858
+ };
6859
+ responses: {
6860
+ /** @description OK */
6861
+ 200: {
6862
+ headers: {
6863
+ [name: string]: unknown;
6864
+ };
6865
+ content: {
6866
+ "application/json": components["schemas"]["Agent"];
6867
+ };
6868
+ };
6869
+ 400: components["responses"]["BadRequest"];
6870
+ 401: components["responses"]["Unauthorized"];
6871
+ 403: components["responses"]["Forbidden"];
6872
+ 404: components["responses"]["NotFound"];
6873
+ 409: components["responses"]["Conflict"];
6874
+ 429: components["responses"]["TooManyRequests"];
6875
+ };
6876
+ };
6877
+ provisionAgentInbox: {
6878
+ parameters: {
6879
+ query?: never;
6880
+ header?: never;
6881
+ path: {
6882
+ /** @description Project handle */
6883
+ project_handle: components["parameters"]["ProjectHandleParam"];
6884
+ /** @description Resource ID. */
6885
+ resource_id: components["parameters"]["IDParam"];
6886
+ };
6887
+ cookie?: never;
6888
+ };
6889
+ requestBody?: never;
6890
+ responses: {
6891
+ /** @description OK */
6892
+ 200: {
6893
+ headers: {
6894
+ [name: string]: unknown;
6895
+ };
6896
+ content: {
6897
+ "application/json": components["schemas"]["Agent"];
6898
+ };
6899
+ };
6900
+ 401: components["responses"]["Unauthorized"];
6901
+ 403: components["responses"]["Forbidden"];
6902
+ 404: components["responses"]["NotFound"];
6903
+ 429: components["responses"]["TooManyRequests"];
6904
+ };
6905
+ };
6906
+ listTurnMessages: {
6907
+ parameters: {
6908
+ query?: {
6909
+ /** @description Only include messages with sequence greater than this value. */
6910
+ after_sequence?: number;
6911
+ /** @description Maximum number of items to return */
6912
+ limit?: components["parameters"]["LimitParam"];
6913
+ };
6914
+ header?: never;
6915
+ path: {
6916
+ /** @description Project handle */
6917
+ project_handle: components["parameters"]["ProjectHandleParam"];
6918
+ /** @description Resource ID. */
6919
+ resource_id: components["parameters"]["IDParam"];
6920
+ };
6921
+ cookie?: never;
6922
+ };
6923
+ requestBody?: never;
6924
+ responses: {
6925
+ /** @description OK */
6926
+ 200: {
6927
+ headers: {
6928
+ [name: string]: unknown;
6929
+ };
6930
+ content: {
6931
+ "application/json": components["schemas"]["SessionMessageListResponse"];
6932
+ };
6933
+ };
6934
+ 401: components["responses"]["Unauthorized"];
6935
+ 403: components["responses"]["Forbidden"];
6936
+ 404: components["responses"]["NotFound"];
6937
+ };
6938
+ };
6939
+ listAgentMessagingBindings: {
6940
+ parameters: {
6941
+ query?: never;
6942
+ header?: never;
6943
+ path: {
6944
+ /** @description Project handle */
6945
+ project_handle: components["parameters"]["ProjectHandleParam"];
6946
+ /** @description Resource ID. */
6947
+ resource_id: components["parameters"]["IDParam"];
6948
+ };
6949
+ cookie?: never;
6950
+ };
6951
+ requestBody?: never;
6952
+ responses: {
6953
+ /** @description OK */
6954
+ 200: {
6955
+ headers: {
6956
+ [name: string]: unknown;
6957
+ };
6958
+ content: {
6959
+ "application/json": components["schemas"]["AgentMessagingBindingListResponse"];
6960
+ };
6961
+ };
6962
+ 401: components["responses"]["Unauthorized"];
6963
+ 403: components["responses"]["Forbidden"];
6964
+ 404: components["responses"]["NotFound"];
6965
+ };
6966
+ };
6967
+ saveAgentMessagingBinding: {
6968
+ parameters: {
6969
+ query?: never;
6970
+ header?: never;
6971
+ path: {
6972
+ /** @description Project handle */
6973
+ project_handle: components["parameters"]["ProjectHandleParam"];
6974
+ /** @description Resource ID. */
6975
+ resource_id: components["parameters"]["IDParam"];
6976
+ };
6977
+ cookie?: never;
6978
+ };
6979
+ requestBody: {
6980
+ content: {
6981
+ /**
6982
+ * @example {
6983
+ * "provider": "slack",
6984
+ * "integration_id": "int_slack_7x3m9q2v5p8n4r6t",
6985
+ * "enabled": true,
6986
+ * "dms": true,
6987
+ * "mentions": true,
6988
+ * "all_messages": false,
6989
+ * "channels": [
6990
+ * "C0123456789"
6991
+ * ],
6992
+ * "dm_policy": "open",
6993
+ * "reply_mode": "auto"
6994
+ * }
6995
+ */
6996
+ "application/json": components["schemas"]["AgentMessagingBindingRequest"];
6691
6997
  };
6692
6998
  };
6693
6999
  responses: {
@@ -6697,7 +7003,7 @@ export interface operations {
6697
7003
  [name: string]: unknown;
6698
7004
  };
6699
7005
  content: {
6700
- "application/json": components["schemas"]["Agent"];
7006
+ "application/json": components["schemas"]["AgentMessagingBinding"];
6701
7007
  };
6702
7008
  };
6703
7009
  400: components["responses"]["BadRequest"];
@@ -6708,7 +7014,7 @@ export interface operations {
6708
7014
  429: components["responses"]["TooManyRequests"];
6709
7015
  };
6710
7016
  };
6711
- provisionAgentInbox: {
7017
+ deleteAgentMessagingBinding: {
6712
7018
  parameters: {
6713
7019
  query?: never;
6714
7020
  header?: never;
@@ -6717,19 +7023,19 @@ export interface operations {
6717
7023
  project_handle: components["parameters"]["ProjectHandleParam"];
6718
7024
  /** @description Resource ID. */
6719
7025
  resource_id: components["parameters"]["IDParam"];
7026
+ /** @description Messaging binding identifier. */
7027
+ binding_id: string;
6720
7028
  };
6721
7029
  cookie?: never;
6722
7030
  };
6723
7031
  requestBody?: never;
6724
7032
  responses: {
6725
- /** @description OK */
6726
- 200: {
7033
+ /** @description No Content */
7034
+ 204: {
6727
7035
  headers: {
6728
7036
  [name: string]: unknown;
6729
7037
  };
6730
- content: {
6731
- "application/json": components["schemas"]["Agent"];
6732
- };
7038
+ content?: never;
6733
7039
  };
6734
7040
  401: components["responses"]["Unauthorized"];
6735
7041
  403: components["responses"]["Forbidden"];
@@ -6737,20 +7043,9 @@ export interface operations {
6737
7043
  429: components["responses"]["TooManyRequests"];
6738
7044
  };
6739
7045
  };
6740
- listAgentSessions: {
7046
+ listAgentToolkitAssignments: {
6741
7047
  parameters: {
6742
- query?: {
6743
- /** @description Filter by session status. */
6744
- status?: components["schemas"]["SessionStatus"];
6745
- /** @description Filter by session scope. */
6746
- scope?: components["schemas"]["SessionScope"];
6747
- /** @description Filter messaging sessions by provider metadata, e.g. `slack` or `telegram`. */
6748
- provider?: string;
6749
- /** @description Only include sessions with activity after this timestamp. */
6750
- since?: string;
6751
- /** @description Maximum number of items to return */
6752
- limit?: components["parameters"]["LimitParam"];
6753
- };
7048
+ query?: never;
6754
7049
  header?: never;
6755
7050
  path: {
6756
7051
  /** @description Project handle */
@@ -6768,7 +7063,7 @@ export interface operations {
6768
7063
  [name: string]: unknown;
6769
7064
  };
6770
7065
  content: {
6771
- "application/json": components["schemas"]["SessionListResponse"];
7066
+ "application/json": components["schemas"]["ToolkitAssignmentListResponse"];
6772
7067
  };
6773
7068
  };
6774
7069
  401: components["responses"]["Unauthorized"];
@@ -6776,7 +7071,7 @@ export interface operations {
6776
7071
  404: components["responses"]["NotFound"];
6777
7072
  };
6778
7073
  };
6779
- getAgentSession: {
7074
+ replaceAgentToolkitAssignments: {
6780
7075
  parameters: {
6781
7076
  query?: never;
6782
7077
  header?: never;
@@ -6785,12 +7080,21 @@ export interface operations {
6785
7080
  project_handle: components["parameters"]["ProjectHandleParam"];
6786
7081
  /** @description Resource ID. */
6787
7082
  resource_id: components["parameters"]["IDParam"];
6788
- /** @description Session identifier. */
6789
- session_id: string;
6790
7083
  };
6791
7084
  cookie?: never;
6792
7085
  };
6793
- requestBody?: never;
7086
+ requestBody: {
7087
+ content: {
7088
+ /**
7089
+ * @example {
7090
+ * "toolkit_ids": [
7091
+ * "kit_4r8q2m7x9p5v3n6t"
7092
+ * ]
7093
+ * }
7094
+ */
7095
+ "application/json": components["schemas"]["ReplaceToolkitsRequest"];
7096
+ };
7097
+ };
6794
7098
  responses: {
6795
7099
  /** @description OK */
6796
7100
  200: {
@@ -6798,30 +7102,25 @@ export interface operations {
6798
7102
  [name: string]: unknown;
6799
7103
  };
6800
7104
  content: {
6801
- "application/json": components["schemas"]["Session"];
7105
+ "application/json": components["schemas"]["ToolkitAssignmentListResponse"];
6802
7106
  };
6803
7107
  };
7108
+ 400: components["responses"]["BadRequest"];
6804
7109
  401: components["responses"]["Unauthorized"];
6805
7110
  403: components["responses"]["Forbidden"];
6806
7111
  404: components["responses"]["NotFound"];
7112
+ 429: components["responses"]["TooManyRequests"];
6807
7113
  };
6808
7114
  };
6809
- listSessionMessages: {
7115
+ listAgentSkillAssignments: {
6810
7116
  parameters: {
6811
- query?: {
6812
- /** @description Only include messages with sequence greater than this value. */
6813
- after_sequence?: number;
6814
- /** @description Maximum number of items to return */
6815
- limit?: components["parameters"]["LimitParam"];
6816
- };
7117
+ query?: never;
6817
7118
  header?: never;
6818
7119
  path: {
6819
7120
  /** @description Project handle */
6820
7121
  project_handle: components["parameters"]["ProjectHandleParam"];
6821
7122
  /** @description Resource ID. */
6822
7123
  resource_id: components["parameters"]["IDParam"];
6823
- /** @description Session identifier. */
6824
- session_id: string;
6825
7124
  };
6826
7125
  cookie?: never;
6827
7126
  };
@@ -6833,7 +7132,7 @@ export interface operations {
6833
7132
  [name: string]: unknown;
6834
7133
  };
6835
7134
  content: {
6836
- "application/json": components["schemas"]["SessionMessageListResponse"];
7135
+ "application/json": components["schemas"]["SkillAssignmentListResponse"];
6837
7136
  };
6838
7137
  };
6839
7138
  401: components["responses"]["Unauthorized"];
@@ -6841,7 +7140,7 @@ export interface operations {
6841
7140
  404: components["responses"]["NotFound"];
6842
7141
  };
6843
7142
  };
6844
- appendSessionMessages: {
7143
+ replaceAgentSkillAssignments: {
6845
7144
  parameters: {
6846
7145
  query?: never;
6847
7146
  header?: never;
@@ -6850,14 +7149,19 @@ export interface operations {
6850
7149
  project_handle: components["parameters"]["ProjectHandleParam"];
6851
7150
  /** @description Resource ID. */
6852
7151
  resource_id: components["parameters"]["IDParam"];
6853
- /** @description Session identifier. */
6854
- session_id: string;
6855
7152
  };
6856
7153
  cookie?: never;
6857
7154
  };
6858
7155
  requestBody: {
6859
7156
  content: {
6860
- "application/json": components["schemas"]["AppendSessionMessagesRequest"];
7157
+ /**
7158
+ * @example {
7159
+ * "skill_ids": [
7160
+ * "skill_7n4q8x2m9p5v3r6t"
7161
+ * ]
7162
+ * }
7163
+ */
7164
+ "application/json": components["schemas"]["ReplaceSkillsRequest"];
6861
7165
  };
6862
7166
  };
6863
7167
  responses: {
@@ -6867,7 +7171,7 @@ export interface operations {
6867
7171
  [name: string]: unknown;
6868
7172
  };
6869
7173
  content: {
6870
- "application/json": components["schemas"]["Session"];
7174
+ "application/json": components["schemas"]["SkillAssignmentListResponse"];
6871
7175
  };
6872
7176
  };
6873
7177
  400: components["responses"]["BadRequest"];
@@ -6877,17 +7181,22 @@ export interface operations {
6877
7181
  429: components["responses"]["TooManyRequests"];
6878
7182
  };
6879
7183
  };
6880
- listSessionTurns: {
7184
+ getAgentTools: {
6881
7185
  parameters: {
6882
- query?: never;
7186
+ query?: {
7187
+ /** @description Optional comma-separated toolkit subset to apply. */
7188
+ toolkit_ids?: string;
7189
+ /** @description Optional assigned skill name to preselect as active. */
7190
+ skill_name?: string;
7191
+ /** @description Optional comma-separated canonical action names, wildcard selectors, or group references to apply as a per-invocation filter against the resolved tool set. */
7192
+ allowed_tools?: string;
7193
+ };
6883
7194
  header?: never;
6884
7195
  path: {
6885
7196
  /** @description Project handle */
6886
7197
  project_handle: components["parameters"]["ProjectHandleParam"];
6887
7198
  /** @description Resource ID. */
6888
7199
  resource_id: components["parameters"]["IDParam"];
6889
- /** @description Session identifier. */
6890
- session_id: string;
6891
7200
  };
6892
7201
  cookie?: never;
6893
7202
  };
@@ -6899,19 +7208,30 @@ export interface operations {
6899
7208
  [name: string]: unknown;
6900
7209
  };
6901
7210
  content: {
6902
- "application/json": components["schemas"]["AgentTurnListResponse"];
7211
+ "application/json": components["schemas"]["AgentToolManifest"];
6903
7212
  };
6904
7213
  };
7214
+ 400: components["responses"]["BadRequest"];
6905
7215
  401: components["responses"]["Unauthorized"];
6906
7216
  403: components["responses"]["Forbidden"];
6907
7217
  404: components["responses"]["NotFound"];
6908
7218
  };
6909
7219
  };
6910
- listTurnMessages: {
7220
+ listSessions: {
6911
7221
  parameters: {
6912
7222
  query?: {
6913
- /** @description Only include messages with sequence greater than this value. */
6914
- after_sequence?: number;
7223
+ /** @description Filter to sessions owned by this agent. */
7224
+ agent_id?: string;
7225
+ /** @description Filter by session status. */
7226
+ status?: components["schemas"]["SessionStatus"];
7227
+ /** @description Filter by session scope. */
7228
+ scope?: components["schemas"]["SessionScope"];
7229
+ /** @description Filter messaging sessions by provider metadata, e.g. `slack` or `telegram`. */
7230
+ provider?: string;
7231
+ /** @description Filter to sessions created by this integration, e.g. agent sessions started from a connected provider. */
7232
+ integration_id?: string;
7233
+ /** @description Only include sessions with activity after this timestamp. */
7234
+ since?: string;
6915
7235
  /** @description Maximum number of items to return */
6916
7236
  limit?: components["parameters"]["LimitParam"];
6917
7237
  };
@@ -6919,8 +7239,6 @@ export interface operations {
6919
7239
  path: {
6920
7240
  /** @description Project handle */
6921
7241
  project_handle: components["parameters"]["ProjectHandleParam"];
6922
- /** @description Resource ID. */
6923
- resource_id: components["parameters"]["IDParam"];
6924
7242
  };
6925
7243
  cookie?: never;
6926
7244
  };
@@ -6932,7 +7250,7 @@ export interface operations {
6932
7250
  [name: string]: unknown;
6933
7251
  };
6934
7252
  content: {
6935
- "application/json": components["schemas"]["SessionMessageListResponse"];
7253
+ "application/json": components["schemas"]["SessionListResponse"];
6936
7254
  };
6937
7255
  };
6938
7256
  401: components["responses"]["Unauthorized"];
@@ -6940,19 +7258,21 @@ export interface operations {
6940
7258
  404: components["responses"]["NotFound"];
6941
7259
  };
6942
7260
  };
6943
- listAgentMessagingBindings: {
7261
+ createSession: {
6944
7262
  parameters: {
6945
7263
  query?: never;
6946
7264
  header?: never;
6947
7265
  path: {
6948
7266
  /** @description Project handle */
6949
7267
  project_handle: components["parameters"]["ProjectHandleParam"];
6950
- /** @description Resource ID. */
6951
- resource_id: components["parameters"]["IDParam"];
6952
7268
  };
6953
7269
  cookie?: never;
6954
7270
  };
6955
- requestBody?: never;
7271
+ requestBody: {
7272
+ content: {
7273
+ "application/json": components["schemas"]["CreateSessionRequest"];
7274
+ };
7275
+ };
6956
7276
  responses: {
6957
7277
  /** @description OK */
6958
7278
  200: {
@@ -6960,15 +7280,16 @@ export interface operations {
6960
7280
  [name: string]: unknown;
6961
7281
  };
6962
7282
  content: {
6963
- "application/json": components["schemas"]["AgentMessagingBindingListResponse"];
7283
+ "application/json": components["schemas"]["Session"];
6964
7284
  };
6965
7285
  };
7286
+ 400: components["responses"]["BadRequest"];
6966
7287
  401: components["responses"]["Unauthorized"];
6967
7288
  403: components["responses"]["Forbidden"];
6968
7289
  404: components["responses"]["NotFound"];
6969
7290
  };
6970
7291
  };
6971
- saveAgentMessagingBinding: {
7292
+ getSession: {
6972
7293
  parameters: {
6973
7294
  query?: never;
6974
7295
  header?: never;
@@ -6980,26 +7301,7 @@ export interface operations {
6980
7301
  };
6981
7302
  cookie?: never;
6982
7303
  };
6983
- requestBody: {
6984
- content: {
6985
- /**
6986
- * @example {
6987
- * "provider": "slack",
6988
- * "integration_id": "int_slack_7x3m9q2v5p8n4r6t",
6989
- * "enabled": true,
6990
- * "dms": true,
6991
- * "mentions": true,
6992
- * "all_messages": false,
6993
- * "channels": [
6994
- * "C0123456789"
6995
- * ],
6996
- * "dm_policy": "open",
6997
- * "reply_mode": "auto"
6998
- * }
6999
- */
7000
- "application/json": components["schemas"]["AgentMessagingBindingRequest"];
7001
- };
7002
- };
7304
+ requestBody?: never;
7003
7305
  responses: {
7004
7306
  /** @description OK */
7005
7307
  200: {
@@ -7007,18 +7309,15 @@ export interface operations {
7007
7309
  [name: string]: unknown;
7008
7310
  };
7009
7311
  content: {
7010
- "application/json": components["schemas"]["AgentMessagingBinding"];
7312
+ "application/json": components["schemas"]["Session"];
7011
7313
  };
7012
7314
  };
7013
- 400: components["responses"]["BadRequest"];
7014
7315
  401: components["responses"]["Unauthorized"];
7015
7316
  403: components["responses"]["Forbidden"];
7016
7317
  404: components["responses"]["NotFound"];
7017
- 409: components["responses"]["Conflict"];
7018
- 429: components["responses"]["TooManyRequests"];
7019
7318
  };
7020
7319
  };
7021
- deleteAgentMessagingBinding: {
7320
+ deleteSession: {
7022
7321
  parameters: {
7023
7322
  query?: never;
7024
7323
  header?: never;
@@ -7027,8 +7326,6 @@ export interface operations {
7027
7326
  project_handle: components["parameters"]["ProjectHandleParam"];
7028
7327
  /** @description Resource ID. */
7029
7328
  resource_id: components["parameters"]["IDParam"];
7030
- /** @description Messaging binding identifier. */
7031
- binding_id: string;
7032
7329
  };
7033
7330
  cookie?: never;
7034
7331
  };
@@ -7044,10 +7341,11 @@ export interface operations {
7044
7341
  401: components["responses"]["Unauthorized"];
7045
7342
  403: components["responses"]["Forbidden"];
7046
7343
  404: components["responses"]["NotFound"];
7344
+ 409: components["responses"]["Conflict"];
7047
7345
  429: components["responses"]["TooManyRequests"];
7048
7346
  };
7049
7347
  };
7050
- streamSessionEvents: {
7348
+ updateSession: {
7051
7349
  parameters: {
7052
7350
  query?: never;
7053
7351
  header?: never;
@@ -7056,30 +7354,40 @@ export interface operations {
7056
7354
  project_handle: components["parameters"]["ProjectHandleParam"];
7057
7355
  /** @description Resource ID. */
7058
7356
  resource_id: components["parameters"]["IDParam"];
7059
- /** @description Session identifier. */
7060
- session_id: string;
7061
7357
  };
7062
7358
  cookie?: never;
7063
7359
  };
7064
- requestBody?: never;
7360
+ requestBody: {
7361
+ content: {
7362
+ "application/json": components["schemas"]["UpdateSessionRequest"];
7363
+ };
7364
+ };
7065
7365
  responses: {
7066
- /** @description Server-sent event stream of live session activity. Each message is framed as `event: <event type>` (e.g. `generation.delta`) followed by a `data:` line carrying the JSON-encoded event payload (the `SessionStreamEvent` shape, always including `session_id`). */
7366
+ /** @description OK */
7067
7367
  200: {
7068
7368
  headers: {
7069
7369
  [name: string]: unknown;
7070
7370
  };
7071
7371
  content: {
7072
- "text/event-stream": components["schemas"]["SessionStreamEvent"];
7372
+ "application/json": components["schemas"]["Session"];
7073
7373
  };
7074
7374
  };
7375
+ 400: components["responses"]["BadRequest"];
7075
7376
  401: components["responses"]["Unauthorized"];
7076
7377
  403: components["responses"]["Forbidden"];
7077
7378
  404: components["responses"]["NotFound"];
7379
+ 409: components["responses"]["Conflict"];
7380
+ 429: components["responses"]["TooManyRequests"];
7078
7381
  };
7079
7382
  };
7080
- listAgentToolkitAssignments: {
7383
+ listSessionMessages: {
7081
7384
  parameters: {
7082
- query?: never;
7385
+ query?: {
7386
+ /** @description Only include messages with sequence greater than this value. */
7387
+ after_sequence?: number;
7388
+ /** @description Maximum number of items to return */
7389
+ limit?: components["parameters"]["LimitParam"];
7390
+ };
7083
7391
  header?: never;
7084
7392
  path: {
7085
7393
  /** @description Project handle */
@@ -7097,7 +7405,7 @@ export interface operations {
7097
7405
  [name: string]: unknown;
7098
7406
  };
7099
7407
  content: {
7100
- "application/json": components["schemas"]["ToolkitAssignmentListResponse"];
7408
+ "application/json": components["schemas"]["SessionMessageListResponse"];
7101
7409
  };
7102
7410
  };
7103
7411
  401: components["responses"]["Unauthorized"];
@@ -7105,7 +7413,7 @@ export interface operations {
7105
7413
  404: components["responses"]["NotFound"];
7106
7414
  };
7107
7415
  };
7108
- replaceAgentToolkitAssignments: {
7416
+ appendSessionMessages: {
7109
7417
  parameters: {
7110
7418
  query?: never;
7111
7419
  header?: never;
@@ -7119,14 +7427,7 @@ export interface operations {
7119
7427
  };
7120
7428
  requestBody: {
7121
7429
  content: {
7122
- /**
7123
- * @example {
7124
- * "toolkit_ids": [
7125
- * "kit_4r8q2m7x9p5v3n6t"
7126
- * ]
7127
- * }
7128
- */
7129
- "application/json": components["schemas"]["ReplaceToolkitsRequest"];
7430
+ "application/json": components["schemas"]["AppendSessionMessagesRequest"];
7130
7431
  };
7131
7432
  };
7132
7433
  responses: {
@@ -7136,7 +7437,7 @@ export interface operations {
7136
7437
  [name: string]: unknown;
7137
7438
  };
7138
7439
  content: {
7139
- "application/json": components["schemas"]["ToolkitAssignmentListResponse"];
7440
+ "application/json": components["schemas"]["Session"];
7140
7441
  };
7141
7442
  };
7142
7443
  400: components["responses"]["BadRequest"];
@@ -7146,7 +7447,7 @@ export interface operations {
7146
7447
  429: components["responses"]["TooManyRequests"];
7147
7448
  };
7148
7449
  };
7149
- listAgentSkillAssignments: {
7450
+ listSessionTurns: {
7150
7451
  parameters: {
7151
7452
  query?: never;
7152
7453
  header?: never;
@@ -7166,7 +7467,7 @@ export interface operations {
7166
7467
  [name: string]: unknown;
7167
7468
  };
7168
7469
  content: {
7169
- "application/json": components["schemas"]["SkillAssignmentListResponse"];
7470
+ "application/json": components["schemas"]["AgentTurnListResponse"];
7170
7471
  };
7171
7472
  };
7172
7473
  401: components["responses"]["Unauthorized"];
@@ -7174,7 +7475,38 @@ export interface operations {
7174
7475
  404: components["responses"]["NotFound"];
7175
7476
  };
7176
7477
  };
7177
- replaceAgentSkillAssignments: {
7478
+ streamSessionEvents: {
7479
+ parameters: {
7480
+ query?: {
7481
+ /** @description Resume the stream after this durable event sequence number. */
7482
+ after_sequence?: number;
7483
+ };
7484
+ header?: never;
7485
+ path: {
7486
+ /** @description Project handle */
7487
+ project_handle: components["parameters"]["ProjectHandleParam"];
7488
+ /** @description Resource ID. */
7489
+ resource_id: components["parameters"]["IDParam"];
7490
+ };
7491
+ cookie?: never;
7492
+ };
7493
+ requestBody?: never;
7494
+ responses: {
7495
+ /** @description Server-sent event stream of session activity. Each message is framed as `event: <event type>` followed by a `data:` line carrying the JSON-encoded event payload (the `SessionStreamEvent` shape, always including `session_id`). Durable events also carry an `id:` line with the event sequence number for `Last-Event-ID` resume. */
7496
+ 200: {
7497
+ headers: {
7498
+ [name: string]: unknown;
7499
+ };
7500
+ content: {
7501
+ "text/event-stream": components["schemas"]["SessionStreamEvent"];
7502
+ };
7503
+ };
7504
+ 401: components["responses"]["Unauthorized"];
7505
+ 403: components["responses"]["Forbidden"];
7506
+ 404: components["responses"]["NotFound"];
7507
+ };
7508
+ };
7509
+ sendSessionEvents: {
7178
7510
  parameters: {
7179
7511
  query?: never;
7180
7512
  header?: never;
@@ -7188,43 +7520,30 @@ export interface operations {
7188
7520
  };
7189
7521
  requestBody: {
7190
7522
  content: {
7191
- /**
7192
- * @example {
7193
- * "skill_ids": [
7194
- * "skill_7n4q8x2m9p5v3r6t"
7195
- * ]
7196
- * }
7197
- */
7198
- "application/json": components["schemas"]["ReplaceSkillsRequest"];
7523
+ "application/json": components["schemas"]["SendSessionEventsRequest"];
7199
7524
  };
7200
7525
  };
7201
7526
  responses: {
7202
- /** @description OK */
7203
- 200: {
7527
+ /** @description The invocation was accepted and is running. */
7528
+ 202: {
7204
7529
  headers: {
7205
7530
  [name: string]: unknown;
7206
7531
  };
7207
7532
  content: {
7208
- "application/json": components["schemas"]["SkillAssignmentListResponse"];
7533
+ "application/json": components["schemas"]["SessionInvocationAck"];
7209
7534
  };
7210
7535
  };
7211
7536
  400: components["responses"]["BadRequest"];
7212
7537
  401: components["responses"]["Unauthorized"];
7213
7538
  403: components["responses"]["Forbidden"];
7214
7539
  404: components["responses"]["NotFound"];
7540
+ 409: components["responses"]["Conflict"];
7215
7541
  429: components["responses"]["TooManyRequests"];
7216
7542
  };
7217
7543
  };
7218
- getAgentTools: {
7544
+ cancelSession: {
7219
7545
  parameters: {
7220
- query?: {
7221
- /** @description Optional comma-separated toolkit subset to apply. */
7222
- toolkit_ids?: string;
7223
- /** @description Optional assigned skill name to preselect as active. */
7224
- skill_name?: string;
7225
- /** @description Optional comma-separated canonical action names, wildcard selectors, or group references to apply as a per-invocation filter against the resolved tool set. */
7226
- allowed_tools?: string;
7227
- };
7546
+ query?: never;
7228
7547
  header?: never;
7229
7548
  path: {
7230
7549
  /** @description Project handle */
@@ -7242,10 +7561,9 @@ export interface operations {
7242
7561
  [name: string]: unknown;
7243
7562
  };
7244
7563
  content: {
7245
- "application/json": components["schemas"]["AgentToolManifest"];
7564
+ "application/json": components["schemas"]["Session"];
7246
7565
  };
7247
7566
  };
7248
- 400: components["responses"]["BadRequest"];
7249
7567
  401: components["responses"]["Unauthorized"];
7250
7568
  403: components["responses"]["Forbidden"];
7251
7569
  404: components["responses"]["NotFound"];
@@ -7302,7 +7620,7 @@ export interface operations {
7302
7620
  * "name": "Daily security check",
7303
7621
  * "description": "Review open pull requests each morning.",
7304
7622
  * "agent_id": "agent_5n8p2q7m4x9r3v6t",
7305
- * "schema_version": "2",
7623
+ * "schema_version": "1",
7306
7624
  * "triggers": [
7307
7625
  * {
7308
7626
  * "name": "Weekday morning",
@@ -7344,7 +7662,7 @@ export interface operations {
7344
7662
  * "description": "Review open pull requests each morning.",
7345
7663
  * "status": "active",
7346
7664
  * "agent_id": "agent_5n8p2q7m4x9r3v6t",
7347
- * "schema_version": "2",
7665
+ * "schema_version": "1",
7348
7666
  * "triggers": [
7349
7667
  * {
7350
7668
  * "name": "Weekday morning",
@@ -8403,7 +8721,8 @@ export interface operations {
8403
8721
  * "name": "summary",
8404
8722
  * "type": "string"
8405
8723
  * }
8406
- * ]
8724
+ * ],
8725
+ * "identity_column": "pull_request_url"
8407
8726
  * }
8408
8727
  * }
8409
8728
  */
@@ -8437,7 +8756,8 @@ export interface operations {
8437
8756
  * "name": "summary",
8438
8757
  * "type": "string"
8439
8758
  * }
8440
- * ]
8759
+ * ],
8760
+ * "identity_column": "pull_request_url"
8441
8761
  * },
8442
8762
  * "created_at": "2026-06-15T14:30:00Z",
8443
8763
  * "updated_at": "2026-06-15T14:30:00Z"
@@ -8547,7 +8867,8 @@ export interface operations {
8547
8867
  * "columns": [
8548
8868
  * {
8549
8869
  * "name": "pull_request_url",
8550
- * "type": "string"
8870
+ * "type": "string",
8871
+ * "required": true
8551
8872
  * },
8552
8873
  * {
8553
8874
  * "name": "severity",
@@ -8557,7 +8878,8 @@ export interface operations {
8557
8878
  * "name": "summary",
8558
8879
  * "type": "string"
8559
8880
  * }
8560
- * ]
8881
+ * ],
8882
+ * "identity_column": "pull_request_url"
8561
8883
  * },
8562
8884
  * "tags": {
8563
8885
  * "team": "product"
@@ -8814,9 +9136,6 @@ export interface operations {
8814
9136
  content: {
8815
9137
  /**
8816
9138
  * @example {
8817
- * "key_columns": [
8818
- * "pull_request_url"
8819
- * ],
8820
9139
  * "data": {
8821
9140
  * "pull_request_url": "https://github.com/deepnoodle-ai/mobius-cloud/pull/123",
8822
9141
  * "severity": "high",