github.com/anthropics/anthropic-sdk-go@v1.70.1/betasessionthread.go (about)

     1  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
     2  
     3  package anthropic
     4  
     5  import (
     6  	"context"
     7  	"encoding/json"
     8  	"errors"
     9  	"fmt"
    10  	"net/http"
    11  	"net/url"
    12  	"slices"
    13  	"time"
    14  
    15  	"github.com/anthropics/anthropic-sdk-go/internal/apijson"
    16  	"github.com/anthropics/anthropic-sdk-go/internal/apiquery"
    17  	"github.com/anthropics/anthropic-sdk-go/internal/requestconfig"
    18  	"github.com/anthropics/anthropic-sdk-go/option"
    19  	"github.com/anthropics/anthropic-sdk-go/packages/pagination"
    20  	"github.com/anthropics/anthropic-sdk-go/packages/param"
    21  	"github.com/anthropics/anthropic-sdk-go/packages/respjson"
    22  )
    23  
    24  // BetaSessionThreadService contains methods and other services that help with
    25  // interacting with the anthropic API.
    26  //
    27  // Note, unlike clients, this service does not read variables from the environment
    28  // automatically. You should not instantiate this service directly, and instead use
    29  // the [NewBetaSessionThreadService] method instead.
    30  type BetaSessionThreadService struct {
    31  	Options []option.RequestOption
    32  	Events  BetaSessionThreadEventService
    33  }
    34  
    35  // NewBetaSessionThreadService generates a new service that applies the given
    36  // options to each request. These options are applied after the parent client's
    37  // options (if there is one), and before any request-specific options.
    38  func NewBetaSessionThreadService(opts ...option.RequestOption) (r BetaSessionThreadService) {
    39  	r = BetaSessionThreadService{}
    40  	r.Options = opts
    41  	r.Events = NewBetaSessionThreadEventService(opts...)
    42  	return
    43  }
    44  
    45  // Get Session Thread
    46  func (r *BetaSessionThreadService) Get(ctx context.Context, threadID string, params BetaSessionThreadGetParams, opts ...option.RequestOption) (res *BetaManagedAgentsSessionThread, err error) {
    47  	for _, v := range params.Betas {
    48  		opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v)))
    49  	}
    50  	if !param.IsOmitted(params.WorkspaceID) {
    51  		opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value)))
    52  	}
    53  	opts = slices.Concat(r.Options, opts)
    54  	opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...)
    55  	if params.SessionID == "" {
    56  		err = errors.New("missing required session_id parameter")
    57  		return nil, err
    58  	}
    59  	if threadID == "" {
    60  		err = errors.New("missing required thread_id parameter")
    61  		return nil, err
    62  	}
    63  	path := fmt.Sprintf("v1/sessions/%s/threads/%s?beta=true", params.SessionID, threadID)
    64  	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
    65  	return res, err
    66  }
    67  
    68  // List Session Threads
    69  func (r *BetaSessionThreadService) List(ctx context.Context, sessionID string, params BetaSessionThreadListParams, opts ...option.RequestOption) (res *pagination.PageCursor[BetaManagedAgentsSessionThread], err error) {
    70  	var raw *http.Response
    71  	for _, v := range params.Betas {
    72  		opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v)))
    73  	}
    74  	if !param.IsOmitted(params.WorkspaceID) {
    75  		opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value)))
    76  	}
    77  	opts = slices.Concat(r.Options, opts)
    78  	opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01"), option.WithResponseInto(&raw)}, opts...)
    79  	if sessionID == "" {
    80  		err = errors.New("missing required session_id parameter")
    81  		return nil, err
    82  	}
    83  	path := fmt.Sprintf("v1/sessions/%s/threads?beta=true", sessionID)
    84  	cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, params, &res, opts...)
    85  	if err != nil {
    86  		return nil, err
    87  	}
    88  	err = cfg.Execute()
    89  	if err != nil {
    90  		return nil, err
    91  	}
    92  	res.SetPageConfig(cfg, raw)
    93  	return res, nil
    94  }
    95  
    96  // List Session Threads
    97  func (r *BetaSessionThreadService) ListAutoPaging(ctx context.Context, sessionID string, params BetaSessionThreadListParams, opts ...option.RequestOption) *pagination.PageCursorAutoPager[BetaManagedAgentsSessionThread] {
    98  	return pagination.NewPageCursorAutoPager(r.List(ctx, sessionID, params, opts...))
    99  }
   100  
   101  // Archive Session Thread
   102  func (r *BetaSessionThreadService) Archive(ctx context.Context, threadID string, params BetaSessionThreadArchiveParams, opts ...option.RequestOption) (res *BetaManagedAgentsSessionThread, err error) {
   103  	for _, v := range params.Betas {
   104  		opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v)))
   105  	}
   106  	if !param.IsOmitted(params.WorkspaceID) {
   107  		opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value)))
   108  	}
   109  	opts = slices.Concat(r.Options, opts)
   110  	opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...)
   111  	if params.SessionID == "" {
   112  		err = errors.New("missing required session_id parameter")
   113  		return nil, err
   114  	}
   115  	if threadID == "" {
   116  		err = errors.New("missing required thread_id parameter")
   117  		return nil, err
   118  	}
   119  	path := fmt.Sprintf("v1/sessions/%s/threads/%s/archive?beta=true", params.SessionID, threadID)
   120  	err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
   121  	return res, err
   122  }
   123  
   124  // An execution thread within a `session`. Each session has one primary thread plus
   125  // zero or more child threads spawned by the coordinator.
   126  type BetaManagedAgentsSessionThread struct {
   127  	// Unique identifier for this thread.
   128  	ID string `json:"id" api:"required"`
   129  	// The resolved agent a session thread runs: a saved-agent snapshot, the platform
   130  	// advisor entry, or an inline-defined (ephemeral) agent snapshot.
   131  	Agent BetaManagedAgentsSessionThreadAgentUnion `json:"agent" api:"required"`
   132  	// A timestamp in RFC 3339 format
   133  	ArchivedAt time.Time `json:"archived_at" api:"required" format:"date-time"`
   134  	// A timestamp in RFC 3339 format
   135  	CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
   136  	// Parent thread that spawned this thread. Null for the primary thread.
   137  	ParentThreadID string `json:"parent_thread_id" api:"required"`
   138  	// The session this thread belongs to.
   139  	SessionID string `json:"session_id" api:"required"`
   140  	// Timing statistics for a session thread.
   141  	Stats BetaManagedAgentsSessionThreadStats `json:"stats" api:"required"`
   142  	// SessionThreadStatus enum
   143  	//
   144  	// Any of "running", "idle", "rescheduling", "terminated".
   145  	Status BetaManagedAgentsSessionThreadStatus `json:"status" api:"required"`
   146  	// Any of "session_thread".
   147  	Type BetaManagedAgentsSessionThreadType `json:"type" api:"required"`
   148  	// A timestamp in RFC 3339 format
   149  	UpdatedAt time.Time `json:"updated_at" api:"required" format:"date-time"`
   150  	// Cumulative token usage for a session thread across all turns.
   151  	Usage BetaManagedAgentsSessionThreadUsage `json:"usage" api:"required"`
   152  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   153  	JSON struct {
   154  		ID             respjson.Field
   155  		Agent          respjson.Field
   156  		ArchivedAt     respjson.Field
   157  		CreatedAt      respjson.Field
   158  		ParentThreadID respjson.Field
   159  		SessionID      respjson.Field
   160  		Stats          respjson.Field
   161  		Status         respjson.Field
   162  		Type           respjson.Field
   163  		UpdatedAt      respjson.Field
   164  		Usage          respjson.Field
   165  		ExtraFields    map[string]respjson.Field
   166  		raw            string
   167  	} `json:"-"`
   168  }
   169  
   170  // Returns the unmodified JSON received from the API
   171  func (r BetaManagedAgentsSessionThread) RawJSON() string { return r.JSON.raw }
   172  func (r *BetaManagedAgentsSessionThread) UnmarshalJSON(data []byte) error {
   173  	return apijson.UnmarshalRoot(data, r)
   174  }
   175  
   176  // BetaManagedAgentsSessionThreadAgentUnion contains all possible properties and
   177  // values from [BetaManagedAgentsSessionThreadAgent], [BetaManagedAgentsAdvisor].
   178  //
   179  // Use the [BetaManagedAgentsSessionThreadAgentUnion.AsAny] method to switch on the
   180  // variant.
   181  //
   182  // Use the methods beginning with 'As' to cast the union to one of its variants.
   183  type BetaManagedAgentsSessionThreadAgentUnion struct {
   184  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   185  	ID string `json:"id"`
   186  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   187  	Description string `json:"description"`
   188  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   189  	MCPServers []BetaManagedAgentsMCPServerURLDefinition `json:"mcp_servers"`
   190  	// This field is a union of [BetaManagedAgentsModelConfig], [string]
   191  	Model BetaManagedAgentsSessionThreadAgentUnionModel `json:"model"`
   192  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   193  	Name string `json:"name"`
   194  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   195  	Skills []BetaManagedAgentsSessionThreadAgentSkillUnion `json:"skills"`
   196  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   197  	System string `json:"system"`
   198  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   199  	Tools []BetaManagedAgentsSessionThreadAgentToolUnion `json:"tools"`
   200  	// Any of "agent", "advisor".
   201  	Type string `json:"type"`
   202  	// This field is from variant [BetaManagedAgentsSessionThreadAgent].
   203  	Version int64 `json:"version"`
   204  	JSON    struct {
   205  		ID          respjson.Field
   206  		Description respjson.Field
   207  		MCPServers  respjson.Field
   208  		Model       respjson.Field
   209  		Name        respjson.Field
   210  		Skills      respjson.Field
   211  		System      respjson.Field
   212  		Tools       respjson.Field
   213  		Type        respjson.Field
   214  		Version     respjson.Field
   215  		raw         string
   216  	} `json:"-"`
   217  }
   218  
   219  // anyBetaManagedAgentsSessionThreadAgent is implemented by each variant of
   220  // [BetaManagedAgentsSessionThreadAgentUnion] to add type safety for the return
   221  // type of [BetaManagedAgentsSessionThreadAgentUnion.AsAny]
   222  type anyBetaManagedAgentsSessionThreadAgent interface {
   223  	implBetaManagedAgentsSessionThreadAgentUnion()
   224  }
   225  
   226  func (BetaManagedAgentsSessionThreadAgent) implBetaManagedAgentsSessionThreadAgentUnion() {}
   227  func (BetaManagedAgentsAdvisor) implBetaManagedAgentsSessionThreadAgentUnion()            {}
   228  
   229  // Use the following switch statement to find the correct variant
   230  //
   231  //	switch variant := BetaManagedAgentsSessionThreadAgentUnion.AsAny().(type) {
   232  //	case anthropic.BetaManagedAgentsSessionThreadAgent:
   233  //	case anthropic.BetaManagedAgentsAdvisor:
   234  //	default:
   235  //	  fmt.Errorf("no variant present")
   236  //	}
   237  func (u BetaManagedAgentsSessionThreadAgentUnion) AsAny() anyBetaManagedAgentsSessionThreadAgent {
   238  	switch u.Type {
   239  	case "agent":
   240  		return u.AsAgent()
   241  	case "advisor":
   242  		return u.AsAdvisor()
   243  	}
   244  	return nil
   245  }
   246  
   247  func (u BetaManagedAgentsSessionThreadAgentUnion) AsAgent() (v BetaManagedAgentsSessionThreadAgent) {
   248  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   249  	return
   250  }
   251  
   252  func (u BetaManagedAgentsSessionThreadAgentUnion) AsAdvisor() (v BetaManagedAgentsAdvisor) {
   253  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   254  	return
   255  }
   256  
   257  // Returns the unmodified JSON received from the API
   258  func (u BetaManagedAgentsSessionThreadAgentUnion) RawJSON() string { return u.JSON.raw }
   259  
   260  func (r *BetaManagedAgentsSessionThreadAgentUnion) UnmarshalJSON(data []byte) error {
   261  	return apijson.UnmarshalRoot(data, r)
   262  }
   263  
   264  // BetaManagedAgentsSessionThreadAgentUnionModel is an implicit subunion of
   265  // [BetaManagedAgentsSessionThreadAgentUnion].
   266  // BetaManagedAgentsSessionThreadAgentUnionModel provides convenient access to the
   267  // sub-properties of the union.
   268  //
   269  // For type safety it is recommended to directly use a variant of the
   270  // [BetaManagedAgentsSessionThreadAgentUnion].
   271  //
   272  // If the underlying value is not a json object, one of the following properties
   273  // will be valid: OfString]
   274  type BetaManagedAgentsSessionThreadAgentUnionModel struct {
   275  	// This field will be present if the value is a [string] instead of an object.
   276  	OfString string `json:",inline"`
   277  	// This field is from variant [BetaManagedAgentsModelConfig].
   278  	ID BetaManagedAgentsModel `json:"id"`
   279  	// This field is from variant [BetaManagedAgentsModelConfig].
   280  	Effort BetaManagedAgentsModelConfigEffortUnion `json:"effort"`
   281  	// This field is from variant [BetaManagedAgentsModelConfig].
   282  	InferenceGeo string `json:"inference_geo"`
   283  	// This field is from variant [BetaManagedAgentsModelConfig].
   284  	Speed BetaManagedAgentsModelConfigSpeed `json:"speed"`
   285  	JSON  struct {
   286  		OfString     respjson.Field
   287  		ID           respjson.Field
   288  		Effort       respjson.Field
   289  		InferenceGeo respjson.Field
   290  		Speed        respjson.Field
   291  		raw          string
   292  	} `json:"-"`
   293  }
   294  
   295  func (r *BetaManagedAgentsSessionThreadAgentUnionModel) UnmarshalJSON(data []byte) error {
   296  	return apijson.UnmarshalRoot(data, r)
   297  }
   298  
   299  type BetaManagedAgentsSessionThreadType string
   300  
   301  const (
   302  	BetaManagedAgentsSessionThreadTypeSessionThread BetaManagedAgentsSessionThreadType = "session_thread"
   303  )
   304  
   305  // Timing statistics for a session thread.
   306  type BetaManagedAgentsSessionThreadStats struct {
   307  	// Cumulative time in seconds the thread spent actively running. Excludes idle
   308  	// time.
   309  	ActiveSeconds float64 `json:"active_seconds"`
   310  	// Elapsed time since thread creation in seconds. For archived threads, frozen at
   311  	// the final update.
   312  	DurationSeconds float64 `json:"duration_seconds"`
   313  	// Time in seconds for the thread to begin running. Zero for child threads, which
   314  	// start immediately.
   315  	StartupSeconds float64 `json:"startup_seconds"`
   316  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   317  	JSON struct {
   318  		ActiveSeconds   respjson.Field
   319  		DurationSeconds respjson.Field
   320  		StartupSeconds  respjson.Field
   321  		ExtraFields     map[string]respjson.Field
   322  		raw             string
   323  	} `json:"-"`
   324  }
   325  
   326  // Returns the unmodified JSON received from the API
   327  func (r BetaManagedAgentsSessionThreadStats) RawJSON() string { return r.JSON.raw }
   328  func (r *BetaManagedAgentsSessionThreadStats) UnmarshalJSON(data []byte) error {
   329  	return apijson.UnmarshalRoot(data, r)
   330  }
   331  
   332  // SessionThreadStatus enum
   333  type BetaManagedAgentsSessionThreadStatus string
   334  
   335  const (
   336  	BetaManagedAgentsSessionThreadStatusRunning      BetaManagedAgentsSessionThreadStatus = "running"
   337  	BetaManagedAgentsSessionThreadStatusIdle         BetaManagedAgentsSessionThreadStatus = "idle"
   338  	BetaManagedAgentsSessionThreadStatusRescheduling BetaManagedAgentsSessionThreadStatus = "rescheduling"
   339  	BetaManagedAgentsSessionThreadStatusTerminated   BetaManagedAgentsSessionThreadStatus = "terminated"
   340  )
   341  
   342  // Cumulative token usage for a session thread across all turns.
   343  type BetaManagedAgentsSessionThreadUsage struct {
   344  	// Cumulative time in seconds this thread spent in running status. Equal to
   345  	// `stats.active_seconds`; surfaced here so a thread's usage carries every quantity
   346  	// its cost is priced on.
   347  	ActiveSeconds float64 `json:"active_seconds"`
   348  	// Prompt-cache creation token usage broken down by cache lifetime.
   349  	CacheCreation BetaManagedAgentsCacheCreationUsage `json:"cache_creation"`
   350  	// Total tokens read from prompt cache.
   351  	CacheReadInputTokens int64 `json:"cache_read_input_tokens"`
   352  	// Total input tokens consumed across all turns.
   353  	InputTokens int64 `json:"input_tokens"`
   354  	// A monetary amount in a specific currency.
   355  	ListCost BetaMonetaryAmount `json:"list_cost" api:"nullable"`
   356  	// Total output tokens generated across all turns.
   357  	OutputTokens int64 `json:"output_tokens"`
   358  	// Cumulative count of server-executed tool invocations, broken down by tool.
   359  	ServerToolUse BetaManagedAgentsServerToolUsage `json:"server_tool_use" api:"nullable"`
   360  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   361  	JSON struct {
   362  		ActiveSeconds        respjson.Field
   363  		CacheCreation        respjson.Field
   364  		CacheReadInputTokens respjson.Field
   365  		InputTokens          respjson.Field
   366  		ListCost             respjson.Field
   367  		OutputTokens         respjson.Field
   368  		ServerToolUse        respjson.Field
   369  		ExtraFields          map[string]respjson.Field
   370  		raw                  string
   371  	} `json:"-"`
   372  }
   373  
   374  // Returns the unmodified JSON received from the API
   375  func (r BetaManagedAgentsSessionThreadUsage) RawJSON() string { return r.JSON.raw }
   376  func (r *BetaManagedAgentsSessionThreadUsage) UnmarshalJSON(data []byte) error {
   377  	return apijson.UnmarshalRoot(data, r)
   378  }
   379  
   380  // BetaManagedAgentsStreamSessionThreadEventsUnion contains all possible properties
   381  // and values from [BetaManagedAgentsUserMessageEvent],
   382  // [BetaManagedAgentsUserInterruptEvent],
   383  // [BetaManagedAgentsUserToolConfirmationEvent],
   384  // [BetaManagedAgentsUserCustomToolResultEvent],
   385  // [BetaManagedAgentsAgentCustomToolUseEvent],
   386  // [BetaManagedAgentsAgentMessageEvent], [BetaManagedAgentsAgentThinkingEvent],
   387  // [BetaManagedAgentsAgentMCPToolUseEvent],
   388  // [BetaManagedAgentsAgentMCPToolResultEvent],
   389  // [BetaManagedAgentsAgentToolUseEvent], [BetaManagedAgentsAgentToolResultEvent],
   390  // [BetaManagedAgentsAgentThreadMessageReceivedEvent],
   391  // [BetaManagedAgentsAgentThreadMessageSentEvent],
   392  // [BetaManagedAgentsAgentThreadContextCompactedEvent],
   393  // [BetaManagedAgentsSessionErrorEvent],
   394  // [BetaManagedAgentsSessionStatusRescheduledEvent],
   395  // [BetaManagedAgentsSessionStatusRunningEvent],
   396  // [BetaManagedAgentsSessionStatusIdleEvent],
   397  // [BetaManagedAgentsSessionStatusTerminatedEvent],
   398  // [BetaManagedAgentsSessionThreadCreatedEvent],
   399  // [BetaManagedAgentsSpanOutcomeEvaluationStartEvent],
   400  // [BetaManagedAgentsSpanOutcomeEvaluationEndEvent],
   401  // [BetaManagedAgentsSpanModelRequestStartEvent],
   402  // [BetaManagedAgentsSpanModelRequestEndEvent],
   403  // [BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent],
   404  // [BetaManagedAgentsUserDefineOutcomeEvent],
   405  // [BetaManagedAgentsSessionDeletedEvent],
   406  // [BetaManagedAgentsSessionThreadStatusRunningEvent],
   407  // [BetaManagedAgentsSessionThreadStatusIdleEvent],
   408  // [BetaManagedAgentsSessionThreadStatusTerminatedEvent],
   409  // [BetaManagedAgentsUserToolResultEvent],
   410  // [BetaManagedAgentsSessionThreadStatusRescheduledEvent],
   411  // [BetaManagedAgentsSessionUpdatedEvent], [BetaManagedAgentsStartEvent],
   412  // [BetaManagedAgentsDeltaEvent], [BetaManagedAgentsSystemMessageEvent],
   413  // [BetaManagedAgentsSessionUsageEvent].
   414  //
   415  // Use the [BetaManagedAgentsStreamSessionThreadEventsUnion.AsAny] method to switch
   416  // on the variant.
   417  //
   418  // Use the methods beginning with 'As' to cast the union to one of its variants.
   419  type BetaManagedAgentsStreamSessionThreadEventsUnion struct {
   420  	ID string `json:"id"`
   421  	// This field is a union of [[]BetaManagedAgentsUserMessageEventContentUnion],
   422  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion],
   423  	// [[]BetaManagedAgentsAgentMessageEventContentUnion],
   424  	// [[]BetaManagedAgentsAgentMCPToolResultEventContentUnion],
   425  	// [[]BetaManagedAgentsAgentToolResultEventContentUnion],
   426  	// [[]BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion],
   427  	// [[]BetaManagedAgentsAgentThreadMessageSentEventContentUnion],
   428  	// [[]BetaManagedAgentsUserToolResultEventContentUnion],
   429  	// [[]BetaManagedAgentsSystemContentBlock]
   430  	Content BetaManagedAgentsStreamSessionThreadEventsUnionContent `json:"content"`
   431  	// Any of "user.message", "user.interrupt", "user.tool_confirmation",
   432  	// "user.custom_tool_result", "agent.custom_tool_use", "agent.message",
   433  	// "agent.thinking", "agent.mcp_tool_use", "agent.mcp_tool_result",
   434  	// "agent.tool_use", "agent.tool_result", "agent.thread_message_received",
   435  	// "agent.thread_message_sent", "agent.thread_context_compacted", "session.error",
   436  	// "session.status_rescheduled", "session.status_running", "session.status_idle",
   437  	// "session.status_terminated", "session.thread_created",
   438  	// "span.outcome_evaluation_start", "span.outcome_evaluation_end",
   439  	// "span.model_request_start", "span.model_request_end",
   440  	// "span.outcome_evaluation_ongoing", "user.define_outcome", "session.deleted",
   441  	// "session.thread_status_running", "session.thread_status_idle",
   442  	// "session.thread_status_terminated", "user.tool_result",
   443  	// "session.thread_status_rescheduled", "session.updated", "event_start",
   444  	// "event_delta", "system.message", "session.usage".
   445  	Type            string    `json:"type"`
   446  	ProcessedAt     time.Time `json:"processed_at"`
   447  	SessionThreadID string    `json:"session_thread_id"`
   448  	Result          string    `json:"result"`
   449  	ToolUseID       string    `json:"tool_use_id"`
   450  	// This field is from variant [BetaManagedAgentsUserToolConfirmationEvent].
   451  	DenyMessage string `json:"deny_message"`
   452  	// This field is from variant [BetaManagedAgentsUserCustomToolResultEvent].
   453  	CustomToolUseID string `json:"custom_tool_use_id"`
   454  	IsError         bool   `json:"is_error"`
   455  	Input           any    `json:"input"`
   456  	Name            string `json:"name"`
   457  	// This field is from variant [BetaManagedAgentsAgentMCPToolUseEvent].
   458  	MCPServerName       string `json:"mcp_server_name"`
   459  	EvaluatedPermission string `json:"evaluated_permission"`
   460  	// This field is from variant [BetaManagedAgentsAgentMCPToolResultEvent].
   461  	MCPToolUseID string `json:"mcp_tool_use_id"`
   462  	// This field is from variant [BetaManagedAgentsAgentThreadMessageReceivedEvent].
   463  	FromSessionThreadID string `json:"from_session_thread_id"`
   464  	// This field is from variant [BetaManagedAgentsAgentThreadMessageReceivedEvent].
   465  	FromAgentName string `json:"from_agent_name"`
   466  	// This field is from variant [BetaManagedAgentsAgentThreadMessageSentEvent].
   467  	ToSessionThreadID string `json:"to_session_thread_id"`
   468  	// This field is from variant [BetaManagedAgentsAgentThreadMessageSentEvent].
   469  	ToAgentName string `json:"to_agent_name"`
   470  	// This field is from variant [BetaManagedAgentsSessionErrorEvent].
   471  	Error BetaManagedAgentsSessionErrorEventErrorUnion `json:"error"`
   472  	// This field is a union of
   473  	// [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion],
   474  	// [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion]
   475  	StopReason BetaManagedAgentsStreamSessionThreadEventsUnionStopReason `json:"stop_reason"`
   476  	AgentName  string                                                    `json:"agent_name"`
   477  	Iteration  int64                                                     `json:"iteration"`
   478  	OutcomeID  string                                                    `json:"outcome_id"`
   479  	// This field is from variant [BetaManagedAgentsSpanOutcomeEvaluationEndEvent].
   480  	Explanation string `json:"explanation"`
   481  	// This field is from variant [BetaManagedAgentsSpanOutcomeEvaluationEndEvent].
   482  	OutcomeEvaluationStartID string `json:"outcome_evaluation_start_id"`
   483  	// This field is a union of [BetaManagedAgentsSpanModelUsage],
   484  	// [BetaManagedAgentsSessionUsageSnapshot]
   485  	Usage BetaManagedAgentsStreamSessionThreadEventsUnionUsage `json:"usage"`
   486  	// This field is from variant [BetaManagedAgentsSpanModelRequestEndEvent].
   487  	ModelRequestStartID string `json:"model_request_start_id"`
   488  	// This field is from variant [BetaManagedAgentsSpanModelRequestEndEvent].
   489  	ModelUsage BetaManagedAgentsSpanModelUsage `json:"model_usage"`
   490  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
   491  	Description string `json:"description"`
   492  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
   493  	MaxIterations int64 `json:"max_iterations"`
   494  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
   495  	Rubric BetaManagedAgentsUserDefineOutcomeEventRubricUnion `json:"rubric"`
   496  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
   497  	Agent BetaManagedAgentsSessionAgent `json:"agent"`
   498  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
   499  	Budget BetaManagedAgentsBudgetLimit `json:"budget"`
   500  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
   501  	Metadata map[string]string `json:"metadata"`
   502  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
   503  	Title string `json:"title"`
   504  	// This field is from variant [BetaManagedAgentsStartEvent].
   505  	Event BetaManagedAgentsStartEventPreviewUnion `json:"event"`
   506  	// This field is from variant [BetaManagedAgentsDeltaEvent].
   507  	Delta BetaManagedAgentsDeltaContent `json:"delta"`
   508  	// This field is from variant [BetaManagedAgentsDeltaEvent].
   509  	EventID string `json:"event_id"`
   510  	JSON    struct {
   511  		ID                       respjson.Field
   512  		Content                  respjson.Field
   513  		Type                     respjson.Field
   514  		ProcessedAt              respjson.Field
   515  		SessionThreadID          respjson.Field
   516  		Result                   respjson.Field
   517  		ToolUseID                respjson.Field
   518  		DenyMessage              respjson.Field
   519  		CustomToolUseID          respjson.Field
   520  		IsError                  respjson.Field
   521  		Input                    respjson.Field
   522  		Name                     respjson.Field
   523  		MCPServerName            respjson.Field
   524  		EvaluatedPermission      respjson.Field
   525  		MCPToolUseID             respjson.Field
   526  		FromSessionThreadID      respjson.Field
   527  		FromAgentName            respjson.Field
   528  		ToSessionThreadID        respjson.Field
   529  		ToAgentName              respjson.Field
   530  		Error                    respjson.Field
   531  		StopReason               respjson.Field
   532  		AgentName                respjson.Field
   533  		Iteration                respjson.Field
   534  		OutcomeID                respjson.Field
   535  		Explanation              respjson.Field
   536  		OutcomeEvaluationStartID respjson.Field
   537  		Usage                    respjson.Field
   538  		ModelRequestStartID      respjson.Field
   539  		ModelUsage               respjson.Field
   540  		Description              respjson.Field
   541  		MaxIterations            respjson.Field
   542  		Rubric                   respjson.Field
   543  		Agent                    respjson.Field
   544  		Budget                   respjson.Field
   545  		Metadata                 respjson.Field
   546  		Title                    respjson.Field
   547  		Event                    respjson.Field
   548  		Delta                    respjson.Field
   549  		EventID                  respjson.Field
   550  		raw                      string
   551  	} `json:"-"`
   552  }
   553  
   554  // anyBetaManagedAgentsStreamSessionThreadEvents is implemented by each variant of
   555  // [BetaManagedAgentsStreamSessionThreadEventsUnion] to add type safety for the
   556  // return type of [BetaManagedAgentsStreamSessionThreadEventsUnion.AsAny]
   557  type anyBetaManagedAgentsStreamSessionThreadEvents interface {
   558  	implBetaManagedAgentsStreamSessionThreadEventsUnion()
   559  }
   560  
   561  func (BetaManagedAgentsUserMessageEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()   {}
   562  func (BetaManagedAgentsUserInterruptEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   563  func (BetaManagedAgentsUserToolConfirmationEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   564  }
   565  func (BetaManagedAgentsUserCustomToolResultEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   566  }
   567  func (BetaManagedAgentsAgentCustomToolUseEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   568  }
   569  func (BetaManagedAgentsAgentMessageEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()    {}
   570  func (BetaManagedAgentsAgentThinkingEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()   {}
   571  func (BetaManagedAgentsAgentMCPToolUseEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   572  func (BetaManagedAgentsAgentMCPToolResultEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   573  }
   574  func (BetaManagedAgentsAgentToolUseEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()    {}
   575  func (BetaManagedAgentsAgentToolResultEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   576  func (BetaManagedAgentsAgentThreadMessageReceivedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   577  }
   578  func (BetaManagedAgentsAgentThreadMessageSentEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   579  }
   580  func (BetaManagedAgentsAgentThreadContextCompactedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   581  }
   582  func (BetaManagedAgentsSessionErrorEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   583  func (BetaManagedAgentsSessionStatusRescheduledEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   584  }
   585  func (BetaManagedAgentsSessionStatusRunningEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   586  }
   587  func (BetaManagedAgentsSessionStatusIdleEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   588  }
   589  func (BetaManagedAgentsSessionStatusTerminatedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   590  }
   591  func (BetaManagedAgentsSessionThreadCreatedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   592  }
   593  func (BetaManagedAgentsSpanOutcomeEvaluationStartEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   594  }
   595  func (BetaManagedAgentsSpanOutcomeEvaluationEndEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   596  }
   597  func (BetaManagedAgentsSpanModelRequestStartEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   598  }
   599  func (BetaManagedAgentsSpanModelRequestEndEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   600  }
   601  func (BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   602  }
   603  func (BetaManagedAgentsUserDefineOutcomeEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   604  }
   605  func (BetaManagedAgentsSessionDeletedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   606  func (BetaManagedAgentsSessionThreadStatusRunningEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   607  }
   608  func (BetaManagedAgentsSessionThreadStatusIdleEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   609  }
   610  func (BetaManagedAgentsSessionThreadStatusTerminatedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   611  }
   612  func (BetaManagedAgentsUserToolResultEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   613  func (BetaManagedAgentsSessionThreadStatusRescheduledEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {
   614  }
   615  func (BetaManagedAgentsSessionUpdatedEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion() {}
   616  func (BetaManagedAgentsStartEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()          {}
   617  func (BetaManagedAgentsDeltaEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()          {}
   618  func (BetaManagedAgentsSystemMessageEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()  {}
   619  func (BetaManagedAgentsSessionUsageEvent) implBetaManagedAgentsStreamSessionThreadEventsUnion()   {}
   620  
   621  // Use the following switch statement to find the correct variant
   622  //
   623  //	switch variant := BetaManagedAgentsStreamSessionThreadEventsUnion.AsAny().(type) {
   624  //	case anthropic.BetaManagedAgentsUserMessageEvent:
   625  //	case anthropic.BetaManagedAgentsUserInterruptEvent:
   626  //	case anthropic.BetaManagedAgentsUserToolConfirmationEvent:
   627  //	case anthropic.BetaManagedAgentsUserCustomToolResultEvent:
   628  //	case anthropic.BetaManagedAgentsAgentCustomToolUseEvent:
   629  //	case anthropic.BetaManagedAgentsAgentMessageEvent:
   630  //	case anthropic.BetaManagedAgentsAgentThinkingEvent:
   631  //	case anthropic.BetaManagedAgentsAgentMCPToolUseEvent:
   632  //	case anthropic.BetaManagedAgentsAgentMCPToolResultEvent:
   633  //	case anthropic.BetaManagedAgentsAgentToolUseEvent:
   634  //	case anthropic.BetaManagedAgentsAgentToolResultEvent:
   635  //	case anthropic.BetaManagedAgentsAgentThreadMessageReceivedEvent:
   636  //	case anthropic.BetaManagedAgentsAgentThreadMessageSentEvent:
   637  //	case anthropic.BetaManagedAgentsAgentThreadContextCompactedEvent:
   638  //	case anthropic.BetaManagedAgentsSessionErrorEvent:
   639  //	case anthropic.BetaManagedAgentsSessionStatusRescheduledEvent:
   640  //	case anthropic.BetaManagedAgentsSessionStatusRunningEvent:
   641  //	case anthropic.BetaManagedAgentsSessionStatusIdleEvent:
   642  //	case anthropic.BetaManagedAgentsSessionStatusTerminatedEvent:
   643  //	case anthropic.BetaManagedAgentsSessionThreadCreatedEvent:
   644  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationStartEvent:
   645  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationEndEvent:
   646  //	case anthropic.BetaManagedAgentsSpanModelRequestStartEvent:
   647  //	case anthropic.BetaManagedAgentsSpanModelRequestEndEvent:
   648  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent:
   649  //	case anthropic.BetaManagedAgentsUserDefineOutcomeEvent:
   650  //	case anthropic.BetaManagedAgentsSessionDeletedEvent:
   651  //	case anthropic.BetaManagedAgentsSessionThreadStatusRunningEvent:
   652  //	case anthropic.BetaManagedAgentsSessionThreadStatusIdleEvent:
   653  //	case anthropic.BetaManagedAgentsSessionThreadStatusTerminatedEvent:
   654  //	case anthropic.BetaManagedAgentsUserToolResultEvent:
   655  //	case anthropic.BetaManagedAgentsSessionThreadStatusRescheduledEvent:
   656  //	case anthropic.BetaManagedAgentsSessionUpdatedEvent:
   657  //	case anthropic.BetaManagedAgentsStartEvent:
   658  //	case anthropic.BetaManagedAgentsDeltaEvent:
   659  //	case anthropic.BetaManagedAgentsSystemMessageEvent:
   660  //	case anthropic.BetaManagedAgentsSessionUsageEvent:
   661  //	default:
   662  //	  fmt.Errorf("no variant present")
   663  //	}
   664  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAny() anyBetaManagedAgentsStreamSessionThreadEvents {
   665  	switch u.Type {
   666  	case "user.message":
   667  		return u.AsUserMessage()
   668  	case "user.interrupt":
   669  		return u.AsUserInterrupt()
   670  	case "user.tool_confirmation":
   671  		return u.AsUserToolConfirmation()
   672  	case "user.custom_tool_result":
   673  		return u.AsUserCustomToolResult()
   674  	case "agent.custom_tool_use":
   675  		return u.AsAgentCustomToolUse()
   676  	case "agent.message":
   677  		return u.AsAgentMessage()
   678  	case "agent.thinking":
   679  		return u.AsAgentThinking()
   680  	case "agent.mcp_tool_use":
   681  		return u.AsAgentMCPToolUse()
   682  	case "agent.mcp_tool_result":
   683  		return u.AsAgentMCPToolResult()
   684  	case "agent.tool_use":
   685  		return u.AsAgentToolUse()
   686  	case "agent.tool_result":
   687  		return u.AsAgentToolResult()
   688  	case "agent.thread_message_received":
   689  		return u.AsAgentThreadMessageReceived()
   690  	case "agent.thread_message_sent":
   691  		return u.AsAgentThreadMessageSent()
   692  	case "agent.thread_context_compacted":
   693  		return u.AsAgentThreadContextCompacted()
   694  	case "session.error":
   695  		return u.AsSessionError()
   696  	case "session.status_rescheduled":
   697  		return u.AsSessionStatusRescheduled()
   698  	case "session.status_running":
   699  		return u.AsSessionStatusRunning()
   700  	case "session.status_idle":
   701  		return u.AsSessionStatusIdle()
   702  	case "session.status_terminated":
   703  		return u.AsSessionStatusTerminated()
   704  	case "session.thread_created":
   705  		return u.AsSessionThreadCreated()
   706  	case "span.outcome_evaluation_start":
   707  		return u.AsSpanOutcomeEvaluationStart()
   708  	case "span.outcome_evaluation_end":
   709  		return u.AsSpanOutcomeEvaluationEnd()
   710  	case "span.model_request_start":
   711  		return u.AsSpanModelRequestStart()
   712  	case "span.model_request_end":
   713  		return u.AsSpanModelRequestEnd()
   714  	case "span.outcome_evaluation_ongoing":
   715  		return u.AsSpanOutcomeEvaluationOngoing()
   716  	case "user.define_outcome":
   717  		return u.AsUserDefineOutcome()
   718  	case "session.deleted":
   719  		return u.AsSessionDeleted()
   720  	case "session.thread_status_running":
   721  		return u.AsSessionThreadStatusRunning()
   722  	case "session.thread_status_idle":
   723  		return u.AsSessionThreadStatusIdle()
   724  	case "session.thread_status_terminated":
   725  		return u.AsSessionThreadStatusTerminated()
   726  	case "user.tool_result":
   727  		return u.AsUserToolResult()
   728  	case "session.thread_status_rescheduled":
   729  		return u.AsSessionThreadStatusRescheduled()
   730  	case "session.updated":
   731  		return u.AsSessionUpdated()
   732  	case "event_start":
   733  		return u.AsEventStart()
   734  	case "event_delta":
   735  		return u.AsEventDelta()
   736  	case "system.message":
   737  		return u.AsSystemMessage()
   738  	case "session.usage":
   739  		return u.AsSessionUsage()
   740  	}
   741  	return nil
   742  }
   743  
   744  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsUserMessage() (v BetaManagedAgentsUserMessageEvent) {
   745  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   746  	return
   747  }
   748  
   749  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsUserInterrupt() (v BetaManagedAgentsUserInterruptEvent) {
   750  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   751  	return
   752  }
   753  
   754  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsUserToolConfirmation() (v BetaManagedAgentsUserToolConfirmationEvent) {
   755  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   756  	return
   757  }
   758  
   759  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsUserCustomToolResult() (v BetaManagedAgentsUserCustomToolResultEvent) {
   760  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   761  	return
   762  }
   763  
   764  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentCustomToolUse() (v BetaManagedAgentsAgentCustomToolUseEvent) {
   765  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   766  	return
   767  }
   768  
   769  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentMessage() (v BetaManagedAgentsAgentMessageEvent) {
   770  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   771  	return
   772  }
   773  
   774  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentThinking() (v BetaManagedAgentsAgentThinkingEvent) {
   775  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   776  	return
   777  }
   778  
   779  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentMCPToolUse() (v BetaManagedAgentsAgentMCPToolUseEvent) {
   780  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   781  	return
   782  }
   783  
   784  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentMCPToolResult() (v BetaManagedAgentsAgentMCPToolResultEvent) {
   785  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   786  	return
   787  }
   788  
   789  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentToolUse() (v BetaManagedAgentsAgentToolUseEvent) {
   790  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   791  	return
   792  }
   793  
   794  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentToolResult() (v BetaManagedAgentsAgentToolResultEvent) {
   795  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   796  	return
   797  }
   798  
   799  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentThreadMessageReceived() (v BetaManagedAgentsAgentThreadMessageReceivedEvent) {
   800  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   801  	return
   802  }
   803  
   804  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentThreadMessageSent() (v BetaManagedAgentsAgentThreadMessageSentEvent) {
   805  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   806  	return
   807  }
   808  
   809  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsAgentThreadContextCompacted() (v BetaManagedAgentsAgentThreadContextCompactedEvent) {
   810  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   811  	return
   812  }
   813  
   814  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionError() (v BetaManagedAgentsSessionErrorEvent) {
   815  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   816  	return
   817  }
   818  
   819  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionStatusRescheduled() (v BetaManagedAgentsSessionStatusRescheduledEvent) {
   820  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   821  	return
   822  }
   823  
   824  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionStatusRunning() (v BetaManagedAgentsSessionStatusRunningEvent) {
   825  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   826  	return
   827  }
   828  
   829  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionStatusIdle() (v BetaManagedAgentsSessionStatusIdleEvent) {
   830  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   831  	return
   832  }
   833  
   834  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionStatusTerminated() (v BetaManagedAgentsSessionStatusTerminatedEvent) {
   835  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   836  	return
   837  }
   838  
   839  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionThreadCreated() (v BetaManagedAgentsSessionThreadCreatedEvent) {
   840  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   841  	return
   842  }
   843  
   844  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSpanOutcomeEvaluationStart() (v BetaManagedAgentsSpanOutcomeEvaluationStartEvent) {
   845  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   846  	return
   847  }
   848  
   849  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSpanOutcomeEvaluationEnd() (v BetaManagedAgentsSpanOutcomeEvaluationEndEvent) {
   850  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   851  	return
   852  }
   853  
   854  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSpanModelRequestStart() (v BetaManagedAgentsSpanModelRequestStartEvent) {
   855  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   856  	return
   857  }
   858  
   859  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSpanModelRequestEnd() (v BetaManagedAgentsSpanModelRequestEndEvent) {
   860  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   861  	return
   862  }
   863  
   864  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSpanOutcomeEvaluationOngoing() (v BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) {
   865  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   866  	return
   867  }
   868  
   869  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsUserDefineOutcome() (v BetaManagedAgentsUserDefineOutcomeEvent) {
   870  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   871  	return
   872  }
   873  
   874  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionDeleted() (v BetaManagedAgentsSessionDeletedEvent) {
   875  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   876  	return
   877  }
   878  
   879  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionThreadStatusRunning() (v BetaManagedAgentsSessionThreadStatusRunningEvent) {
   880  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   881  	return
   882  }
   883  
   884  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionThreadStatusIdle() (v BetaManagedAgentsSessionThreadStatusIdleEvent) {
   885  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   886  	return
   887  }
   888  
   889  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionThreadStatusTerminated() (v BetaManagedAgentsSessionThreadStatusTerminatedEvent) {
   890  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   891  	return
   892  }
   893  
   894  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsUserToolResult() (v BetaManagedAgentsUserToolResultEvent) {
   895  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   896  	return
   897  }
   898  
   899  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionThreadStatusRescheduled() (v BetaManagedAgentsSessionThreadStatusRescheduledEvent) {
   900  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   901  	return
   902  }
   903  
   904  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionUpdated() (v BetaManagedAgentsSessionUpdatedEvent) {
   905  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   906  	return
   907  }
   908  
   909  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsEventStart() (v BetaManagedAgentsStartEvent) {
   910  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   911  	return
   912  }
   913  
   914  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsEventDelta() (v BetaManagedAgentsDeltaEvent) {
   915  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   916  	return
   917  }
   918  
   919  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSystemMessage() (v BetaManagedAgentsSystemMessageEvent) {
   920  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   921  	return
   922  }
   923  
   924  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) AsSessionUsage() (v BetaManagedAgentsSessionUsageEvent) {
   925  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   926  	return
   927  }
   928  
   929  // Returns the unmodified JSON received from the API
   930  func (u BetaManagedAgentsStreamSessionThreadEventsUnion) RawJSON() string { return u.JSON.raw }
   931  
   932  func (r *BetaManagedAgentsStreamSessionThreadEventsUnion) UnmarshalJSON(data []byte) error {
   933  	return apijson.UnmarshalRoot(data, r)
   934  }
   935  
   936  // BetaManagedAgentsStreamSessionThreadEventsUnionContent is an implicit subunion
   937  // of [BetaManagedAgentsStreamSessionThreadEventsUnion].
   938  // BetaManagedAgentsStreamSessionThreadEventsUnionContent provides convenient
   939  // access to the sub-properties of the union.
   940  //
   941  // For type safety it is recommended to directly use a variant of the
   942  // [BetaManagedAgentsStreamSessionThreadEventsUnion].
   943  //
   944  // If the underlying value is not a json object, one of the following properties
   945  // will be valid: OfBetaManagedAgentsUserMessageEventContentArray
   946  // OfBetaManagedAgentsUserCustomToolResultEventContentArray
   947  // OfBetaManagedAgentsAgentMessageEventContentArray
   948  // OfBetaManagedAgentsAgentMCPToolResultEventContentArray
   949  // OfBetaManagedAgentsAgentToolResultEventContentArray
   950  // OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray
   951  // OfBetaManagedAgentsAgentThreadMessageSentEventContentArray
   952  // OfBetaManagedAgentsUserToolResultEventContentArray
   953  // OfBetaManagedAgentsSystemContentBlockArray]
   954  type BetaManagedAgentsStreamSessionThreadEventsUnionContent struct {
   955  	// This field will be present if the value is a
   956  	// [[]BetaManagedAgentsUserMessageEventContentUnion] instead of an object.
   957  	OfBetaManagedAgentsUserMessageEventContentArray []BetaManagedAgentsUserMessageEventContentUnion `json:",inline"`
   958  	// This field will be present if the value is a
   959  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion] instead of an object.
   960  	OfBetaManagedAgentsUserCustomToolResultEventContentArray []BetaManagedAgentsUserCustomToolResultEventContentUnion `json:",inline"`
   961  	// This field will be present if the value is a
   962  	// [[]BetaManagedAgentsAgentMessageEventContentUnion] instead of an object.
   963  	OfBetaManagedAgentsAgentMessageEventContentArray []BetaManagedAgentsAgentMessageEventContentUnion `json:",inline"`
   964  	// This field will be present if the value is a
   965  	// [[]BetaManagedAgentsAgentMCPToolResultEventContentUnion] instead of an object.
   966  	OfBetaManagedAgentsAgentMCPToolResultEventContentArray []BetaManagedAgentsAgentMCPToolResultEventContentUnion `json:",inline"`
   967  	// This field will be present if the value is a
   968  	// [[]BetaManagedAgentsAgentToolResultEventContentUnion] instead of an object.
   969  	OfBetaManagedAgentsAgentToolResultEventContentArray []BetaManagedAgentsAgentToolResultEventContentUnion `json:",inline"`
   970  	// This field will be present if the value is a
   971  	// [[]BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion] instead of an
   972  	// object.
   973  	OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray []BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion `json:",inline"`
   974  	// This field will be present if the value is a
   975  	// [[]BetaManagedAgentsAgentThreadMessageSentEventContentUnion] instead of an
   976  	// object.
   977  	OfBetaManagedAgentsAgentThreadMessageSentEventContentArray []BetaManagedAgentsAgentThreadMessageSentEventContentUnion `json:",inline"`
   978  	// This field will be present if the value is a
   979  	// [[]BetaManagedAgentsUserToolResultEventContentUnion] instead of an object.
   980  	OfBetaManagedAgentsUserToolResultEventContentArray []BetaManagedAgentsUserToolResultEventContentUnion `json:",inline"`
   981  	// This field will be present if the value is a
   982  	// [[]BetaManagedAgentsSystemContentBlock] instead of an object.
   983  	OfBetaManagedAgentsSystemContentBlockArray []BetaManagedAgentsSystemContentBlock `json:",inline"`
   984  	JSON                                       struct {
   985  		OfBetaManagedAgentsUserMessageEventContentArray                respjson.Field
   986  		OfBetaManagedAgentsUserCustomToolResultEventContentArray       respjson.Field
   987  		OfBetaManagedAgentsAgentMessageEventContentArray               respjson.Field
   988  		OfBetaManagedAgentsAgentMCPToolResultEventContentArray         respjson.Field
   989  		OfBetaManagedAgentsAgentToolResultEventContentArray            respjson.Field
   990  		OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray respjson.Field
   991  		OfBetaManagedAgentsAgentThreadMessageSentEventContentArray     respjson.Field
   992  		OfBetaManagedAgentsUserToolResultEventContentArray             respjson.Field
   993  		OfBetaManagedAgentsSystemContentBlockArray                     respjson.Field
   994  		raw                                                            string
   995  	} `json:"-"`
   996  }
   997  
   998  func (r *BetaManagedAgentsStreamSessionThreadEventsUnionContent) UnmarshalJSON(data []byte) error {
   999  	return apijson.UnmarshalRoot(data, r)
  1000  }
  1001  
  1002  // BetaManagedAgentsStreamSessionThreadEventsUnionStopReason is an implicit
  1003  // subunion of [BetaManagedAgentsStreamSessionThreadEventsUnion].
  1004  // BetaManagedAgentsStreamSessionThreadEventsUnionStopReason provides convenient
  1005  // access to the sub-properties of the union.
  1006  //
  1007  // For type safety it is recommended to directly use a variant of the
  1008  // [BetaManagedAgentsStreamSessionThreadEventsUnion].
  1009  type BetaManagedAgentsStreamSessionThreadEventsUnionStopReason struct {
  1010  	Type string `json:"type"`
  1011  	// This field is from variant
  1012  	// [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion],
  1013  	// [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion].
  1014  	EventIDs []string `json:"event_ids"`
  1015  	JSON     struct {
  1016  		Type     respjson.Field
  1017  		EventIDs respjson.Field
  1018  		raw      string
  1019  	} `json:"-"`
  1020  }
  1021  
  1022  func (r *BetaManagedAgentsStreamSessionThreadEventsUnionStopReason) UnmarshalJSON(data []byte) error {
  1023  	return apijson.UnmarshalRoot(data, r)
  1024  }
  1025  
  1026  // BetaManagedAgentsStreamSessionThreadEventsUnionUsage is an implicit subunion of
  1027  // [BetaManagedAgentsStreamSessionThreadEventsUnion].
  1028  // BetaManagedAgentsStreamSessionThreadEventsUnionUsage provides convenient access
  1029  // to the sub-properties of the union.
  1030  //
  1031  // For type safety it is recommended to directly use a variant of the
  1032  // [BetaManagedAgentsStreamSessionThreadEventsUnion].
  1033  type BetaManagedAgentsStreamSessionThreadEventsUnionUsage struct {
  1034  	// This field is from variant [BetaManagedAgentsSpanModelUsage].
  1035  	CacheCreationInputTokens int64 `json:"cache_creation_input_tokens"`
  1036  	CacheReadInputTokens     int64 `json:"cache_read_input_tokens"`
  1037  	InputTokens              int64 `json:"input_tokens"`
  1038  	OutputTokens             int64 `json:"output_tokens"`
  1039  	// This field is from variant [BetaManagedAgentsSpanModelUsage].
  1040  	Speed BetaManagedAgentsSpanModelUsageSpeed `json:"speed"`
  1041  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  1042  	ActiveSeconds float64 `json:"active_seconds"`
  1043  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  1044  	CacheCreation BetaManagedAgentsCacheCreationUsage `json:"cache_creation"`
  1045  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  1046  	ListCost BetaMonetaryAmount `json:"list_cost"`
  1047  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  1048  	ServerToolUse BetaManagedAgentsServerToolUsage `json:"server_tool_use"`
  1049  	JSON          struct {
  1050  		CacheCreationInputTokens respjson.Field
  1051  		CacheReadInputTokens     respjson.Field
  1052  		InputTokens              respjson.Field
  1053  		OutputTokens             respjson.Field
  1054  		Speed                    respjson.Field
  1055  		ActiveSeconds            respjson.Field
  1056  		CacheCreation            respjson.Field
  1057  		ListCost                 respjson.Field
  1058  		ServerToolUse            respjson.Field
  1059  		raw                      string
  1060  	} `json:"-"`
  1061  }
  1062  
  1063  func (r *BetaManagedAgentsStreamSessionThreadEventsUnionUsage) UnmarshalJSON(data []byte) error {
  1064  	return apijson.UnmarshalRoot(data, r)
  1065  }
  1066  
  1067  type BetaSessionThreadGetParams struct {
  1068  	SessionID   string            `path:"session_id" api:"required" json:"-"`
  1069  	WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"`
  1070  	// Optional header to specify the beta version(s) you want to use.
  1071  	Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"`
  1072  	paramObj
  1073  }
  1074  
  1075  type BetaSessionThreadListParams struct {
  1076  	// Maximum results per page. Defaults to 1000.
  1077  	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
  1078  	// Opaque pagination cursor from a previous response's `next_page`. Forward-only.
  1079  	Page        param.Opt[string] `query:"page,omitzero" json:"-"`
  1080  	WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"`
  1081  	// Optional header to specify the beta version(s) you want to use.
  1082  	Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"`
  1083  	paramObj
  1084  }
  1085  
  1086  // URLQuery serializes [BetaSessionThreadListParams]'s query parameters as
  1087  // `url.Values`.
  1088  func (r BetaSessionThreadListParams) URLQuery() (v url.Values, err error) {
  1089  	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
  1090  		ArrayFormat:  apiquery.ArrayQueryFormatBrackets,
  1091  		NestedFormat: apiquery.NestedQueryFormatBrackets,
  1092  	})
  1093  }
  1094  
  1095  type BetaSessionThreadArchiveParams struct {
  1096  	SessionID   string            `path:"session_id" api:"required" json:"-"`
  1097  	WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"`
  1098  	// Optional header to specify the beta version(s) you want to use.
  1099  	Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"`
  1100  	paramObj
  1101  }