@autohq/cli 0.1.300 → 0.1.302

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.
package/dist/index.js CHANGED
@@ -18884,223 +18884,572 @@ var init_session_diagnostics = __esm({
18884
18884
  }
18885
18885
  });
18886
18886
 
18887
- // ../../packages/schemas/src/sessions.ts
18888
- function isSessionTerminalStatus(status) {
18889
- return SESSION_TERMINAL_STATUSES.some(
18890
- (terminalStatus) => terminalStatus === status
18891
- );
18892
- }
18893
- var SESSION_STATUSES, SESSION_RUNTIME_PHASES, SESSION_TERMINAL_STATUSES, SESSION_DISPLAY_TITLE_MAX_LENGTH, SESSION_MESSAGE_ROLES, SESSION_MESSAGE_STATUSES, SessionStatusSchema, SessionRuntimePhaseSchema, SessionMessageRoleSchema, SessionMessageStatusSchema, RunDisplayTitleSchema, AmbientStatusSchema, SESSION_CHECK_STATUSES, SESSION_CHECK_CONCLUSIONS, SESSION_CHECK_TIMEOUT_PHASES, SessionCheckStatusSchema, SessionCheckConclusionSchema, SessionCheckTimeoutPhaseSchema, ManualSessionRequestSchema, SessionArchiveRequestSchema, SessionsArchiveRequestSchema, SessionRecordSchema, SessionUiMessageRecordSchema, SessionListItemAgentSchema, SessionListItemSchema, SessionListResponseSchema, SessionsArchiveResponseSchema;
18894
- var init_sessions = __esm({
18895
- "../../packages/schemas/src/sessions.ts"() {
18887
+ // ../../packages/schemas/src/singleton-refresh.ts
18888
+ var SINGLETON_RESPAWN_REASONS, SingletonRespawnReasonSchema, SingletonRespawnSchema, SingletonRefreshEventPayloadSchema;
18889
+ var init_singleton_refresh = __esm({
18890
+ "../../packages/schemas/src/singleton-refresh.ts"() {
18891
+ "use strict";
18892
+ init_zod();
18893
+ SINGLETON_RESPAWN_REASONS = ["refresh", "failure"];
18894
+ SingletonRespawnReasonSchema = external_exports.enum(SINGLETON_RESPAWN_REASONS);
18895
+ SingletonRespawnSchema = external_exports.object({
18896
+ reason: SingletonRespawnReasonSchema.default("refresh")
18897
+ }).strict();
18898
+ SingletonRefreshEventPayloadSchema = external_exports.object({
18899
+ trigger: external_exports.literal("agent.refresh"),
18900
+ refresh: external_exports.object({
18901
+ reason: SingletonRespawnReasonSchema,
18902
+ agentResourceId: external_exports.string().trim().min(1),
18903
+ previousSessionId: external_exports.string().trim().min(1)
18904
+ })
18905
+ });
18906
+ }
18907
+ });
18908
+
18909
+ // ../../packages/schemas/src/session-commands.ts
18910
+ var SESSION_COMMAND_KINDS, SESSION_DISPATCH_COMMAND_KINDS, SESSION_PERSISTED_COMMAND_KINDS, SESSION_LIFECYCLE_COMMAND_KINDS, SESSION_COMMAND_STATUSES, SESSION_DISPATCH_COMMAND_STATUSES, SessionCommandKindSchema, SessionPersistedCommandKindSchema, SessionDispatchCommandKindSchema, RunLifecycleCommandKindSchema, SessionCommandStatusSchema, SessionDispatchCommandStatusSchema, SessionCommandSenderSchema, MESSAGE_DELIVERY_MODES, MessageDeliveryModeSchema, TRIGGER_INJECTION_MODALITIES, TriggerInjectionModalitySchema, RunMessageCommandPayloadSchema, RunAnswerCommandPayloadSchema, RunLifecycleCommandPayloadSchema, RunStopCommandPayloadSchema, SessionCommandPayloadSchema, CreateRunMessageCommandRequestSchema, CreateRunAnswerCommandRequestSchema, CreateRunLifecycleCommandRequestSchema, CreateRunStopCommandRequestSchema, CreateSessionCommandRequestSchema, RunResolutionPolicySchema, AgentAddressedCommandTargetSchema, SessionCommandRecordBaseSchema, RunStartCommandPayloadSchema, RunStartWithMessageCommandPayloadSchema, SessionPersistedCommandPayloadSchema, SessionCommandRecordSchema, SessionDispatchMessageCommandPayloadSchema, SessionDispatchAnswerCommandPayloadSchema, SessionDispatchStopCommandPayloadSchema, SessionDispatchCommandPayloadSchema, SessionDispatchCommandRecordBaseSchema, SessionDispatchCommandRecordSchema;
18911
+ var init_session_commands = __esm({
18912
+ "../../packages/schemas/src/session-commands.ts"() {
18896
18913
  "use strict";
18897
18914
  init_zod();
18898
- init_agents();
18899
18915
  init_auth();
18900
- init_environments();
18901
18916
  init_ids();
18902
18917
  init_primitives();
18903
- init_tools();
18904
- SESSION_STATUSES = [
18905
- "queued",
18906
- "running",
18907
- "awaiting",
18908
- "failed",
18909
- "stopped"
18918
+ init_singleton_refresh();
18919
+ SESSION_COMMAND_KINDS = [
18920
+ "message",
18921
+ "answer",
18922
+ "pause",
18923
+ "resume",
18924
+ "interrupt",
18925
+ "cancel",
18926
+ "stop"
18910
18927
  ];
18911
- SESSION_RUNTIME_PHASES = [
18912
- "building_image",
18913
- "booting_container",
18914
- "preparing_environment",
18915
- "starting_runtime",
18916
- "running"
18928
+ SESSION_DISPATCH_COMMAND_KINDS = [
18929
+ "start",
18930
+ "startWithMessage",
18931
+ "message",
18932
+ "answer",
18933
+ "stop"
18917
18934
  ];
18918
- SESSION_TERMINAL_STATUSES = ["failed", "stopped"];
18919
- SESSION_DISPLAY_TITLE_MAX_LENGTH = 64;
18920
- SESSION_MESSAGE_ROLES = ["system", "user", "assistant"];
18921
- SESSION_MESSAGE_STATUSES = [
18922
- "in_progress",
18923
- "completed",
18935
+ SESSION_PERSISTED_COMMAND_KINDS = [
18936
+ "message",
18937
+ "pause",
18938
+ "resume",
18939
+ "interrupt",
18940
+ "cancel",
18941
+ "stop",
18942
+ "start",
18943
+ "startWithMessage",
18944
+ "answer"
18945
+ ];
18946
+ SESSION_LIFECYCLE_COMMAND_KINDS = [
18947
+ "pause",
18948
+ "resume",
18949
+ "interrupt",
18950
+ "cancel",
18951
+ "stop"
18952
+ ];
18953
+ SESSION_COMMAND_STATUSES = [
18954
+ "pending",
18955
+ "dispatching",
18956
+ "accepted",
18924
18957
  "failed"
18925
18958
  ];
18926
- SessionStatusSchema = external_exports.enum(SESSION_STATUSES);
18927
- SessionRuntimePhaseSchema = external_exports.enum(SESSION_RUNTIME_PHASES);
18928
- SessionMessageRoleSchema = external_exports.enum(SESSION_MESSAGE_ROLES);
18929
- SessionMessageStatusSchema = external_exports.enum(SESSION_MESSAGE_STATUSES);
18930
- RunDisplayTitleSchema = external_exports.string().trim().max(SESSION_DISPLAY_TITLE_MAX_LENGTH);
18931
- AmbientStatusSchema = external_exports.string().trim().min(1);
18932
- SESSION_CHECK_STATUSES = [
18933
- "queued",
18934
- "in_progress",
18935
- "completed"
18959
+ SESSION_DISPATCH_COMMAND_STATUSES = [
18960
+ "pending",
18961
+ "dispatching",
18962
+ "accepted",
18963
+ "failed"
18936
18964
  ];
18937
- SESSION_CHECK_CONCLUSIONS = ["success", "failure"];
18938
- SESSION_CHECK_TIMEOUT_PHASES = ["begin", "complete"];
18939
- SessionCheckStatusSchema = external_exports.enum(SESSION_CHECK_STATUSES);
18940
- SessionCheckConclusionSchema = external_exports.enum(SESSION_CHECK_CONCLUSIONS);
18941
- SessionCheckTimeoutPhaseSchema = external_exports.enum(
18942
- SESSION_CHECK_TIMEOUT_PHASES
18965
+ SessionCommandKindSchema = external_exports.enum(SESSION_COMMAND_KINDS);
18966
+ SessionPersistedCommandKindSchema = external_exports.enum(
18967
+ SESSION_PERSISTED_COMMAND_KINDS
18943
18968
  );
18944
- ManualSessionRequestSchema = external_exports.object({
18945
- message: external_exports.string().trim().min(1).max(2e4).optional(),
18946
- interactive: external_exports.boolean().optional(),
18947
- /**
18948
- * Deliver the agent's configured `initialPrompt` as the session's kickoff
18949
- * message so the agent opens the conversation. Agents without an
18950
- * `initialPrompt` fall back to the default manual say-hello message, so a
18951
- * kickoff always pings the agent. The kickoff is delivered through the
18952
- * session's one idempotent start command and never renders as a user chat
18953
- * bubble; the agent's greeting is the first visible content.
18954
- */
18955
- kickoff: external_exports.boolean().optional()
18956
- });
18957
- SessionArchiveRequestSchema = external_exports.object({
18958
- archived: external_exports.boolean()
18969
+ SessionDispatchCommandKindSchema = external_exports.enum(
18970
+ SESSION_DISPATCH_COMMAND_KINDS
18971
+ );
18972
+ RunLifecycleCommandKindSchema = external_exports.enum(
18973
+ SESSION_LIFECYCLE_COMMAND_KINDS
18974
+ );
18975
+ SessionCommandStatusSchema = external_exports.enum(SESSION_COMMAND_STATUSES);
18976
+ SessionDispatchCommandStatusSchema = external_exports.enum(
18977
+ SESSION_DISPATCH_COMMAND_STATUSES
18978
+ );
18979
+ SessionCommandSenderSchema = external_exports.discriminatedUnion("type", [
18980
+ external_exports.object({
18981
+ type: external_exports.literal("operator"),
18982
+ id: external_exports.string().trim().min(1).nullable().default(null),
18983
+ actor: AuthActorSchema.nullable().optional()
18984
+ }),
18985
+ external_exports.object({
18986
+ type: external_exports.literal("agent"),
18987
+ sessionId: SessionIdSchema
18988
+ }),
18989
+ external_exports.object({
18990
+ type: external_exports.literal("system")
18991
+ })
18992
+ ]);
18993
+ MESSAGE_DELIVERY_MODES = ["interrupt", "deferred"];
18994
+ MessageDeliveryModeSchema = external_exports.enum(MESSAGE_DELIVERY_MODES);
18995
+ TRIGGER_INJECTION_MODALITIES = [
18996
+ "chat",
18997
+ "githubCheck",
18998
+ "githubCheckAction",
18999
+ "githubPullRequest",
19000
+ "other"
19001
+ ];
19002
+ TriggerInjectionModalitySchema = external_exports.enum(
19003
+ TRIGGER_INJECTION_MODALITIES
19004
+ );
19005
+ RunMessageCommandPayloadSchema = external_exports.object({
19006
+ message: external_exports.string().trim().min(1),
19007
+ // Optional so existing payloads and direct operator/agent messages stay
19008
+ // valid without it; trigger routing sets "deferred" for GitHub check
19009
+ // events. An absent mode is treated as "interrupt" at the delivery
19010
+ // boundary (commandDeliveryPayload / the runtime handler), so the default
19011
+ // lives where the value is consumed rather than as a required field every
19012
+ // call site must construct.
19013
+ deliveryMode: MessageDeliveryModeSchema.optional(),
19014
+ metadata: JsonValueSchema.optional()
19015
+ }).strict();
19016
+ RunAnswerCommandPayloadSchema = external_exports.object({
19017
+ toolCallId: external_exports.string().trim().min(1),
19018
+ answers: external_exports.record(external_exports.string(), external_exports.string()),
19019
+ response: external_exports.string().trim().min(1).optional()
19020
+ }).strict().refine((value) => Object.keys(value.answers).length > 0 || value.response, {
19021
+ message: "Provide at least one answer or a freeform response"
18959
19022
  });
18960
- SessionsArchiveRequestSchema = external_exports.object({
18961
- session_ids: external_exports.array(SessionIdSchema).min(1).max(100),
18962
- archived: external_exports.boolean()
19023
+ RunLifecycleCommandPayloadSchema = external_exports.object({
19024
+ reason: external_exports.string().trim().min(1).optional()
19025
+ }).strict();
19026
+ RunStopCommandPayloadSchema = external_exports.object({
19027
+ reason: external_exports.string().trim().min(1).optional(),
19028
+ respawn: SingletonRespawnSchema.optional()
19029
+ }).strict();
19030
+ SessionCommandPayloadSchema = external_exports.union([
19031
+ RunMessageCommandPayloadSchema,
19032
+ RunAnswerCommandPayloadSchema,
19033
+ RunLifecycleCommandPayloadSchema,
19034
+ RunStopCommandPayloadSchema
19035
+ ]);
19036
+ CreateRunMessageCommandRequestSchema = external_exports.object({
19037
+ message: external_exports.string().trim().min(1),
19038
+ metadata: JsonValueSchema.optional()
18963
19039
  });
18964
- SessionRecordSchema = external_exports.object({
18965
- id: SessionIdSchema,
18966
- organizationId: external_exports.string().trim().min(1),
18967
- projectId: external_exports.string().trim().min(1).nullable(),
18968
- agentId: AgentIdSchema,
18969
- runtimeId: RuntimeIdSchema.nullable(),
18970
- status: SessionStatusSchema,
18971
- runtimePhase: SessionRuntimePhaseSchema.nullable(),
18972
- idempotencyKey: external_exports.string().min(1).nullable(),
18973
- correlationKey: external_exports.string().nullable(),
18974
- workflowId: external_exports.string().min(1),
18975
- displayTitle: RunDisplayTitleSchema,
18976
- ambientStatus: AmbientStatusSchema.nullable(),
18977
- ambientStatusUpdatedAt: external_exports.string().datetime().nullable(),
18978
- starterActor: AuthActorSchema.nullable(),
18979
- snapshot: AgentResourceSchema,
18980
- environmentSnapshot: EnvironmentResourceSchema,
18981
- toolSnapshots: external_exports.array(
18982
- external_exports.object({
18983
- source: external_exports.literal("inline"),
18984
- alias: ToolAliasSchema,
18985
- spec: RemoteMcpToolSchema.or(ConnectionBackedToolSchema).or(LocalToolSchema).or(GithubToolSchema)
18986
- })
18987
- ),
18988
- input: JsonValueSchema,
18989
- createdAt: external_exports.string().datetime(),
18990
- updatedAt: external_exports.string().datetime(),
18991
- lastActivityAt: external_exports.string().datetime(),
18992
- startedAt: external_exports.string().datetime().nullable(),
18993
- finishedAt: external_exports.string().datetime().nullable(),
18994
- archivedAt: external_exports.string().datetime().nullable(),
18995
- error: JsonValueSchema.nullable()
19040
+ CreateRunAnswerCommandRequestSchema = RunAnswerCommandPayloadSchema;
19041
+ CreateRunLifecycleCommandRequestSchema = external_exports.object({
19042
+ reason: external_exports.string().trim().min(1).optional()
18996
19043
  });
18997
- SessionUiMessageRecordSchema = external_exports.object({
18998
- id: external_exports.string().trim().min(1),
18999
- sessionId: SessionIdSchema,
19000
- sequence: external_exports.number().int().nonnegative(),
19001
- messageId: external_exports.string().trim().min(1),
19002
- commandId: external_exports.string().trim().min(1).nullable(),
19003
- turnId: external_exports.string().trim().min(1).nullable(),
19004
- role: SessionMessageRoleSchema,
19005
- status: SessionMessageStatusSchema,
19006
- message: JsonValueSchema,
19007
- streamCursor: external_exports.number().int().positive().nullable().default(null),
19008
- createdAt: external_exports.string().datetime(),
19009
- updatedAt: external_exports.string().datetime(),
19010
- completedAt: external_exports.string().datetime().nullable()
19044
+ CreateRunStopCommandRequestSchema = external_exports.object({
19045
+ reason: external_exports.string().trim().min(1).optional(),
19046
+ respawn: SingletonRespawnSchema.optional()
19011
19047
  });
19012
- SessionListItemAgentSchema = external_exports.object({
19013
- name: external_exports.string(),
19014
- displayName: external_exports.string().nullable(),
19015
- username: external_exports.string().nullable(),
19016
- avatarSha256: external_exports.string().nullable()
19048
+ CreateSessionCommandRequestSchema = external_exports.discriminatedUnion("kind", [
19049
+ external_exports.object({
19050
+ kind: external_exports.literal("message"),
19051
+ payload: CreateRunMessageCommandRequestSchema
19052
+ }).strict(),
19053
+ external_exports.object({
19054
+ kind: external_exports.literal("answer"),
19055
+ payload: CreateRunAnswerCommandRequestSchema
19056
+ }).strict(),
19057
+ external_exports.object({
19058
+ kind: external_exports.literal("pause"),
19059
+ payload: CreateRunLifecycleCommandRequestSchema
19060
+ }).strict(),
19061
+ external_exports.object({
19062
+ kind: external_exports.literal("resume"),
19063
+ payload: CreateRunLifecycleCommandRequestSchema
19064
+ }).strict(),
19065
+ external_exports.object({
19066
+ kind: external_exports.literal("interrupt"),
19067
+ payload: CreateRunLifecycleCommandRequestSchema
19068
+ }).strict(),
19069
+ external_exports.object({
19070
+ kind: external_exports.literal("cancel"),
19071
+ payload: CreateRunLifecycleCommandRequestSchema
19072
+ }).strict(),
19073
+ external_exports.object({
19074
+ kind: external_exports.literal("stop"),
19075
+ payload: CreateRunStopCommandRequestSchema
19076
+ }).strict()
19077
+ ]);
19078
+ RunResolutionPolicySchema = external_exports.enum([
19079
+ "singletonLiveRun",
19080
+ "latestLiveRun",
19081
+ "latestRun"
19082
+ ]);
19083
+ AgentAddressedCommandTargetSchema = external_exports.object({
19084
+ agentId: AgentIdSchema.optional(),
19085
+ agentName: external_exports.string().trim().min(1).optional(),
19086
+ resolutionPolicy: RunResolutionPolicySchema
19087
+ }).refine((value) => Boolean(value.agentId) !== Boolean(value.agentName), {
19088
+ message: "Provide exactly one of agentId or agentName"
19017
19089
  });
19018
- SessionListItemSchema = external_exports.object({
19019
- id: SessionIdSchema,
19020
- agentId: AgentIdSchema,
19021
- status: SessionStatusSchema,
19022
- runtimePhase: SessionRuntimePhaseSchema.nullable(),
19023
- displayTitle: RunDisplayTitleSchema,
19024
- summary: external_exports.string(),
19025
- agent: SessionListItemAgentSchema,
19090
+ SessionCommandRecordBaseSchema = external_exports.object({
19091
+ id: SessionCommandIdSchema,
19092
+ sessionId: SessionIdSchema,
19093
+ sender: SessionCommandSenderSchema,
19094
+ idempotencyKey: external_exports.string().min(1).nullable(),
19095
+ status: SessionCommandStatusSchema,
19096
+ attemptCount: external_exports.number().int().nonnegative(),
19097
+ nextAttemptAt: external_exports.string().datetime().nullable(),
19098
+ lastAttemptAt: external_exports.string().datetime().nullable(),
19099
+ acceptedAt: external_exports.string().datetime().nullable(),
19100
+ failedAt: external_exports.string().datetime().nullable(),
19101
+ error: JsonValueSchema.nullable(),
19026
19102
  createdAt: external_exports.string().datetime(),
19027
- updatedAt: external_exports.string().datetime(),
19028
- archivedAt: external_exports.string().datetime().nullable(),
19029
- lastActivityAt: external_exports.string().datetime()
19030
- });
19031
- SessionListResponseSchema = external_exports.object({
19032
- sessions: external_exports.array(SessionListItemSchema),
19033
- /**
19034
- * Opaque keyset cursor for the next page, or `null` when the list is
19035
- * exhausted. Replay it on the next request to append the following page; it is
19036
- * minted for a specific sort and rejected against a different one.
19037
- */
19038
- nextCursor: external_exports.string().nullable(),
19039
- hasMore: external_exports.boolean()
19103
+ updatedAt: external_exports.string().datetime()
19040
19104
  });
19041
- SessionsArchiveResponseSchema = external_exports.object({
19042
- archived: external_exports.boolean(),
19043
- sessions: external_exports.array(SessionRecordSchema)
19105
+ RunStartCommandPayloadSchema = external_exports.object({
19106
+ kind: external_exports.literal("start")
19107
+ }).strict();
19108
+ RunStartWithMessageCommandPayloadSchema = external_exports.object({
19109
+ kind: external_exports.literal("startWithMessage"),
19110
+ message: external_exports.string().trim().min(1)
19111
+ }).strict();
19112
+ SessionPersistedCommandPayloadSchema = external_exports.union([
19113
+ RunMessageCommandPayloadSchema,
19114
+ RunAnswerCommandPayloadSchema,
19115
+ RunLifecycleCommandPayloadSchema,
19116
+ RunStopCommandPayloadSchema,
19117
+ RunStartCommandPayloadSchema,
19118
+ RunStartWithMessageCommandPayloadSchema
19119
+ ]);
19120
+ SessionCommandRecordSchema = external_exports.discriminatedUnion("kind", [
19121
+ SessionCommandRecordBaseSchema.extend({
19122
+ kind: external_exports.literal("message"),
19123
+ payload: RunMessageCommandPayloadSchema
19124
+ }),
19125
+ SessionCommandRecordBaseSchema.extend({
19126
+ kind: external_exports.literal("answer"),
19127
+ payload: RunAnswerCommandPayloadSchema
19128
+ }),
19129
+ SessionCommandRecordBaseSchema.extend({
19130
+ kind: external_exports.literal("pause"),
19131
+ payload: RunLifecycleCommandPayloadSchema
19132
+ }),
19133
+ SessionCommandRecordBaseSchema.extend({
19134
+ kind: external_exports.literal("resume"),
19135
+ payload: RunLifecycleCommandPayloadSchema
19136
+ }),
19137
+ SessionCommandRecordBaseSchema.extend({
19138
+ kind: external_exports.literal("interrupt"),
19139
+ payload: RunLifecycleCommandPayloadSchema
19140
+ }),
19141
+ SessionCommandRecordBaseSchema.extend({
19142
+ kind: external_exports.literal("cancel"),
19143
+ payload: RunLifecycleCommandPayloadSchema
19144
+ }),
19145
+ SessionCommandRecordBaseSchema.extend({
19146
+ kind: external_exports.literal("stop"),
19147
+ payload: RunStopCommandPayloadSchema
19148
+ }),
19149
+ SessionCommandRecordBaseSchema.extend({
19150
+ kind: external_exports.literal("start"),
19151
+ payload: RunStartCommandPayloadSchema
19152
+ }),
19153
+ SessionCommandRecordBaseSchema.extend({
19154
+ kind: external_exports.literal("startWithMessage"),
19155
+ payload: RunStartWithMessageCommandPayloadSchema
19156
+ })
19157
+ ]);
19158
+ SessionDispatchMessageCommandPayloadSchema = external_exports.object({
19159
+ kind: external_exports.literal("message"),
19160
+ message: external_exports.string().trim().min(1)
19161
+ }).strict();
19162
+ SessionDispatchAnswerCommandPayloadSchema = external_exports.object({
19163
+ kind: external_exports.literal("answer"),
19164
+ toolCallId: external_exports.string().trim().min(1),
19165
+ answers: external_exports.record(external_exports.string(), external_exports.string()),
19166
+ response: external_exports.string().trim().min(1).optional()
19167
+ }).strict();
19168
+ SessionDispatchStopCommandPayloadSchema = external_exports.object({
19169
+ kind: external_exports.literal("stop"),
19170
+ reason: external_exports.string().trim().min(1).optional()
19171
+ }).strict();
19172
+ SessionDispatchCommandPayloadSchema = external_exports.discriminatedUnion(
19173
+ "kind",
19174
+ [
19175
+ RunStartCommandPayloadSchema,
19176
+ RunStartWithMessageCommandPayloadSchema,
19177
+ SessionDispatchMessageCommandPayloadSchema,
19178
+ SessionDispatchAnswerCommandPayloadSchema,
19179
+ SessionDispatchStopCommandPayloadSchema
19180
+ ]
19181
+ );
19182
+ SessionDispatchCommandRecordBaseSchema = external_exports.object({
19183
+ id: SessionCommandIdSchema,
19184
+ sessionId: SessionIdSchema,
19185
+ sender: SessionCommandSenderSchema,
19186
+ idempotencyKey: external_exports.string().min(1).nullable(),
19187
+ status: SessionDispatchCommandStatusSchema,
19188
+ attemptCount: external_exports.number().int().nonnegative(),
19189
+ nextAttemptAt: external_exports.string().datetime().nullable(),
19190
+ lastAttemptAt: external_exports.string().datetime().nullable(),
19191
+ acceptedAt: external_exports.string().datetime().nullable(),
19192
+ failedAt: external_exports.string().datetime().nullable(),
19193
+ error: JsonValueSchema.nullable(),
19194
+ createdAt: external_exports.string().datetime(),
19195
+ updatedAt: external_exports.string().datetime()
19044
19196
  });
19197
+ SessionDispatchCommandRecordSchema = external_exports.discriminatedUnion("kind", [
19198
+ SessionDispatchCommandRecordBaseSchema.extend({
19199
+ kind: external_exports.literal("start"),
19200
+ payload: RunStartCommandPayloadSchema
19201
+ }),
19202
+ SessionDispatchCommandRecordBaseSchema.extend({
19203
+ kind: external_exports.literal("startWithMessage"),
19204
+ payload: RunStartWithMessageCommandPayloadSchema
19205
+ }),
19206
+ SessionDispatchCommandRecordBaseSchema.extend({
19207
+ kind: external_exports.literal("message"),
19208
+ payload: SessionDispatchMessageCommandPayloadSchema
19209
+ }),
19210
+ SessionDispatchCommandRecordBaseSchema.extend({
19211
+ kind: external_exports.literal("answer"),
19212
+ payload: SessionDispatchAnswerCommandPayloadSchema
19213
+ }),
19214
+ SessionDispatchCommandRecordBaseSchema.extend({
19215
+ kind: external_exports.literal("stop"),
19216
+ payload: SessionDispatchStopCommandPayloadSchema
19217
+ })
19218
+ ]);
19045
19219
  }
19046
19220
  });
19047
19221
 
19048
- // ../../packages/schemas/src/session-introspection.ts
19049
- var TruncatedValueSchema, RunConversationSearchSnippetSchema, RunConversationSearchMatchSchema, RunConversationSearchResponseSchema, SessionToolExchangeSchema, SessionToolExchangesResponseSchema, SESSION_TRIGGER_DELIVERY_ACTIONS, SessionTriggerDeliveryActionSchema, SESSION_EVENT_ORIGIN_KINDS, SessionEventOriginKindSchema, SessionTriggerDeliveryRecordSchema, SessionTriggersResponseSchema, RunArtifactRecordSchema, RunArtifactsResponseSchema, RunBindingRecordSchema, RunBindingsResponseSchema, RunTurnSchema, SessionToolStatSchema, RunSummarySchema;
19050
- var init_session_introspection = __esm({
19051
- "../../packages/schemas/src/session-introspection.ts"() {
19222
+ // ../../packages/schemas/src/sessions.ts
19223
+ function isSessionTerminalStatus(status) {
19224
+ return SESSION_TERMINAL_STATUSES.some(
19225
+ (terminalStatus) => terminalStatus === status
19226
+ );
19227
+ }
19228
+ var SESSION_STATUSES, SESSION_RUNTIME_PHASES, SESSION_TERMINAL_STATUSES, SESSION_DISPLAY_TITLE_MAX_LENGTH, SESSION_MESSAGE_ROLES, SESSION_MESSAGE_STATUSES, SessionStatusSchema, SessionRuntimePhaseSchema, SessionMessageRoleSchema, SessionMessageStatusSchema, RunDisplayTitleSchema, AmbientStatusSchema, SESSION_CHECK_STATUSES, SESSION_CHECK_CONCLUSIONS, SESSION_CHECK_TIMEOUT_PHASES, SessionCheckStatusSchema, SessionCheckConclusionSchema, SessionCheckTimeoutPhaseSchema, ManualSessionRequestSchema, SessionArchiveRequestSchema, SessionsArchiveRequestSchema, SessionRecordSchema, SessionMessageOriginSchema, SessionUiMessageRecordSchema, SessionListItemAgentSchema, SessionListItemSchema, SessionListResponseSchema, SessionsArchiveResponseSchema;
19229
+ var init_sessions = __esm({
19230
+ "../../packages/schemas/src/sessions.ts"() {
19052
19231
  "use strict";
19053
19232
  init_zod();
19233
+ init_agents();
19054
19234
  init_auth();
19055
- init_conversation();
19235
+ init_environments();
19056
19236
  init_ids();
19057
19237
  init_primitives();
19058
- init_session_bindings();
19059
- init_sessions();
19060
- TruncatedValueSchema = external_exports.object({
19061
- truncated: external_exports.literal(true),
19062
- truncatedPreview: external_exports.string(),
19063
- originalBytes: external_exports.number().int().nonnegative()
19064
- });
19065
- RunConversationSearchSnippetSchema = external_exports.object({
19066
- partIndex: external_exports.number().int().nonnegative(),
19067
- partType: external_exports.string(),
19068
- /** The search term this snippet was produced for. */
19069
- query: external_exports.string(),
19070
- text: external_exports.string()
19071
- });
19072
- RunConversationSearchMatchSchema = external_exports.object({
19073
- sequence: external_exports.number().int().nonnegative(),
19074
- role: ConversationRoleSchema,
19075
- kind: ConversationEntryKindSchema,
19076
- status: ConversationEntryStatusSchema,
19077
- createdAt: external_exports.string().datetime(),
19078
- /** Which of the requested terms matched this entry. */
19079
- matchedQueries: external_exports.array(external_exports.string()),
19080
- /** Total match occurrences across terms in this entry. */
19081
- matchCount: external_exports.number().int().positive(),
19082
- snippets: external_exports.array(RunConversationSearchSnippetSchema)
19083
- });
19084
- RunConversationSearchResponseSchema = external_exports.object({
19085
- matches: external_exports.array(RunConversationSearchMatchSchema),
19086
- hasMore: external_exports.boolean(),
19087
- /**
19088
- * Sequence of the last candidate entry scanned (not just the last confirmed
19089
- * match) — pass as `afterSequence` to continue without re-scanning
19090
- * candidates the match confirmation dropped. Null when nothing was scanned.
19091
- */
19092
- nextAfterSequence: external_exports.number().int().nullable()
19093
- });
19094
- SessionToolExchangeSchema = external_exports.object({
19095
- name: external_exports.string(),
19096
- callSequence: external_exports.number().int().nonnegative(),
19097
- resultSequence: external_exports.number().int().nonnegative().nullable(),
19098
- input: JsonValueSchema,
19099
- output: JsonValueSchema.nullable(),
19100
- /** Null while the call has no recorded result. */
19101
- isError: external_exports.boolean().nullable(),
19102
- /** Result `completedAt` minus call `createdAt`; null without a result. */
19103
- durationMs: external_exports.number().int().nonnegative().nullable(),
19238
+ init_session_commands();
19239
+ init_tools();
19240
+ SESSION_STATUSES = [
19241
+ "queued",
19242
+ "running",
19243
+ "awaiting",
19244
+ "failed",
19245
+ "stopped"
19246
+ ];
19247
+ SESSION_RUNTIME_PHASES = [
19248
+ "building_image",
19249
+ "booting_container",
19250
+ "preparing_environment",
19251
+ "starting_runtime",
19252
+ "running"
19253
+ ];
19254
+ SESSION_TERMINAL_STATUSES = ["failed", "stopped"];
19255
+ SESSION_DISPLAY_TITLE_MAX_LENGTH = 64;
19256
+ SESSION_MESSAGE_ROLES = ["system", "user", "assistant"];
19257
+ SESSION_MESSAGE_STATUSES = [
19258
+ "in_progress",
19259
+ "completed",
19260
+ "failed"
19261
+ ];
19262
+ SessionStatusSchema = external_exports.enum(SESSION_STATUSES);
19263
+ SessionRuntimePhaseSchema = external_exports.enum(SESSION_RUNTIME_PHASES);
19264
+ SessionMessageRoleSchema = external_exports.enum(SESSION_MESSAGE_ROLES);
19265
+ SessionMessageStatusSchema = external_exports.enum(SESSION_MESSAGE_STATUSES);
19266
+ RunDisplayTitleSchema = external_exports.string().trim().max(SESSION_DISPLAY_TITLE_MAX_LENGTH);
19267
+ AmbientStatusSchema = external_exports.string().trim().min(1);
19268
+ SESSION_CHECK_STATUSES = [
19269
+ "queued",
19270
+ "in_progress",
19271
+ "completed"
19272
+ ];
19273
+ SESSION_CHECK_CONCLUSIONS = ["success", "failure"];
19274
+ SESSION_CHECK_TIMEOUT_PHASES = ["begin", "complete"];
19275
+ SessionCheckStatusSchema = external_exports.enum(SESSION_CHECK_STATUSES);
19276
+ SessionCheckConclusionSchema = external_exports.enum(SESSION_CHECK_CONCLUSIONS);
19277
+ SessionCheckTimeoutPhaseSchema = external_exports.enum(
19278
+ SESSION_CHECK_TIMEOUT_PHASES
19279
+ );
19280
+ ManualSessionRequestSchema = external_exports.object({
19281
+ message: external_exports.string().trim().min(1).max(2e4).optional(),
19282
+ interactive: external_exports.boolean().optional(),
19283
+ /**
19284
+ * Deliver the agent's configured `initialPrompt` as the session's kickoff
19285
+ * message so the agent opens the conversation. Agents without an
19286
+ * `initialPrompt` fall back to the default manual say-hello message, so a
19287
+ * kickoff always pings the agent. The kickoff is delivered through the
19288
+ * session's one idempotent start command and never renders as a user chat
19289
+ * bubble; the agent's greeting is the first visible content.
19290
+ */
19291
+ kickoff: external_exports.boolean().optional()
19292
+ });
19293
+ SessionArchiveRequestSchema = external_exports.object({
19294
+ archived: external_exports.boolean()
19295
+ });
19296
+ SessionsArchiveRequestSchema = external_exports.object({
19297
+ session_ids: external_exports.array(SessionIdSchema).min(1).max(100),
19298
+ archived: external_exports.boolean()
19299
+ });
19300
+ SessionRecordSchema = external_exports.object({
19301
+ id: SessionIdSchema,
19302
+ organizationId: external_exports.string().trim().min(1),
19303
+ projectId: external_exports.string().trim().min(1).nullable(),
19304
+ agentId: AgentIdSchema,
19305
+ runtimeId: RuntimeIdSchema.nullable(),
19306
+ status: SessionStatusSchema,
19307
+ runtimePhase: SessionRuntimePhaseSchema.nullable(),
19308
+ idempotencyKey: external_exports.string().min(1).nullable(),
19309
+ correlationKey: external_exports.string().nullable(),
19310
+ workflowId: external_exports.string().min(1),
19311
+ displayTitle: RunDisplayTitleSchema,
19312
+ ambientStatus: AmbientStatusSchema.nullable(),
19313
+ ambientStatusUpdatedAt: external_exports.string().datetime().nullable(),
19314
+ starterActor: AuthActorSchema.nullable(),
19315
+ snapshot: AgentResourceSchema,
19316
+ environmentSnapshot: EnvironmentResourceSchema,
19317
+ toolSnapshots: external_exports.array(
19318
+ external_exports.object({
19319
+ source: external_exports.literal("inline"),
19320
+ alias: ToolAliasSchema,
19321
+ spec: RemoteMcpToolSchema.or(ConnectionBackedToolSchema).or(LocalToolSchema).or(GithubToolSchema)
19322
+ })
19323
+ ),
19324
+ input: JsonValueSchema,
19325
+ createdAt: external_exports.string().datetime(),
19326
+ updatedAt: external_exports.string().datetime(),
19327
+ lastActivityAt: external_exports.string().datetime(),
19328
+ startedAt: external_exports.string().datetime().nullable(),
19329
+ finishedAt: external_exports.string().datetime().nullable(),
19330
+ archivedAt: external_exports.string().datetime().nullable(),
19331
+ error: JsonValueSchema.nullable()
19332
+ });
19333
+ SessionMessageOriginSchema = external_exports.object({
19334
+ eventKey: external_exports.string().trim().min(1),
19335
+ provider: external_exports.string().trim().min(1).nullable().default(null)
19336
+ });
19337
+ SessionUiMessageRecordSchema = external_exports.object({
19338
+ id: external_exports.string().trim().min(1),
19339
+ sessionId: SessionIdSchema,
19340
+ sequence: external_exports.number().int().nonnegative(),
19341
+ messageId: external_exports.string().trim().min(1),
19342
+ commandId: external_exports.string().trim().min(1).nullable(),
19343
+ turnId: external_exports.string().trim().min(1).nullable(),
19344
+ role: SessionMessageRoleSchema,
19345
+ status: SessionMessageStatusSchema,
19346
+ message: JsonValueSchema,
19347
+ // The sender of the command that carried this message into the session
19348
+ // (operator chat send, trigger delivery, or another agent's session), joined
19349
+ // from session_commands at read time. Null for messages that did not arrive
19350
+ // through a command, such as assistant output.
19351
+ sender: SessionCommandSenderSchema.nullable().default(null),
19352
+ // For trigger deliveries, the routed event behind the carrying command:
19353
+ // its event key plus the originating provider connection when known
19354
+ // (e.g. "slack" for a subscribed-thread reply, "github" for a check event).
19355
+ origin: SessionMessageOriginSchema.nullable().default(null),
19356
+ streamCursor: external_exports.number().int().positive().nullable().default(null),
19357
+ createdAt: external_exports.string().datetime(),
19358
+ updatedAt: external_exports.string().datetime(),
19359
+ completedAt: external_exports.string().datetime().nullable()
19360
+ });
19361
+ SessionListItemAgentSchema = external_exports.object({
19362
+ name: external_exports.string(),
19363
+ displayName: external_exports.string().nullable(),
19364
+ username: external_exports.string().nullable(),
19365
+ avatarSha256: external_exports.string().nullable()
19366
+ });
19367
+ SessionListItemSchema = external_exports.object({
19368
+ id: SessionIdSchema,
19369
+ agentId: AgentIdSchema,
19370
+ status: SessionStatusSchema,
19371
+ runtimePhase: SessionRuntimePhaseSchema.nullable(),
19372
+ displayTitle: RunDisplayTitleSchema,
19373
+ summary: external_exports.string(),
19374
+ agent: SessionListItemAgentSchema,
19375
+ createdAt: external_exports.string().datetime(),
19376
+ updatedAt: external_exports.string().datetime(),
19377
+ archivedAt: external_exports.string().datetime().nullable(),
19378
+ lastActivityAt: external_exports.string().datetime()
19379
+ });
19380
+ SessionListResponseSchema = external_exports.object({
19381
+ sessions: external_exports.array(SessionListItemSchema),
19382
+ /**
19383
+ * Opaque keyset cursor for the next page, or `null` when the list is
19384
+ * exhausted. Replay it on the next request to append the following page; it is
19385
+ * minted for a specific sort and rejected against a different one.
19386
+ */
19387
+ nextCursor: external_exports.string().nullable(),
19388
+ hasMore: external_exports.boolean()
19389
+ });
19390
+ SessionsArchiveResponseSchema = external_exports.object({
19391
+ archived: external_exports.boolean(),
19392
+ sessions: external_exports.array(SessionRecordSchema)
19393
+ });
19394
+ }
19395
+ });
19396
+
19397
+ // ../../packages/schemas/src/session-introspection.ts
19398
+ var TruncatedValueSchema, RunConversationSearchSnippetSchema, RunConversationSearchMatchSchema, RunConversationSearchResponseSchema, SessionToolExchangeSchema, SessionToolExchangesResponseSchema, SESSION_TRIGGER_DELIVERY_ACTIONS, SessionTriggerDeliveryActionSchema, SESSION_EVENT_ORIGIN_KINDS, SessionEventOriginKindSchema, SessionTriggerDeliveryRecordSchema, SessionTriggersResponseSchema, RunArtifactRecordSchema, RunArtifactsResponseSchema, RunBindingRecordSchema, RunBindingsResponseSchema, RunTurnSchema, SessionToolStatSchema, RunSummarySchema;
19399
+ var init_session_introspection = __esm({
19400
+ "../../packages/schemas/src/session-introspection.ts"() {
19401
+ "use strict";
19402
+ init_zod();
19403
+ init_auth();
19404
+ init_conversation();
19405
+ init_ids();
19406
+ init_primitives();
19407
+ init_session_bindings();
19408
+ init_sessions();
19409
+ TruncatedValueSchema = external_exports.object({
19410
+ truncated: external_exports.literal(true),
19411
+ truncatedPreview: external_exports.string(),
19412
+ originalBytes: external_exports.number().int().nonnegative()
19413
+ });
19414
+ RunConversationSearchSnippetSchema = external_exports.object({
19415
+ partIndex: external_exports.number().int().nonnegative(),
19416
+ partType: external_exports.string(),
19417
+ /** The search term this snippet was produced for. */
19418
+ query: external_exports.string(),
19419
+ text: external_exports.string()
19420
+ });
19421
+ RunConversationSearchMatchSchema = external_exports.object({
19422
+ sequence: external_exports.number().int().nonnegative(),
19423
+ role: ConversationRoleSchema,
19424
+ kind: ConversationEntryKindSchema,
19425
+ status: ConversationEntryStatusSchema,
19426
+ createdAt: external_exports.string().datetime(),
19427
+ /** Which of the requested terms matched this entry. */
19428
+ matchedQueries: external_exports.array(external_exports.string()),
19429
+ /** Total match occurrences across terms in this entry. */
19430
+ matchCount: external_exports.number().int().positive(),
19431
+ snippets: external_exports.array(RunConversationSearchSnippetSchema)
19432
+ });
19433
+ RunConversationSearchResponseSchema = external_exports.object({
19434
+ matches: external_exports.array(RunConversationSearchMatchSchema),
19435
+ hasMore: external_exports.boolean(),
19436
+ /**
19437
+ * Sequence of the last candidate entry scanned (not just the last confirmed
19438
+ * match) — pass as `afterSequence` to continue without re-scanning
19439
+ * candidates the match confirmation dropped. Null when nothing was scanned.
19440
+ */
19441
+ nextAfterSequence: external_exports.number().int().nullable()
19442
+ });
19443
+ SessionToolExchangeSchema = external_exports.object({
19444
+ name: external_exports.string(),
19445
+ callSequence: external_exports.number().int().nonnegative(),
19446
+ resultSequence: external_exports.number().int().nonnegative().nullable(),
19447
+ input: JsonValueSchema,
19448
+ output: JsonValueSchema.nullable(),
19449
+ /** Null while the call has no recorded result. */
19450
+ isError: external_exports.boolean().nullable(),
19451
+ /** Result `completedAt` minus call `createdAt`; null without a result. */
19452
+ durationMs: external_exports.number().int().nonnegative().nullable(),
19104
19453
  startedAt: external_exports.string().datetime(),
19105
19454
  completedAt: external_exports.string().datetime().nullable()
19106
19455
  });
@@ -19149,504 +19498,169 @@ var init_session_introspection = __esm({
19149
19498
  /** Who started the session, for manual/CLI/agent spawns. */
19150
19499
  starter: AuthActorSchema.nullable(),
19151
19500
  /** Subsequent deliveries against the session, chronological. */
19152
- deliveries: external_exports.array(SessionTriggerDeliveryRecordSchema)
19153
- });
19154
- RunArtifactRecordSchema = external_exports.object({
19155
- artifactType: external_exports.string(),
19156
- externalId: external_exports.string(),
19157
- payload: JsonValueSchema,
19158
- recordedAt: external_exports.string().datetime()
19159
- });
19160
- RunArtifactsResponseSchema = external_exports.object({
19161
- artifacts: external_exports.array(RunArtifactRecordSchema)
19162
- });
19163
- RunBindingRecordSchema = external_exports.object({
19164
- targetType: BindingTargetTypeSchema,
19165
- externalId: external_exports.string(),
19166
- source: SessionBindingSourceSchema,
19167
- status: SessionBindingStatusSchema,
19168
- payload: JsonValueSchema.nullable(),
19169
- createdAt: external_exports.string().datetime(),
19170
- updatedAt: external_exports.string().datetime()
19171
- });
19172
- RunBindingsResponseSchema = external_exports.object({
19173
- bindings: external_exports.array(RunBindingRecordSchema)
19174
- });
19175
- RunTurnSchema = external_exports.object({
19176
- startSequence: external_exports.number().int().nonnegative(),
19177
- endSequence: external_exports.number().int().nonnegative(),
19178
- startedAt: external_exports.string().datetime(),
19179
- completedAt: external_exports.string().datetime().nullable(),
19180
- toolCallCount: external_exports.number().int().nonnegative()
19181
- });
19182
- SessionToolStatSchema = external_exports.object({
19183
- name: external_exports.string(),
19184
- /** Session-wide call count from the SQL aggregate. */
19185
- calls: external_exports.number().int().nonnegative(),
19186
- /**
19187
- * Derived from the summary's recent-entries window (most recent ~1000
19188
- * entries), so on very long sessions `errors` and `durationMs` can understate
19189
- * relative to the session-wide `calls`.
19190
- */
19191
- errors: external_exports.number().int().nonnegative(),
19192
- durationMs: external_exports.object({
19193
- p50: external_exports.number().nonnegative().nullable(),
19194
- max: external_exports.number().nonnegative().nullable()
19195
- })
19196
- });
19197
- RunSummarySchema = external_exports.object({
19198
- session: external_exports.object({
19199
- id: SessionIdSchema,
19200
- agentName: external_exports.string(),
19201
- displayTitle: external_exports.string(),
19202
- ambientStatus: AmbientStatusSchema.nullable(),
19203
- status: SessionStatusSchema,
19204
- error: JsonValueSchema.nullable(),
19205
- workflowId: external_exports.string(),
19206
- createdAt: external_exports.string().datetime(),
19207
- startedAt: external_exports.string().datetime().nullable(),
19208
- finishedAt: external_exports.string().datetime().nullable(),
19209
- archivedAt: external_exports.string().datetime().nullable()
19210
- }),
19211
- timing: external_exports.object({
19212
- /** `startedAt - createdAt`; null until the session starts. */
19213
- queuedMs: external_exports.number().int().nonnegative().nullable(),
19214
- /** `(finishedAt ?? now) - startedAt`; null until the session starts. */
19215
- activeMs: external_exports.number().int().nonnegative().nullable(),
19216
- /** `(finishedAt ?? now) - createdAt`. */
19217
- totalMs: external_exports.number().int().nonnegative()
19218
- }),
19219
- conversation: external_exports.object({
19220
- entryCount: external_exports.number().int().nonnegative(),
19221
- firstEntryAt: external_exports.string().datetime().nullable(),
19222
- lastEntryAt: external_exports.string().datetime().nullable(),
19223
- countsByKind: external_exports.object({
19224
- status: external_exports.number().int().nonnegative(),
19225
- message: external_exports.number().int().nonnegative(),
19226
- tool_call: external_exports.number().int().nonnegative(),
19227
- tool_result: external_exports.number().int().nonnegative(),
19228
- question: external_exports.number().int().nonnegative()
19229
- }),
19230
- failedEntryCount: external_exports.number().int().nonnegative(),
19231
- lastSequence: external_exports.number().int().nonnegative()
19232
- }),
19233
- tools: external_exports.array(SessionToolStatSchema),
19234
- /**
19235
- * True when the session has more conversation entries than the summary's
19236
- * recent-entries window, meaning per-tool `errors`/`durationMs` (and
19237
- * `turns`) describe only the most recent slice of the session.
19238
- */
19239
- toolStatsWindowed: external_exports.boolean(),
19240
- trigger: external_exports.object({
19241
- /** Spawning event key, or "manual" / "agent" for actor-started sessions. */
19242
- spawn: external_exports.string(),
19243
- signaledCount: external_exports.number().int().nonnegative(),
19244
- droppedCount: external_exports.number().int().nonnegative()
19245
- }),
19246
- artifacts: external_exports.object({
19247
- count: external_exports.number().int().nonnegative(),
19248
- types: external_exports.array(external_exports.string())
19249
- }),
19250
- /** Active session bindings, counted with their distinct target types. */
19251
- bindings: external_exports.object({
19252
- count: external_exports.number().int().nonnegative(),
19253
- targetTypes: external_exports.array(BindingTargetTypeSchema)
19254
- }),
19255
- /** Derived per-user-message turns, capped to the most recent. */
19256
- turns: external_exports.array(RunTurnSchema),
19257
- commands: external_exports.object({
19258
- total: external_exports.number().int().nonnegative(),
19259
- byKind: external_exports.record(external_exports.string(), external_exports.number().int().nonnegative()),
19260
- failed: external_exports.number().int().nonnegative()
19261
- }),
19262
- checks: external_exports.array(
19263
- external_exports.object({
19264
- name: external_exports.string(),
19265
- displayName: external_exports.string(),
19266
- status: SessionCheckStatusSchema,
19267
- conclusion: SessionCheckConclusionSchema.nullable(),
19268
- completedAt: external_exports.string().datetime().nullable()
19269
- })
19270
- )
19271
- });
19272
- }
19273
- });
19274
-
19275
- // ../../packages/schemas/src/session-turns.ts
19276
- var SESSION_TURN_STATUSES, SESSION_TURN_FAILURE_SCOPES, SessionTurnStatusSchema, SessionTurnFailureScopeSchema, SessionTurnRecordSchema;
19277
- var init_session_turns = __esm({
19278
- "../../packages/schemas/src/session-turns.ts"() {
19279
- "use strict";
19280
- init_zod();
19281
- init_ids();
19282
- init_primitives();
19283
- SESSION_TURN_STATUSES = [
19284
- "accepted",
19285
- "in_progress",
19286
- "waiting_for_input",
19287
- "completed",
19288
- "failed",
19289
- "stale"
19290
- ];
19291
- SESSION_TURN_FAILURE_SCOPES = ["turn", "session"];
19292
- SessionTurnStatusSchema = external_exports.enum(SESSION_TURN_STATUSES);
19293
- SessionTurnFailureScopeSchema = external_exports.enum(
19294
- SESSION_TURN_FAILURE_SCOPES
19295
- );
19296
- SessionTurnRecordSchema = external_exports.object({
19297
- id: external_exports.string().trim().min(1),
19298
- sessionId: SessionIdSchema,
19299
- commandId: SessionCommandIdSchema,
19300
- runtimeId: RuntimeIdSchema.nullable(),
19301
- bridgeLeaseId: RuntimeBridgeLeaseIdSchema.nullable(),
19302
- status: SessionTurnStatusSchema,
19303
- failureScope: SessionTurnFailureScopeSchema.nullable(),
19304
- lastOutputSeq: external_exports.number().int().positive().nullable(),
19305
- acceptedAt: external_exports.string().datetime().nullable(),
19306
- startedAt: external_exports.string().datetime().nullable(),
19307
- lastProgressAt: external_exports.string().datetime().nullable(),
19308
- completedAt: external_exports.string().datetime().nullable(),
19309
- failedAt: external_exports.string().datetime().nullable(),
19310
- staleAt: external_exports.string().datetime().nullable(),
19311
- error: JsonValueSchema.nullable(),
19312
- createdAt: external_exports.string().datetime(),
19313
- updatedAt: external_exports.string().datetime()
19314
- });
19315
- }
19316
- });
19317
-
19318
- // ../../packages/schemas/src/singleton-refresh.ts
19319
- var SINGLETON_RESPAWN_REASONS, SingletonRespawnReasonSchema, SingletonRespawnSchema, SingletonRefreshEventPayloadSchema;
19320
- var init_singleton_refresh = __esm({
19321
- "../../packages/schemas/src/singleton-refresh.ts"() {
19322
- "use strict";
19323
- init_zod();
19324
- SINGLETON_RESPAWN_REASONS = ["refresh", "failure"];
19325
- SingletonRespawnReasonSchema = external_exports.enum(SINGLETON_RESPAWN_REASONS);
19326
- SingletonRespawnSchema = external_exports.object({
19327
- reason: SingletonRespawnReasonSchema.default("refresh")
19328
- }).strict();
19329
- SingletonRefreshEventPayloadSchema = external_exports.object({
19330
- trigger: external_exports.literal("agent.refresh"),
19331
- refresh: external_exports.object({
19332
- reason: SingletonRespawnReasonSchema,
19333
- agentResourceId: external_exports.string().trim().min(1),
19334
- previousSessionId: external_exports.string().trim().min(1)
19335
- })
19336
- });
19337
- }
19338
- });
19339
-
19340
- // ../../packages/schemas/src/session-commands.ts
19341
- var SESSION_COMMAND_KINDS, SESSION_DISPATCH_COMMAND_KINDS, SESSION_PERSISTED_COMMAND_KINDS, SESSION_LIFECYCLE_COMMAND_KINDS, SESSION_COMMAND_STATUSES, SESSION_DISPATCH_COMMAND_STATUSES, SessionCommandKindSchema, SessionPersistedCommandKindSchema, SessionDispatchCommandKindSchema, RunLifecycleCommandKindSchema, SessionCommandStatusSchema, SessionDispatchCommandStatusSchema, SessionCommandSenderSchema, MESSAGE_DELIVERY_MODES, MessageDeliveryModeSchema, TRIGGER_INJECTION_MODALITIES, TriggerInjectionModalitySchema, RunMessageCommandPayloadSchema, RunAnswerCommandPayloadSchema, RunLifecycleCommandPayloadSchema, RunStopCommandPayloadSchema, SessionCommandPayloadSchema, CreateRunMessageCommandRequestSchema, CreateRunAnswerCommandRequestSchema, CreateRunLifecycleCommandRequestSchema, CreateRunStopCommandRequestSchema, CreateSessionCommandRequestSchema, RunResolutionPolicySchema, AgentAddressedCommandTargetSchema, SessionCommandRecordBaseSchema, RunStartCommandPayloadSchema, RunStartWithMessageCommandPayloadSchema, SessionPersistedCommandPayloadSchema, SessionCommandRecordSchema, SessionDispatchMessageCommandPayloadSchema, SessionDispatchAnswerCommandPayloadSchema, SessionDispatchStopCommandPayloadSchema, SessionDispatchCommandPayloadSchema, SessionDispatchCommandRecordBaseSchema, SessionDispatchCommandRecordSchema;
19342
- var init_session_commands = __esm({
19343
- "../../packages/schemas/src/session-commands.ts"() {
19344
- "use strict";
19345
- init_zod();
19346
- init_auth();
19347
- init_ids();
19348
- init_primitives();
19349
- init_singleton_refresh();
19350
- SESSION_COMMAND_KINDS = [
19351
- "message",
19352
- "answer",
19353
- "pause",
19354
- "resume",
19355
- "interrupt",
19356
- "cancel",
19357
- "stop"
19358
- ];
19359
- SESSION_DISPATCH_COMMAND_KINDS = [
19360
- "start",
19361
- "startWithMessage",
19362
- "message",
19363
- "answer",
19364
- "stop"
19365
- ];
19366
- SESSION_PERSISTED_COMMAND_KINDS = [
19367
- "message",
19368
- "pause",
19369
- "resume",
19370
- "interrupt",
19371
- "cancel",
19372
- "stop",
19373
- "start",
19374
- "startWithMessage",
19375
- "answer"
19376
- ];
19377
- SESSION_LIFECYCLE_COMMAND_KINDS = [
19378
- "pause",
19379
- "resume",
19380
- "interrupt",
19381
- "cancel",
19382
- "stop"
19383
- ];
19384
- SESSION_COMMAND_STATUSES = [
19385
- "pending",
19386
- "dispatching",
19387
- "accepted",
19388
- "failed"
19389
- ];
19390
- SESSION_DISPATCH_COMMAND_STATUSES = [
19391
- "pending",
19392
- "dispatching",
19393
- "accepted",
19394
- "failed"
19395
- ];
19396
- SessionCommandKindSchema = external_exports.enum(SESSION_COMMAND_KINDS);
19397
- SessionPersistedCommandKindSchema = external_exports.enum(
19398
- SESSION_PERSISTED_COMMAND_KINDS
19399
- );
19400
- SessionDispatchCommandKindSchema = external_exports.enum(
19401
- SESSION_DISPATCH_COMMAND_KINDS
19402
- );
19403
- RunLifecycleCommandKindSchema = external_exports.enum(
19404
- SESSION_LIFECYCLE_COMMAND_KINDS
19405
- );
19406
- SessionCommandStatusSchema = external_exports.enum(SESSION_COMMAND_STATUSES);
19407
- SessionDispatchCommandStatusSchema = external_exports.enum(
19408
- SESSION_DISPATCH_COMMAND_STATUSES
19409
- );
19410
- SessionCommandSenderSchema = external_exports.discriminatedUnion("type", [
19411
- external_exports.object({
19412
- type: external_exports.literal("operator"),
19413
- id: external_exports.string().trim().min(1).nullable().default(null),
19414
- actor: AuthActorSchema.nullable().optional()
19415
- }),
19416
- external_exports.object({
19417
- type: external_exports.literal("agent"),
19418
- sessionId: SessionIdSchema
19419
- }),
19420
- external_exports.object({
19421
- type: external_exports.literal("system")
19422
- })
19423
- ]);
19424
- MESSAGE_DELIVERY_MODES = ["interrupt", "deferred"];
19425
- MessageDeliveryModeSchema = external_exports.enum(MESSAGE_DELIVERY_MODES);
19426
- TRIGGER_INJECTION_MODALITIES = [
19427
- "chat",
19428
- "githubCheck",
19429
- "githubCheckAction",
19430
- "githubPullRequest",
19431
- "other"
19432
- ];
19433
- TriggerInjectionModalitySchema = external_exports.enum(
19434
- TRIGGER_INJECTION_MODALITIES
19435
- );
19436
- RunMessageCommandPayloadSchema = external_exports.object({
19437
- message: external_exports.string().trim().min(1),
19438
- // Optional so existing payloads and direct operator/agent messages stay
19439
- // valid without it; trigger routing sets "deferred" for GitHub check
19440
- // events. An absent mode is treated as "interrupt" at the delivery
19441
- // boundary (commandDeliveryPayload / the runtime handler), so the default
19442
- // lives where the value is consumed rather than as a required field every
19443
- // call site must construct.
19444
- deliveryMode: MessageDeliveryModeSchema.optional(),
19445
- metadata: JsonValueSchema.optional()
19446
- }).strict();
19447
- RunAnswerCommandPayloadSchema = external_exports.object({
19448
- toolCallId: external_exports.string().trim().min(1),
19449
- answers: external_exports.record(external_exports.string(), external_exports.string()),
19450
- response: external_exports.string().trim().min(1).optional()
19451
- }).strict().refine((value) => Object.keys(value.answers).length > 0 || value.response, {
19452
- message: "Provide at least one answer or a freeform response"
19453
- });
19454
- RunLifecycleCommandPayloadSchema = external_exports.object({
19455
- reason: external_exports.string().trim().min(1).optional()
19456
- }).strict();
19457
- RunStopCommandPayloadSchema = external_exports.object({
19458
- reason: external_exports.string().trim().min(1).optional(),
19459
- respawn: SingletonRespawnSchema.optional()
19460
- }).strict();
19461
- SessionCommandPayloadSchema = external_exports.union([
19462
- RunMessageCommandPayloadSchema,
19463
- RunAnswerCommandPayloadSchema,
19464
- RunLifecycleCommandPayloadSchema,
19465
- RunStopCommandPayloadSchema
19466
- ]);
19467
- CreateRunMessageCommandRequestSchema = external_exports.object({
19468
- message: external_exports.string().trim().min(1),
19469
- metadata: JsonValueSchema.optional()
19470
- });
19471
- CreateRunAnswerCommandRequestSchema = RunAnswerCommandPayloadSchema;
19472
- CreateRunLifecycleCommandRequestSchema = external_exports.object({
19473
- reason: external_exports.string().trim().min(1).optional()
19474
- });
19475
- CreateRunStopCommandRequestSchema = external_exports.object({
19476
- reason: external_exports.string().trim().min(1).optional(),
19477
- respawn: SingletonRespawnSchema.optional()
19478
- });
19479
- CreateSessionCommandRequestSchema = external_exports.discriminatedUnion("kind", [
19480
- external_exports.object({
19481
- kind: external_exports.literal("message"),
19482
- payload: CreateRunMessageCommandRequestSchema
19483
- }).strict(),
19484
- external_exports.object({
19485
- kind: external_exports.literal("answer"),
19486
- payload: CreateRunAnswerCommandRequestSchema
19487
- }).strict(),
19488
- external_exports.object({
19489
- kind: external_exports.literal("pause"),
19490
- payload: CreateRunLifecycleCommandRequestSchema
19491
- }).strict(),
19492
- external_exports.object({
19493
- kind: external_exports.literal("resume"),
19494
- payload: CreateRunLifecycleCommandRequestSchema
19495
- }).strict(),
19496
- external_exports.object({
19497
- kind: external_exports.literal("interrupt"),
19498
- payload: CreateRunLifecycleCommandRequestSchema
19499
- }).strict(),
19500
- external_exports.object({
19501
- kind: external_exports.literal("cancel"),
19502
- payload: CreateRunLifecycleCommandRequestSchema
19503
- }).strict(),
19504
- external_exports.object({
19505
- kind: external_exports.literal("stop"),
19506
- payload: CreateRunStopCommandRequestSchema
19507
- }).strict()
19508
- ]);
19509
- RunResolutionPolicySchema = external_exports.enum([
19510
- "singletonLiveRun",
19511
- "latestLiveRun",
19512
- "latestRun"
19513
- ]);
19514
- AgentAddressedCommandTargetSchema = external_exports.object({
19515
- agentId: AgentIdSchema.optional(),
19516
- agentName: external_exports.string().trim().min(1).optional(),
19517
- resolutionPolicy: RunResolutionPolicySchema
19518
- }).refine((value) => Boolean(value.agentId) !== Boolean(value.agentName), {
19519
- message: "Provide exactly one of agentId or agentName"
19501
+ deliveries: external_exports.array(SessionTriggerDeliveryRecordSchema)
19520
19502
  });
19521
- SessionCommandRecordBaseSchema = external_exports.object({
19522
- id: SessionCommandIdSchema,
19523
- sessionId: SessionIdSchema,
19524
- sender: SessionCommandSenderSchema,
19525
- idempotencyKey: external_exports.string().min(1).nullable(),
19526
- status: SessionCommandStatusSchema,
19527
- attemptCount: external_exports.number().int().nonnegative(),
19528
- nextAttemptAt: external_exports.string().datetime().nullable(),
19529
- lastAttemptAt: external_exports.string().datetime().nullable(),
19530
- acceptedAt: external_exports.string().datetime().nullable(),
19531
- failedAt: external_exports.string().datetime().nullable(),
19532
- error: JsonValueSchema.nullable(),
19503
+ RunArtifactRecordSchema = external_exports.object({
19504
+ artifactType: external_exports.string(),
19505
+ externalId: external_exports.string(),
19506
+ payload: JsonValueSchema,
19507
+ recordedAt: external_exports.string().datetime()
19508
+ });
19509
+ RunArtifactsResponseSchema = external_exports.object({
19510
+ artifacts: external_exports.array(RunArtifactRecordSchema)
19511
+ });
19512
+ RunBindingRecordSchema = external_exports.object({
19513
+ targetType: BindingTargetTypeSchema,
19514
+ externalId: external_exports.string(),
19515
+ source: SessionBindingSourceSchema,
19516
+ status: SessionBindingStatusSchema,
19517
+ payload: JsonValueSchema.nullable(),
19533
19518
  createdAt: external_exports.string().datetime(),
19534
19519
  updatedAt: external_exports.string().datetime()
19535
19520
  });
19536
- RunStartCommandPayloadSchema = external_exports.object({
19537
- kind: external_exports.literal("start")
19538
- }).strict();
19539
- RunStartWithMessageCommandPayloadSchema = external_exports.object({
19540
- kind: external_exports.literal("startWithMessage"),
19541
- message: external_exports.string().trim().min(1)
19542
- }).strict();
19543
- SessionPersistedCommandPayloadSchema = external_exports.union([
19544
- RunMessageCommandPayloadSchema,
19545
- RunAnswerCommandPayloadSchema,
19546
- RunLifecycleCommandPayloadSchema,
19547
- RunStopCommandPayloadSchema,
19548
- RunStartCommandPayloadSchema,
19549
- RunStartWithMessageCommandPayloadSchema
19550
- ]);
19551
- SessionCommandRecordSchema = external_exports.discriminatedUnion("kind", [
19552
- SessionCommandRecordBaseSchema.extend({
19553
- kind: external_exports.literal("message"),
19554
- payload: RunMessageCommandPayloadSchema
19555
- }),
19556
- SessionCommandRecordBaseSchema.extend({
19557
- kind: external_exports.literal("answer"),
19558
- payload: RunAnswerCommandPayloadSchema
19521
+ RunBindingsResponseSchema = external_exports.object({
19522
+ bindings: external_exports.array(RunBindingRecordSchema)
19523
+ });
19524
+ RunTurnSchema = external_exports.object({
19525
+ startSequence: external_exports.number().int().nonnegative(),
19526
+ endSequence: external_exports.number().int().nonnegative(),
19527
+ startedAt: external_exports.string().datetime(),
19528
+ completedAt: external_exports.string().datetime().nullable(),
19529
+ toolCallCount: external_exports.number().int().nonnegative()
19530
+ });
19531
+ SessionToolStatSchema = external_exports.object({
19532
+ name: external_exports.string(),
19533
+ /** Session-wide call count from the SQL aggregate. */
19534
+ calls: external_exports.number().int().nonnegative(),
19535
+ /**
19536
+ * Derived from the summary's recent-entries window (most recent ~1000
19537
+ * entries), so on very long sessions `errors` and `durationMs` can understate
19538
+ * relative to the session-wide `calls`.
19539
+ */
19540
+ errors: external_exports.number().int().nonnegative(),
19541
+ durationMs: external_exports.object({
19542
+ p50: external_exports.number().nonnegative().nullable(),
19543
+ max: external_exports.number().nonnegative().nullable()
19544
+ })
19545
+ });
19546
+ RunSummarySchema = external_exports.object({
19547
+ session: external_exports.object({
19548
+ id: SessionIdSchema,
19549
+ agentName: external_exports.string(),
19550
+ displayTitle: external_exports.string(),
19551
+ ambientStatus: AmbientStatusSchema.nullable(),
19552
+ status: SessionStatusSchema,
19553
+ error: JsonValueSchema.nullable(),
19554
+ workflowId: external_exports.string(),
19555
+ createdAt: external_exports.string().datetime(),
19556
+ startedAt: external_exports.string().datetime().nullable(),
19557
+ finishedAt: external_exports.string().datetime().nullable(),
19558
+ archivedAt: external_exports.string().datetime().nullable()
19559
19559
  }),
19560
- SessionCommandRecordBaseSchema.extend({
19561
- kind: external_exports.literal("pause"),
19562
- payload: RunLifecycleCommandPayloadSchema
19560
+ timing: external_exports.object({
19561
+ /** `startedAt - createdAt`; null until the session starts. */
19562
+ queuedMs: external_exports.number().int().nonnegative().nullable(),
19563
+ /** `(finishedAt ?? now) - startedAt`; null until the session starts. */
19564
+ activeMs: external_exports.number().int().nonnegative().nullable(),
19565
+ /** `(finishedAt ?? now) - createdAt`. */
19566
+ totalMs: external_exports.number().int().nonnegative()
19563
19567
  }),
19564
- SessionCommandRecordBaseSchema.extend({
19565
- kind: external_exports.literal("resume"),
19566
- payload: RunLifecycleCommandPayloadSchema
19568
+ conversation: external_exports.object({
19569
+ entryCount: external_exports.number().int().nonnegative(),
19570
+ firstEntryAt: external_exports.string().datetime().nullable(),
19571
+ lastEntryAt: external_exports.string().datetime().nullable(),
19572
+ countsByKind: external_exports.object({
19573
+ status: external_exports.number().int().nonnegative(),
19574
+ message: external_exports.number().int().nonnegative(),
19575
+ tool_call: external_exports.number().int().nonnegative(),
19576
+ tool_result: external_exports.number().int().nonnegative(),
19577
+ question: external_exports.number().int().nonnegative()
19578
+ }),
19579
+ failedEntryCount: external_exports.number().int().nonnegative(),
19580
+ lastSequence: external_exports.number().int().nonnegative()
19567
19581
  }),
19568
- SessionCommandRecordBaseSchema.extend({
19569
- kind: external_exports.literal("interrupt"),
19570
- payload: RunLifecycleCommandPayloadSchema
19582
+ tools: external_exports.array(SessionToolStatSchema),
19583
+ /**
19584
+ * True when the session has more conversation entries than the summary's
19585
+ * recent-entries window, meaning per-tool `errors`/`durationMs` (and
19586
+ * `turns`) describe only the most recent slice of the session.
19587
+ */
19588
+ toolStatsWindowed: external_exports.boolean(),
19589
+ trigger: external_exports.object({
19590
+ /** Spawning event key, or "manual" / "agent" for actor-started sessions. */
19591
+ spawn: external_exports.string(),
19592
+ signaledCount: external_exports.number().int().nonnegative(),
19593
+ droppedCount: external_exports.number().int().nonnegative()
19571
19594
  }),
19572
- SessionCommandRecordBaseSchema.extend({
19573
- kind: external_exports.literal("cancel"),
19574
- payload: RunLifecycleCommandPayloadSchema
19595
+ artifacts: external_exports.object({
19596
+ count: external_exports.number().int().nonnegative(),
19597
+ types: external_exports.array(external_exports.string())
19575
19598
  }),
19576
- SessionCommandRecordBaseSchema.extend({
19577
- kind: external_exports.literal("stop"),
19578
- payload: RunStopCommandPayloadSchema
19599
+ /** Active session bindings, counted with their distinct target types. */
19600
+ bindings: external_exports.object({
19601
+ count: external_exports.number().int().nonnegative(),
19602
+ targetTypes: external_exports.array(BindingTargetTypeSchema)
19579
19603
  }),
19580
- SessionCommandRecordBaseSchema.extend({
19581
- kind: external_exports.literal("start"),
19582
- payload: RunStartCommandPayloadSchema
19604
+ /** Derived per-user-message turns, capped to the most recent. */
19605
+ turns: external_exports.array(RunTurnSchema),
19606
+ commands: external_exports.object({
19607
+ total: external_exports.number().int().nonnegative(),
19608
+ byKind: external_exports.record(external_exports.string(), external_exports.number().int().nonnegative()),
19609
+ failed: external_exports.number().int().nonnegative()
19583
19610
  }),
19584
- SessionCommandRecordBaseSchema.extend({
19585
- kind: external_exports.literal("startWithMessage"),
19586
- payload: RunStartWithMessageCommandPayloadSchema
19587
- })
19588
- ]);
19589
- SessionDispatchMessageCommandPayloadSchema = external_exports.object({
19590
- kind: external_exports.literal("message"),
19591
- message: external_exports.string().trim().min(1)
19592
- }).strict();
19593
- SessionDispatchAnswerCommandPayloadSchema = external_exports.object({
19594
- kind: external_exports.literal("answer"),
19595
- toolCallId: external_exports.string().trim().min(1),
19596
- answers: external_exports.record(external_exports.string(), external_exports.string()),
19597
- response: external_exports.string().trim().min(1).optional()
19598
- }).strict();
19599
- SessionDispatchStopCommandPayloadSchema = external_exports.object({
19600
- kind: external_exports.literal("stop"),
19601
- reason: external_exports.string().trim().min(1).optional()
19602
- }).strict();
19603
- SessionDispatchCommandPayloadSchema = external_exports.discriminatedUnion(
19604
- "kind",
19605
- [
19606
- RunStartCommandPayloadSchema,
19607
- RunStartWithMessageCommandPayloadSchema,
19608
- SessionDispatchMessageCommandPayloadSchema,
19609
- SessionDispatchAnswerCommandPayloadSchema,
19610
- SessionDispatchStopCommandPayloadSchema
19611
- ]
19611
+ checks: external_exports.array(
19612
+ external_exports.object({
19613
+ name: external_exports.string(),
19614
+ displayName: external_exports.string(),
19615
+ status: SessionCheckStatusSchema,
19616
+ conclusion: SessionCheckConclusionSchema.nullable(),
19617
+ completedAt: external_exports.string().datetime().nullable()
19618
+ })
19619
+ )
19620
+ });
19621
+ }
19622
+ });
19623
+
19624
+ // ../../packages/schemas/src/session-turns.ts
19625
+ var SESSION_TURN_STATUSES, SESSION_TURN_FAILURE_SCOPES, SessionTurnStatusSchema, SessionTurnFailureScopeSchema, SessionTurnRecordSchema;
19626
+ var init_session_turns = __esm({
19627
+ "../../packages/schemas/src/session-turns.ts"() {
19628
+ "use strict";
19629
+ init_zod();
19630
+ init_ids();
19631
+ init_primitives();
19632
+ SESSION_TURN_STATUSES = [
19633
+ "accepted",
19634
+ "in_progress",
19635
+ "waiting_for_input",
19636
+ "completed",
19637
+ "failed",
19638
+ "stale"
19639
+ ];
19640
+ SESSION_TURN_FAILURE_SCOPES = ["turn", "session"];
19641
+ SessionTurnStatusSchema = external_exports.enum(SESSION_TURN_STATUSES);
19642
+ SessionTurnFailureScopeSchema = external_exports.enum(
19643
+ SESSION_TURN_FAILURE_SCOPES
19612
19644
  );
19613
- SessionDispatchCommandRecordBaseSchema = external_exports.object({
19614
- id: SessionCommandIdSchema,
19645
+ SessionTurnRecordSchema = external_exports.object({
19646
+ id: external_exports.string().trim().min(1),
19615
19647
  sessionId: SessionIdSchema,
19616
- sender: SessionCommandSenderSchema,
19617
- idempotencyKey: external_exports.string().min(1).nullable(),
19618
- status: SessionDispatchCommandStatusSchema,
19619
- attemptCount: external_exports.number().int().nonnegative(),
19620
- nextAttemptAt: external_exports.string().datetime().nullable(),
19621
- lastAttemptAt: external_exports.string().datetime().nullable(),
19648
+ commandId: SessionCommandIdSchema,
19649
+ runtimeId: RuntimeIdSchema.nullable(),
19650
+ bridgeLeaseId: RuntimeBridgeLeaseIdSchema.nullable(),
19651
+ status: SessionTurnStatusSchema,
19652
+ failureScope: SessionTurnFailureScopeSchema.nullable(),
19653
+ lastOutputSeq: external_exports.number().int().positive().nullable(),
19622
19654
  acceptedAt: external_exports.string().datetime().nullable(),
19655
+ startedAt: external_exports.string().datetime().nullable(),
19656
+ lastProgressAt: external_exports.string().datetime().nullable(),
19657
+ completedAt: external_exports.string().datetime().nullable(),
19623
19658
  failedAt: external_exports.string().datetime().nullable(),
19659
+ staleAt: external_exports.string().datetime().nullable(),
19624
19660
  error: JsonValueSchema.nullable(),
19625
19661
  createdAt: external_exports.string().datetime(),
19626
19662
  updatedAt: external_exports.string().datetime()
19627
19663
  });
19628
- SessionDispatchCommandRecordSchema = external_exports.discriminatedUnion("kind", [
19629
- SessionDispatchCommandRecordBaseSchema.extend({
19630
- kind: external_exports.literal("start"),
19631
- payload: RunStartCommandPayloadSchema
19632
- }),
19633
- SessionDispatchCommandRecordBaseSchema.extend({
19634
- kind: external_exports.literal("startWithMessage"),
19635
- payload: RunStartWithMessageCommandPayloadSchema
19636
- }),
19637
- SessionDispatchCommandRecordBaseSchema.extend({
19638
- kind: external_exports.literal("message"),
19639
- payload: SessionDispatchMessageCommandPayloadSchema
19640
- }),
19641
- SessionDispatchCommandRecordBaseSchema.extend({
19642
- kind: external_exports.literal("answer"),
19643
- payload: SessionDispatchAnswerCommandPayloadSchema
19644
- }),
19645
- SessionDispatchCommandRecordBaseSchema.extend({
19646
- kind: external_exports.literal("stop"),
19647
- payload: SessionDispatchStopCommandPayloadSchema
19648
- })
19649
- ]);
19650
19664
  }
19651
19665
  });
19652
19666
 
@@ -24689,7 +24703,7 @@ var init_package = __esm({
24689
24703
  "package.json"() {
24690
24704
  package_default = {
24691
24705
  name: "@autohq/cli",
24692
- version: "0.1.300",
24706
+ version: "0.1.302",
24693
24707
  license: "SEE LICENSE IN README.md",
24694
24708
  publishConfig: {
24695
24709
  access: "public"
@@ -37120,9 +37134,7 @@ var ClaudeAgentBridgeSessionImpl = class {
37120
37134
  this.input.writeOutput?.(
37121
37135
  `agent_bridge_claude_deferred_flush count=${pending.length}`
37122
37136
  );
37123
- for (const message of pending) {
37124
- this.enqueueUserMessage(message);
37125
- }
37137
+ this.enqueueUserMessage(pending.join("\n\n"));
37126
37138
  }
37127
37139
  async interruptActiveTurnBeforeMessage() {
37128
37140
  if (!this.hasInterruptibleTurn()) {