@autohq/cli 0.1.398 → 0.1.400

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.
@@ -30819,7 +30819,7 @@ Object.assign(lookup, {
30819
30819
  // package.json
30820
30820
  var package_default = {
30821
30821
  name: "@autohq/cli",
30822
- version: "0.1.398",
30822
+ version: "0.1.400",
30823
30823
  license: "SEE LICENSE IN README.md",
30824
30824
  publishConfig: {
30825
30825
  access: "public"
@@ -31832,6 +31832,12 @@ var ChatAttachmentSchema = external_exports.object({
31832
31832
  name: external_exports.string().trim().min(1).optional(),
31833
31833
  mimeType: external_exports.string().trim().min(1).optional(),
31834
31834
  size: external_exports.number().int().nonnegative().optional(),
31835
+ /**
31836
+ * Provider-internal file id (Slack file `id`). Stable across re-reads; used as
31837
+ * the canonical reference for `chat.attachment_download` when present, since
31838
+ * `url_private` can rotate on Slack-initiated file revisions.
31839
+ */
31840
+ fileId: external_exports.string().trim().min(1).optional(),
31835
31841
  /**
31836
31842
  * Provider file URL. May require provider credentials to fetch (Slack
31837
31843
  * `url_private` needs the installation bot token as a bearer header), so
@@ -31849,6 +31855,71 @@ var ChatHistoryMessageSchema = external_exports.object({
31849
31855
  var ChatHistoryToolOutputSchema = external_exports.object({
31850
31856
  messages: external_exports.array(ChatHistoryMessageSchema)
31851
31857
  });
31858
+ var ChatAttachmentDownloadAllowedMimeTypes = [
31859
+ // Images
31860
+ "image/png",
31861
+ "image/jpeg",
31862
+ "image/gif",
31863
+ "image/webp",
31864
+ // Documents
31865
+ "application/pdf",
31866
+ "text/markdown",
31867
+ "text/plain",
31868
+ // Archives
31869
+ "application/zip",
31870
+ "application/gzip",
31871
+ "application/x-gzip",
31872
+ "application/x-tar",
31873
+ "application/x-compressed-tar",
31874
+ // Video
31875
+ "video/mp4",
31876
+ "video/quicktime",
31877
+ "video/webm"
31878
+ ];
31879
+ var ChatAttachmentDownloadAllowedMimeTypeSchema = external_exports.enum(
31880
+ ChatAttachmentDownloadAllowedMimeTypes
31881
+ );
31882
+ var ChatAttachmentDownloadMaxSizeBytesByType = {
31883
+ // Images and small documents: 20 MB.
31884
+ "image/png": 20 * 1024 * 1024,
31885
+ "image/jpeg": 20 * 1024 * 1024,
31886
+ "image/gif": 20 * 1024 * 1024,
31887
+ "image/webp": 20 * 1024 * 1024,
31888
+ "application/pdf": 20 * 1024 * 1024,
31889
+ "text/markdown": 20 * 1024 * 1024,
31890
+ "text/plain": 20 * 1024 * 1024,
31891
+ // Archives: 100 MB.
31892
+ "application/zip": 100 * 1024 * 1024,
31893
+ "application/gzip": 100 * 1024 * 1024,
31894
+ "application/x-gzip": 100 * 1024 * 1024,
31895
+ "application/x-tar": 100 * 1024 * 1024,
31896
+ "application/x-compressed-tar": 100 * 1024 * 1024,
31897
+ // Video: 200 MB.
31898
+ "video/mp4": 200 * 1024 * 1024,
31899
+ "video/quicktime": 200 * 1024 * 1024,
31900
+ "video/webm": 200 * 1024 * 1024
31901
+ };
31902
+ var ChatAttachmentDownloadMaxSizeBytes = 20 * 1024 * 1024;
31903
+ var ChatAttachmentDownloadToolInputSchema = external_exports.object({
31904
+ target: ChatAddressSchema,
31905
+ /** A message/file ref from `chat.history` or a trigger delivery's Attachment line. */
31906
+ attachment: external_exports.object({
31907
+ /** Provider file id (Slack `file.id`), the stable canonical reference. */
31908
+ fileId: external_exports.string().trim().min(1),
31909
+ mimeType: external_exports.string().trim().min(1),
31910
+ size: external_exports.number().int().nonnegative().optional(),
31911
+ name: external_exports.string().trim().min(1).optional()
31912
+ })
31913
+ });
31914
+ var ChatAttachmentDownloadToolOutputSchema = external_exports.object({
31915
+ /** Short-lived, signed URL the session curls from its sandbox to fetch the bytes. */
31916
+ downloadUrl: external_exports.string().url(),
31917
+ /** When the signed download URL expires (ISO 8601). */
31918
+ expiresAt: external_exports.string().datetime(),
31919
+ mimeType: external_exports.string().trim().min(1),
31920
+ size: external_exports.number().int().nonnegative(),
31921
+ filename: external_exports.string().trim().min(1)
31922
+ });
31852
31923
  var ChatIssueParticipantSchema = external_exports.object({
31853
31924
  id: external_exports.string().trim().min(1),
31854
31925
  name: external_exports.string().trim().min(1).optional(),
@@ -33738,6 +33809,7 @@ var SESSION_BINDING_SOURCES = [
33738
33809
  ];
33739
33810
  var SESSION_BINDING_STATUSES = ["active", "released"];
33740
33811
  var SESSION_BINDING_RELEASE_POLICIES = ["manual", "held"];
33812
+ var SESSION_BINDING_CONTINUITIES = ["session", "agent"];
33741
33813
  var SESSION_BINDING_RELEASED_BY = [
33742
33814
  "agent_tool",
33743
33815
  "archive",
@@ -33754,6 +33826,9 @@ var SessionBindingStatusSchema = external_exports.enum(SESSION_BINDING_STATUSES)
33754
33826
  var SessionBindingReleasePolicySchema = external_exports.enum(
33755
33827
  SESSION_BINDING_RELEASE_POLICIES
33756
33828
  );
33829
+ var SessionBindingContinuitySchema = external_exports.enum(
33830
+ SESSION_BINDING_CONTINUITIES
33831
+ );
33757
33832
  var SessionBindingReleasedBySchema = external_exports.enum(
33758
33833
  SESSION_BINDING_RELEASED_BY
33759
33834
  );
@@ -33761,6 +33836,8 @@ var BindingTargetSchema = external_exports.object({
33761
33836
  type: BindingTargetTypeSchema,
33762
33837
  externalId: external_exports.string().min(1)
33763
33838
  });
33839
+ var BINDING_AUTO_BIND_VALUES = ["onAttributedEvent"];
33840
+ var BindingAutoBindSchema = external_exports.enum(BINDING_AUTO_BIND_VALUES);
33764
33841
 
33765
33842
  // ../../packages/schemas/src/tools.ts
33766
33843
  var REMOTE_MCP_TRANSPORTS = ["streamable_http"];
@@ -34422,7 +34499,9 @@ var AgentIdentitySchema = external_exports.object({
34422
34499
  });
34423
34500
  var BINDING_LIFECYCLE_VALUES = ["manual", "held"];
34424
34501
  var BindingLifecycleSpecSchema = external_exports.object({
34425
- lifecycle: external_exports.enum(BINDING_LIFECYCLE_VALUES).default("manual")
34502
+ lifecycle: external_exports.enum(BINDING_LIFECYCLE_VALUES).default("manual"),
34503
+ continuity: external_exports.enum(["session", "agent"]).default("session"),
34504
+ bind: BindingAutoBindSchema.optional()
34426
34505
  }).strict();
34427
34506
  var AgentBindingsSchema = external_exports.record(external_exports.string(), BindingLifecycleSpecSchema).superRefine((bindings, context) => {
34428
34507
  for (const key of Object.keys(bindings)) {
@@ -35009,6 +35088,13 @@ var SessionUploadAttachmentRefSchema = external_exports.object({
35009
35088
  mimeType: external_exports.string().trim().min(1),
35010
35089
  sizeBytes: external_exports.number().int().nonnegative()
35011
35090
  });
35091
+ var StagedSessionUploadRefSchema = external_exports.object({
35092
+ id: external_exports.string().trim().min(1),
35093
+ stagedStorageKey: external_exports.string().trim().min(1),
35094
+ filename: external_exports.string().trim().min(1),
35095
+ mimeType: external_exports.string().trim().min(1),
35096
+ sizeBytes: external_exports.number().int().nonnegative()
35097
+ });
35012
35098
  var SessionUploadDownloadUrlResponseSchema = external_exports.object({
35013
35099
  downloadUrl: external_exports.string().url(),
35014
35100
  expiresAt: external_exports.string().datetime(),
@@ -35232,7 +35318,13 @@ var RunStartWithMessageCommandPayloadSchema = external_exports.object({
35232
35318
  kind: external_exports.literal("startWithMessage"),
35233
35319
  message: external_exports.string().trim().min(1),
35234
35320
  model: AgentModelSelectionSchema.optional(),
35235
- reasoningEffort: AgentReasoningEffortSchema.optional()
35321
+ reasoningEffort: AgentReasoningEffortSchema.optional(),
35322
+ // File uploads claimed from the pre-session staging area (FAB composer).
35323
+ // The session-creation endpoint copies each staged blob to a session-
35324
+ // scoped key and passes the claimed refs here so the start command's
35325
+ // delivery appends attachment download lines — the same path as a normal
35326
+ // message command. Optional so existing callers stay valid.
35327
+ attachments: external_exports.array(SessionUploadAttachmentRefSchema).optional()
35236
35328
  }).strict();
35237
35329
  var SessionPersistedCommandPayloadSchema = external_exports.union([
35238
35330
  RunMessageCommandPayloadSchema,
@@ -35409,7 +35501,17 @@ var ManualSessionRequestSchema = external_exports.object({
35409
35501
  * session's one idempotent start command and never renders as a user chat
35410
35502
  * bubble; the agent's greeting is the first visible content.
35411
35503
  */
35412
- kickoff: external_exports.boolean().optional()
35504
+ kickoff: external_exports.boolean().optional(),
35505
+ /**
35506
+ * Staged (pre-session) file uploads to claim for the session's initial
35507
+ * message. Each ref's `stagedStorageKey` points at a blob uploaded before
35508
+ * the session existed (the FAB composer flow); the session-creation
35509
+ * endpoint copies each to a session-scoped key and attaches the resulting
35510
+ * `SessionUploadAttachmentRef` to the start command so the initial message
35511
+ * carries the files end-to-end — the same delivery path as a normal
35512
+ * session-composer attachment.
35513
+ */
35514
+ attachments: external_exports.array(StagedSessionUploadRefSchema).optional()
35413
35515
  });
35414
35516
  var SessionArchiveRequestSchema = external_exports.object({
35415
35517
  archived: external_exports.boolean()
@@ -35651,6 +35753,10 @@ var OrganizationBillingSettingsSchema = external_exports.object({
35651
35753
  // amount. Both must be set for auto-top-up to arm.
35652
35754
  autoTopUpThresholdUsd: NonNegativeUsdSchema.nullable(),
35653
35755
  autoTopUpAmountUsd: PositiveUsdSchema.nullable(),
35756
+ // System-managed pause marker: set by the circuit breaker when the org's
35757
+ // balance drops below its reserve, cleared by the credit-event resume hook.
35758
+ // Never set by the settings PATCH (the request schema is strict without it).
35759
+ billingPausedAt: external_exports.string().datetime().nullable(),
35654
35760
  // Stripe linkage, set by the payment flow (never by the settings PATCH):
35655
35761
  // the org's Stripe customer, and the saved card auto-top-up charges
35656
35762
  // off-session. A non-null payment method is what "card on file" means.
@@ -36309,6 +36415,7 @@ var RunBindingRecordSchema = external_exports.object({
36309
36415
  source: SessionBindingSourceSchema,
36310
36416
  status: SessionBindingStatusSchema,
36311
36417
  releasePolicy: SessionBindingReleasePolicySchema,
36418
+ continuity: SessionBindingContinuitySchema,
36312
36419
  releasedBy: SessionBindingReleasedBySchema.nullable(),
36313
36420
  payload: JsonValueSchema2.nullable(),
36314
36421
  createdAt: external_exports.string().datetime(),
@@ -36445,9 +36552,12 @@ var RunSummarySchema = external_exports.object({
36445
36552
 
36446
36553
  // ../../packages/schemas/src/session-parks.ts
36447
36554
  var BILLING_SESSION_PARK_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
36555
+ var PROVIDER_OUTAGE_SESSION_PARK_TTL_MS = 6 * 60 * 60 * 1e3;
36556
+ var PROVIDER_OUTAGE_SESSION_PARK_REPROBE_MS = 5 * 6e4;
36448
36557
  var SESSION_PARK_REASON_KINDS = [
36449
36558
  "billing_insufficient_credits",
36450
- "billing_spending_limit_exceeded"
36559
+ "billing_spending_limit_exceeded",
36560
+ "provider_outage"
36451
36561
  ];
36452
36562
  var SESSION_PARK_RESUME_CONDITIONS = [
36453
36563
  "organization_credits_added",
package/dist/index.js CHANGED
@@ -15538,7 +15538,7 @@ var init_auth = __esm({
15538
15538
  });
15539
15539
 
15540
15540
  // ../../packages/schemas/src/chat.ts
15541
- var ChatMessageKindSchema, ChatMessageRefSchema, ChatToolBindingSchema, ChatMessageEventPayloadSchema, ChatReactionEventPayloadSchema, ChatMessageContentSchema, ChatThreadSelectorSchema, SlackChatDestinationSchema, LinearChatDestinationSchema, TelegramChatDestinationSchema, ChatDestinationSchema, SlackChatRecipientSchema, LinearChatRecipientSchema, TelegramChatRecipientSchema, ChatRecipientSchema, SlackChatAddressSchema, LinearChatAddressSchema, TelegramChatAddressSchema, ChatAddressSchema, ChatToolDefaultsSchema, ChatSendToolInputSchema, ChatSendToolOutputSchema, ChatHistoryToolInputSchema, ChatAttachmentSchema, ChatHistoryMessageSchema, ChatHistoryToolOutputSchema, ChatIssueParticipantSchema, ChatIssueNamedRefSchema, ChatIssueRefSchema, ChatIssueSchema, ChatIssueGetToolInputSchema, ChatIssueGetToolOutputSchema, ChatIssueUpdateToolInputSchema, ChatIssueUpdateToolOutputSchema, ChatReplyToolInputSchema, ChatReplyToolOutputSchema, ChatReactionToolInputSchema, ChatReactionToolOutputSchema, ChatSearchResultTypeSchema, ChatSearchToolInputSchema, ChatSearchWorkspaceSchema, SlackChatSearchResultSchema, ChatSearchResultSchema, ChatSearchToolOutputSchema;
15541
+ var ChatMessageKindSchema, ChatMessageRefSchema, ChatToolBindingSchema, ChatMessageEventPayloadSchema, ChatReactionEventPayloadSchema, ChatMessageContentSchema, ChatThreadSelectorSchema, SlackChatDestinationSchema, LinearChatDestinationSchema, TelegramChatDestinationSchema, ChatDestinationSchema, SlackChatRecipientSchema, LinearChatRecipientSchema, TelegramChatRecipientSchema, ChatRecipientSchema, SlackChatAddressSchema, LinearChatAddressSchema, TelegramChatAddressSchema, ChatAddressSchema, ChatToolDefaultsSchema, ChatSendToolInputSchema, ChatSendToolOutputSchema, ChatHistoryToolInputSchema, ChatAttachmentSchema, ChatHistoryMessageSchema, ChatHistoryToolOutputSchema, ChatAttachmentDownloadAllowedMimeTypes, ChatAttachmentDownloadAllowedMimeTypeSchema, ChatAttachmentDownloadMaxSizeBytesByType, ChatAttachmentDownloadMaxSizeBytes, ChatAttachmentDownloadToolInputSchema, ChatAttachmentDownloadToolOutputSchema, ChatIssueParticipantSchema, ChatIssueNamedRefSchema, ChatIssueRefSchema, ChatIssueSchema, ChatIssueGetToolInputSchema, ChatIssueGetToolOutputSchema, ChatIssueUpdateToolInputSchema, ChatIssueUpdateToolOutputSchema, ChatReplyToolInputSchema, ChatReplyToolOutputSchema, ChatReactionToolInputSchema, ChatReactionToolOutputSchema, ChatSearchResultTypeSchema, ChatSearchToolInputSchema, ChatSearchWorkspaceSchema, SlackChatSearchResultSchema, ChatSearchResultSchema, ChatSearchToolOutputSchema;
15542
15542
  var init_chat = __esm({
15543
15543
  "../../packages/schemas/src/chat.ts"() {
15544
15544
  "use strict";
@@ -15748,6 +15748,12 @@ var init_chat = __esm({
15748
15748
  name: external_exports.string().trim().min(1).optional(),
15749
15749
  mimeType: external_exports.string().trim().min(1).optional(),
15750
15750
  size: external_exports.number().int().nonnegative().optional(),
15751
+ /**
15752
+ * Provider-internal file id (Slack file `id`). Stable across re-reads; used as
15753
+ * the canonical reference for `chat.attachment_download` when present, since
15754
+ * `url_private` can rotate on Slack-initiated file revisions.
15755
+ */
15756
+ fileId: external_exports.string().trim().min(1).optional(),
15751
15757
  /**
15752
15758
  * Provider file URL. May require provider credentials to fetch (Slack
15753
15759
  * `url_private` needs the installation bot token as a bearer header), so
@@ -15765,6 +15771,71 @@ var init_chat = __esm({
15765
15771
  ChatHistoryToolOutputSchema = external_exports.object({
15766
15772
  messages: external_exports.array(ChatHistoryMessageSchema)
15767
15773
  });
15774
+ ChatAttachmentDownloadAllowedMimeTypes = [
15775
+ // Images
15776
+ "image/png",
15777
+ "image/jpeg",
15778
+ "image/gif",
15779
+ "image/webp",
15780
+ // Documents
15781
+ "application/pdf",
15782
+ "text/markdown",
15783
+ "text/plain",
15784
+ // Archives
15785
+ "application/zip",
15786
+ "application/gzip",
15787
+ "application/x-gzip",
15788
+ "application/x-tar",
15789
+ "application/x-compressed-tar",
15790
+ // Video
15791
+ "video/mp4",
15792
+ "video/quicktime",
15793
+ "video/webm"
15794
+ ];
15795
+ ChatAttachmentDownloadAllowedMimeTypeSchema = external_exports.enum(
15796
+ ChatAttachmentDownloadAllowedMimeTypes
15797
+ );
15798
+ ChatAttachmentDownloadMaxSizeBytesByType = {
15799
+ // Images and small documents: 20 MB.
15800
+ "image/png": 20 * 1024 * 1024,
15801
+ "image/jpeg": 20 * 1024 * 1024,
15802
+ "image/gif": 20 * 1024 * 1024,
15803
+ "image/webp": 20 * 1024 * 1024,
15804
+ "application/pdf": 20 * 1024 * 1024,
15805
+ "text/markdown": 20 * 1024 * 1024,
15806
+ "text/plain": 20 * 1024 * 1024,
15807
+ // Archives: 100 MB.
15808
+ "application/zip": 100 * 1024 * 1024,
15809
+ "application/gzip": 100 * 1024 * 1024,
15810
+ "application/x-gzip": 100 * 1024 * 1024,
15811
+ "application/x-tar": 100 * 1024 * 1024,
15812
+ "application/x-compressed-tar": 100 * 1024 * 1024,
15813
+ // Video: 200 MB.
15814
+ "video/mp4": 200 * 1024 * 1024,
15815
+ "video/quicktime": 200 * 1024 * 1024,
15816
+ "video/webm": 200 * 1024 * 1024
15817
+ };
15818
+ ChatAttachmentDownloadMaxSizeBytes = 20 * 1024 * 1024;
15819
+ ChatAttachmentDownloadToolInputSchema = external_exports.object({
15820
+ target: ChatAddressSchema,
15821
+ /** A message/file ref from `chat.history` or a trigger delivery's Attachment line. */
15822
+ attachment: external_exports.object({
15823
+ /** Provider file id (Slack `file.id`), the stable canonical reference. */
15824
+ fileId: external_exports.string().trim().min(1),
15825
+ mimeType: external_exports.string().trim().min(1),
15826
+ size: external_exports.number().int().nonnegative().optional(),
15827
+ name: external_exports.string().trim().min(1).optional()
15828
+ })
15829
+ });
15830
+ ChatAttachmentDownloadToolOutputSchema = external_exports.object({
15831
+ /** Short-lived, signed URL the session curls from its sandbox to fetch the bytes. */
15832
+ downloadUrl: external_exports.string().url(),
15833
+ /** When the signed download URL expires (ISO 8601). */
15834
+ expiresAt: external_exports.string().datetime(),
15835
+ mimeType: external_exports.string().trim().min(1),
15836
+ size: external_exports.number().int().nonnegative(),
15837
+ filename: external_exports.string().trim().min(1)
15838
+ });
15768
15839
  ChatIssueParticipantSchema = external_exports.object({
15769
15840
  id: external_exports.string().trim().min(1),
15770
15841
  name: external_exports.string().trim().min(1).optional(),
@@ -17824,7 +17895,7 @@ var init_secrets = __esm({
17824
17895
  });
17825
17896
 
17826
17897
  // ../../packages/schemas/src/session-bindings.ts
17827
- var BINDING_TARGET_TYPES, TRIGGER_BINDING_TARGET_TYPES, SESSION_BINDING_SOURCES, SESSION_BINDING_STATUSES, SESSION_BINDING_RELEASE_POLICIES, SESSION_BINDING_RELEASED_BY, BindingTargetTypeSchema, TriggerBindingTargetTypeSchema, SessionBindingSourceSchema, SessionBindingStatusSchema, SessionBindingReleasePolicySchema, SessionBindingReleasedBySchema, BindingTargetSchema;
17898
+ var BINDING_TARGET_TYPES, TRIGGER_BINDING_TARGET_TYPES, SESSION_BINDING_SOURCES, SESSION_BINDING_STATUSES, SESSION_BINDING_RELEASE_POLICIES, SESSION_BINDING_CONTINUITIES, SESSION_BINDING_RELEASED_BY, BindingTargetTypeSchema, TriggerBindingTargetTypeSchema, SessionBindingSourceSchema, SessionBindingStatusSchema, SessionBindingReleasePolicySchema, SessionBindingContinuitySchema, SessionBindingReleasedBySchema, BindingTargetSchema, BINDING_AUTO_BIND_VALUES, BindingAutoBindSchema;
17828
17899
  var init_session_bindings = __esm({
17829
17900
  "../../packages/schemas/src/session-bindings.ts"() {
17830
17901
  "use strict";
@@ -17850,6 +17921,7 @@ var init_session_bindings = __esm({
17850
17921
  ];
17851
17922
  SESSION_BINDING_STATUSES = ["active", "released"];
17852
17923
  SESSION_BINDING_RELEASE_POLICIES = ["manual", "held"];
17924
+ SESSION_BINDING_CONTINUITIES = ["session", "agent"];
17853
17925
  SESSION_BINDING_RELEASED_BY = [
17854
17926
  "agent_tool",
17855
17927
  "archive",
@@ -17866,6 +17938,9 @@ var init_session_bindings = __esm({
17866
17938
  SessionBindingReleasePolicySchema = external_exports.enum(
17867
17939
  SESSION_BINDING_RELEASE_POLICIES
17868
17940
  );
17941
+ SessionBindingContinuitySchema = external_exports.enum(
17942
+ SESSION_BINDING_CONTINUITIES
17943
+ );
17869
17944
  SessionBindingReleasedBySchema = external_exports.enum(
17870
17945
  SESSION_BINDING_RELEASED_BY
17871
17946
  );
@@ -17873,6 +17948,8 @@ var init_session_bindings = __esm({
17873
17948
  type: BindingTargetTypeSchema,
17874
17949
  externalId: external_exports.string().min(1)
17875
17950
  });
17951
+ BINDING_AUTO_BIND_VALUES = ["onAttributedEvent"];
17952
+ BindingAutoBindSchema = external_exports.enum(BINDING_AUTO_BIND_VALUES);
17876
17953
  }
17877
17954
  });
17878
17955
 
@@ -18847,7 +18924,9 @@ var init_agents = __esm({
18847
18924
  });
18848
18925
  BINDING_LIFECYCLE_VALUES = ["manual", "held"];
18849
18926
  BindingLifecycleSpecSchema = external_exports.object({
18850
- lifecycle: external_exports.enum(BINDING_LIFECYCLE_VALUES).default("manual")
18927
+ lifecycle: external_exports.enum(BINDING_LIFECYCLE_VALUES).default("manual"),
18928
+ continuity: external_exports.enum(["session", "agent"]).default("session"),
18929
+ bind: BindingAutoBindSchema.optional()
18851
18930
  }).strict();
18852
18931
  AgentBindingsSchema = external_exports.record(external_exports.string(), BindingLifecycleSpecSchema).superRefine((bindings, context) => {
18853
18932
  for (const key of Object.keys(bindings)) {
@@ -19226,7 +19305,7 @@ var init_pool_replace = __esm({
19226
19305
  });
19227
19306
 
19228
19307
  // ../../packages/schemas/src/session-uploads.ts
19229
- var SESSION_UPLOAD_MAX_SIZE_BYTES, SESSION_UPLOAD_DOWNLOAD_TTL_MS, SessionUploadPresignRequestSchema, SessionUploadPresignResponseSchema, SessionUploadAttachmentRefSchema, SessionUploadDownloadUrlResponseSchema;
19308
+ var SESSION_UPLOAD_MAX_SIZE_BYTES, SESSION_UPLOAD_DOWNLOAD_TTL_MS, SessionUploadPresignRequestSchema, SessionUploadPresignResponseSchema, SessionUploadAttachmentRefSchema, StagedSessionUploadRefSchema, SessionUploadDownloadUrlResponseSchema;
19230
19309
  var init_session_uploads = __esm({
19231
19310
  "../../packages/schemas/src/session-uploads.ts"() {
19232
19311
  "use strict";
@@ -19255,6 +19334,13 @@ var init_session_uploads = __esm({
19255
19334
  mimeType: external_exports.string().trim().min(1),
19256
19335
  sizeBytes: external_exports.number().int().nonnegative()
19257
19336
  });
19337
+ StagedSessionUploadRefSchema = external_exports.object({
19338
+ id: external_exports.string().trim().min(1),
19339
+ stagedStorageKey: external_exports.string().trim().min(1),
19340
+ filename: external_exports.string().trim().min(1),
19341
+ mimeType: external_exports.string().trim().min(1),
19342
+ sizeBytes: external_exports.number().int().nonnegative()
19343
+ });
19258
19344
  SessionUploadDownloadUrlResponseSchema = external_exports.object({
19259
19345
  downloadUrl: external_exports.string().url(),
19260
19346
  expiresAt: external_exports.string().datetime(),
@@ -19492,7 +19578,13 @@ var init_session_commands = __esm({
19492
19578
  kind: external_exports.literal("startWithMessage"),
19493
19579
  message: external_exports.string().trim().min(1),
19494
19580
  model: AgentModelSelectionSchema.optional(),
19495
- reasoningEffort: AgentReasoningEffortSchema.optional()
19581
+ reasoningEffort: AgentReasoningEffortSchema.optional(),
19582
+ // File uploads claimed from the pre-session staging area (FAB composer).
19583
+ // The session-creation endpoint copies each staged blob to a session-
19584
+ // scoped key and passes the claimed refs here so the start command's
19585
+ // delivery appends attachment download lines — the same path as a normal
19586
+ // message command. Optional so existing callers stay valid.
19587
+ attachments: external_exports.array(SessionUploadAttachmentRefSchema).optional()
19496
19588
  }).strict();
19497
19589
  SessionPersistedCommandPayloadSchema = external_exports.union([
19498
19590
  RunMessageCommandPayloadSchema,
@@ -19634,6 +19726,7 @@ var init_sessions = __esm({
19634
19726
  init_primitives();
19635
19727
  init_requester();
19636
19728
  init_session_commands();
19729
+ init_session_uploads();
19637
19730
  init_tools();
19638
19731
  SESSION_STATUSES = [
19639
19732
  "queued",
@@ -19691,7 +19784,17 @@ var init_sessions = __esm({
19691
19784
  * session's one idempotent start command and never renders as a user chat
19692
19785
  * bubble; the agent's greeting is the first visible content.
19693
19786
  */
19694
- kickoff: external_exports.boolean().optional()
19787
+ kickoff: external_exports.boolean().optional(),
19788
+ /**
19789
+ * Staged (pre-session) file uploads to claim for the session's initial
19790
+ * message. Each ref's `stagedStorageKey` points at a blob uploaded before
19791
+ * the session existed (the FAB composer flow); the session-creation
19792
+ * endpoint copies each to a session-scoped key and attaches the resulting
19793
+ * `SessionUploadAttachmentRef` to the start command so the initial message
19794
+ * carries the files end-to-end — the same delivery path as a normal
19795
+ * session-composer attachment.
19796
+ */
19797
+ attachments: external_exports.array(StagedSessionUploadRefSchema).optional()
19695
19798
  });
19696
19799
  SessionArchiveRequestSchema = external_exports.object({
19697
19800
  archived: external_exports.boolean()
@@ -19964,6 +20067,10 @@ var init_billing = __esm({
19964
20067
  // amount. Both must be set for auto-top-up to arm.
19965
20068
  autoTopUpThresholdUsd: NonNegativeUsdSchema.nullable(),
19966
20069
  autoTopUpAmountUsd: PositiveUsdSchema.nullable(),
20070
+ // System-managed pause marker: set by the circuit breaker when the org's
20071
+ // balance drops below its reserve, cleared by the credit-event resume hook.
20072
+ // Never set by the settings PATCH (the request schema is strict without it).
20073
+ billingPausedAt: external_exports.string().datetime().nullable(),
19967
20074
  // Stripe linkage, set by the payment flow (never by the settings PATCH):
19968
20075
  // the org's Stripe customer, and the saved card auto-top-up charges
19969
20076
  // off-session. A non-null payment method is what "card on file" means.
@@ -20707,6 +20814,7 @@ var init_session_introspection = __esm({
20707
20814
  source: SessionBindingSourceSchema,
20708
20815
  status: SessionBindingStatusSchema,
20709
20816
  releasePolicy: SessionBindingReleasePolicySchema,
20817
+ continuity: SessionBindingContinuitySchema,
20710
20818
  releasedBy: SessionBindingReleasedBySchema.nullable(),
20711
20819
  payload: JsonValueSchema.nullable(),
20712
20820
  createdAt: external_exports.string().datetime(),
@@ -20844,16 +20952,19 @@ var init_session_introspection = __esm({
20844
20952
  });
20845
20953
 
20846
20954
  // ../../packages/schemas/src/session-parks.ts
20847
- var BILLING_SESSION_PARK_TTL_MS, SESSION_PARK_REASON_KINDS, SESSION_PARK_RESUME_CONDITIONS, SESSION_PARK_RESOLUTIONS, SessionParkReasonKindSchema, SessionParkResumeConditionSchema, SessionParkResolutionSchema, SessionParkRecordSchema;
20955
+ var BILLING_SESSION_PARK_TTL_MS, PROVIDER_OUTAGE_SESSION_PARK_TTL_MS, PROVIDER_OUTAGE_SESSION_PARK_REPROBE_MS, SESSION_PARK_REASON_KINDS, SESSION_PARK_RESUME_CONDITIONS, SESSION_PARK_RESOLUTIONS, SessionParkReasonKindSchema, SessionParkResumeConditionSchema, SessionParkResolutionSchema, SessionParkRecordSchema;
20848
20956
  var init_session_parks = __esm({
20849
20957
  "../../packages/schemas/src/session-parks.ts"() {
20850
20958
  "use strict";
20851
20959
  init_zod();
20852
20960
  init_ids();
20853
20961
  BILLING_SESSION_PARK_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
20962
+ PROVIDER_OUTAGE_SESSION_PARK_TTL_MS = 6 * 60 * 60 * 1e3;
20963
+ PROVIDER_OUTAGE_SESSION_PARK_REPROBE_MS = 5 * 6e4;
20854
20964
  SESSION_PARK_REASON_KINDS = [
20855
20965
  "billing_insufficient_credits",
20856
- "billing_spending_limit_exceeded"
20966
+ "billing_spending_limit_exceeded",
20967
+ "provider_outage"
20857
20968
  ];
20858
20969
  SESSION_PARK_RESUME_CONDITIONS = [
20859
20970
  "organization_credits_added",
@@ -34961,7 +35072,7 @@ var init_package = __esm({
34961
35072
  "package.json"() {
34962
35073
  package_default = {
34963
35074
  name: "@autohq/cli",
34964
- version: "0.1.398",
35075
+ version: "0.1.400",
34965
35076
  license: "SEE LICENSE IN README.md",
34966
35077
  publishConfig: {
34967
35078
  access: "public"
@@ -36801,7 +36912,8 @@ function readApplyDocument(path2, document, fileIndex, contextVariables) {
36801
36912
  );
36802
36913
  return result.resources.map((resource) => ({
36803
36914
  resource,
36804
- generatedFromAgent: resource !== result.resource
36915
+ generatedFromAgent: resource !== result.resource,
36916
+ sourcePath: normalizeSourcePath(path2)
36805
36917
  }));
36806
36918
  }
36807
36919
  function validateAgentFragmentDocument(document, path2, context) {
@@ -36850,12 +36962,16 @@ function dedupeGeneratedResources(records) {
36850
36962
  }
36851
36963
  if (stableResource(resource) !== stableResource(existing.resource)) {
36852
36964
  throw new Error(
36853
- `Conflicting generated resource "${key}" from agent authoring. Inline generated resources must be identical when they share a name.`
36965
+ conflictingGeneratedResourceMessage(key, existing, record2)
36854
36966
  );
36855
36967
  }
36856
36968
  }
36857
36969
  return deduped.map((record2) => record2.resource);
36858
36970
  }
36971
+ function conflictingGeneratedResourceMessage(key, existing, record2) {
36972
+ const location = existing.sourcePath === record2.sourcePath ? `defined more than once in "${existing.sourcePath}" with different content` : `defined differently in "${existing.sourcePath}" and "${record2.sourcePath}"`;
36973
+ return `Conflicting generated resource "${key}" from agent authoring: ${location}. Inline generated resources must be identical when they share a name.`;
36974
+ }
36859
36975
  function compileAgentDocumentValue(document, path2, fileIndex, contextVariables) {
36860
36976
  return compileAgentDraftResources(
36861
36977
  compileAgentDocument2(document, path2, {
@@ -37217,7 +37333,8 @@ function readProjectApplyDirectorySource(input) {
37217
37333
  resourceRecords.push(
37218
37334
  ...request.resources.map((resource) => ({
37219
37335
  resource,
37220
- generatedFromAgent: resource.kind !== RESOURCE_KIND_AGENT
37336
+ generatedFromAgent: resource.kind !== RESOURCE_KIND_AGENT,
37337
+ sourcePath: file2.path
37221
37338
  }))
37222
37339
  );
37223
37340
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.398",
3
+ "version": "0.1.400",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"