@autohq/cli 0.1.399 → 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.399",
30822
+ version: "0.1.400",
30823
30823
  license: "SEE LICENSE IN README.md",
30824
30824
  publishConfig: {
30825
30825
  access: "public"
@@ -33809,6 +33809,7 @@ var SESSION_BINDING_SOURCES = [
33809
33809
  ];
33810
33810
  var SESSION_BINDING_STATUSES = ["active", "released"];
33811
33811
  var SESSION_BINDING_RELEASE_POLICIES = ["manual", "held"];
33812
+ var SESSION_BINDING_CONTINUITIES = ["session", "agent"];
33812
33813
  var SESSION_BINDING_RELEASED_BY = [
33813
33814
  "agent_tool",
33814
33815
  "archive",
@@ -33825,6 +33826,9 @@ var SessionBindingStatusSchema = external_exports.enum(SESSION_BINDING_STATUSES)
33825
33826
  var SessionBindingReleasePolicySchema = external_exports.enum(
33826
33827
  SESSION_BINDING_RELEASE_POLICIES
33827
33828
  );
33829
+ var SessionBindingContinuitySchema = external_exports.enum(
33830
+ SESSION_BINDING_CONTINUITIES
33831
+ );
33828
33832
  var SessionBindingReleasedBySchema = external_exports.enum(
33829
33833
  SESSION_BINDING_RELEASED_BY
33830
33834
  );
@@ -34496,6 +34500,7 @@ var AgentIdentitySchema = external_exports.object({
34496
34500
  var BINDING_LIFECYCLE_VALUES = ["manual", "held"];
34497
34501
  var BindingLifecycleSpecSchema = external_exports.object({
34498
34502
  lifecycle: external_exports.enum(BINDING_LIFECYCLE_VALUES).default("manual"),
34503
+ continuity: external_exports.enum(["session", "agent"]).default("session"),
34499
34504
  bind: BindingAutoBindSchema.optional()
34500
34505
  }).strict();
34501
34506
  var AgentBindingsSchema = external_exports.record(external_exports.string(), BindingLifecycleSpecSchema).superRefine((bindings, context) => {
@@ -35083,6 +35088,13 @@ var SessionUploadAttachmentRefSchema = external_exports.object({
35083
35088
  mimeType: external_exports.string().trim().min(1),
35084
35089
  sizeBytes: external_exports.number().int().nonnegative()
35085
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
+ });
35086
35098
  var SessionUploadDownloadUrlResponseSchema = external_exports.object({
35087
35099
  downloadUrl: external_exports.string().url(),
35088
35100
  expiresAt: external_exports.string().datetime(),
@@ -35306,7 +35318,13 @@ var RunStartWithMessageCommandPayloadSchema = external_exports.object({
35306
35318
  kind: external_exports.literal("startWithMessage"),
35307
35319
  message: external_exports.string().trim().min(1),
35308
35320
  model: AgentModelSelectionSchema.optional(),
35309
- 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()
35310
35328
  }).strict();
35311
35329
  var SessionPersistedCommandPayloadSchema = external_exports.union([
35312
35330
  RunMessageCommandPayloadSchema,
@@ -35483,7 +35501,17 @@ var ManualSessionRequestSchema = external_exports.object({
35483
35501
  * session's one idempotent start command and never renders as a user chat
35484
35502
  * bubble; the agent's greeting is the first visible content.
35485
35503
  */
35486
- 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()
35487
35515
  });
35488
35516
  var SessionArchiveRequestSchema = external_exports.object({
35489
35517
  archived: external_exports.boolean()
@@ -36387,6 +36415,7 @@ var RunBindingRecordSchema = external_exports.object({
36387
36415
  source: SessionBindingSourceSchema,
36388
36416
  status: SessionBindingStatusSchema,
36389
36417
  releasePolicy: SessionBindingReleasePolicySchema,
36418
+ continuity: SessionBindingContinuitySchema,
36390
36419
  releasedBy: SessionBindingReleasedBySchema.nullable(),
36391
36420
  payload: JsonValueSchema2.nullable(),
36392
36421
  createdAt: external_exports.string().datetime(),
package/dist/index.js CHANGED
@@ -17895,7 +17895,7 @@ var init_secrets = __esm({
17895
17895
  });
17896
17896
 
17897
17897
  // ../../packages/schemas/src/session-bindings.ts
17898
- 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, BINDING_AUTO_BIND_VALUES, BindingAutoBindSchema;
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;
17899
17899
  var init_session_bindings = __esm({
17900
17900
  "../../packages/schemas/src/session-bindings.ts"() {
17901
17901
  "use strict";
@@ -17921,6 +17921,7 @@ var init_session_bindings = __esm({
17921
17921
  ];
17922
17922
  SESSION_BINDING_STATUSES = ["active", "released"];
17923
17923
  SESSION_BINDING_RELEASE_POLICIES = ["manual", "held"];
17924
+ SESSION_BINDING_CONTINUITIES = ["session", "agent"];
17924
17925
  SESSION_BINDING_RELEASED_BY = [
17925
17926
  "agent_tool",
17926
17927
  "archive",
@@ -17937,6 +17938,9 @@ var init_session_bindings = __esm({
17937
17938
  SessionBindingReleasePolicySchema = external_exports.enum(
17938
17939
  SESSION_BINDING_RELEASE_POLICIES
17939
17940
  );
17941
+ SessionBindingContinuitySchema = external_exports.enum(
17942
+ SESSION_BINDING_CONTINUITIES
17943
+ );
17940
17944
  SessionBindingReleasedBySchema = external_exports.enum(
17941
17945
  SESSION_BINDING_RELEASED_BY
17942
17946
  );
@@ -18921,6 +18925,7 @@ var init_agents = __esm({
18921
18925
  BINDING_LIFECYCLE_VALUES = ["manual", "held"];
18922
18926
  BindingLifecycleSpecSchema = external_exports.object({
18923
18927
  lifecycle: external_exports.enum(BINDING_LIFECYCLE_VALUES).default("manual"),
18928
+ continuity: external_exports.enum(["session", "agent"]).default("session"),
18924
18929
  bind: BindingAutoBindSchema.optional()
18925
18930
  }).strict();
18926
18931
  AgentBindingsSchema = external_exports.record(external_exports.string(), BindingLifecycleSpecSchema).superRefine((bindings, context) => {
@@ -19300,7 +19305,7 @@ var init_pool_replace = __esm({
19300
19305
  });
19301
19306
 
19302
19307
  // ../../packages/schemas/src/session-uploads.ts
19303
- 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;
19304
19309
  var init_session_uploads = __esm({
19305
19310
  "../../packages/schemas/src/session-uploads.ts"() {
19306
19311
  "use strict";
@@ -19329,6 +19334,13 @@ var init_session_uploads = __esm({
19329
19334
  mimeType: external_exports.string().trim().min(1),
19330
19335
  sizeBytes: external_exports.number().int().nonnegative()
19331
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
+ });
19332
19344
  SessionUploadDownloadUrlResponseSchema = external_exports.object({
19333
19345
  downloadUrl: external_exports.string().url(),
19334
19346
  expiresAt: external_exports.string().datetime(),
@@ -19566,7 +19578,13 @@ var init_session_commands = __esm({
19566
19578
  kind: external_exports.literal("startWithMessage"),
19567
19579
  message: external_exports.string().trim().min(1),
19568
19580
  model: AgentModelSelectionSchema.optional(),
19569
- 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()
19570
19588
  }).strict();
19571
19589
  SessionPersistedCommandPayloadSchema = external_exports.union([
19572
19590
  RunMessageCommandPayloadSchema,
@@ -19708,6 +19726,7 @@ var init_sessions = __esm({
19708
19726
  init_primitives();
19709
19727
  init_requester();
19710
19728
  init_session_commands();
19729
+ init_session_uploads();
19711
19730
  init_tools();
19712
19731
  SESSION_STATUSES = [
19713
19732
  "queued",
@@ -19765,7 +19784,17 @@ var init_sessions = __esm({
19765
19784
  * session's one idempotent start command and never renders as a user chat
19766
19785
  * bubble; the agent's greeting is the first visible content.
19767
19786
  */
19768
- 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()
19769
19798
  });
19770
19799
  SessionArchiveRequestSchema = external_exports.object({
19771
19800
  archived: external_exports.boolean()
@@ -20785,6 +20814,7 @@ var init_session_introspection = __esm({
20785
20814
  source: SessionBindingSourceSchema,
20786
20815
  status: SessionBindingStatusSchema,
20787
20816
  releasePolicy: SessionBindingReleasePolicySchema,
20817
+ continuity: SessionBindingContinuitySchema,
20788
20818
  releasedBy: SessionBindingReleasedBySchema.nullable(),
20789
20819
  payload: JsonValueSchema.nullable(),
20790
20820
  createdAt: external_exports.string().datetime(),
@@ -35042,7 +35072,7 @@ var init_package = __esm({
35042
35072
  "package.json"() {
35043
35073
  package_default = {
35044
35074
  name: "@autohq/cli",
35045
- version: "0.1.399",
35075
+ version: "0.1.400",
35046
35076
  license: "SEE LICENSE IN README.md",
35047
35077
  publishConfig: {
35048
35078
  access: "public"
@@ -36882,7 +36912,8 @@ function readApplyDocument(path2, document, fileIndex, contextVariables) {
36882
36912
  );
36883
36913
  return result.resources.map((resource) => ({
36884
36914
  resource,
36885
- generatedFromAgent: resource !== result.resource
36915
+ generatedFromAgent: resource !== result.resource,
36916
+ sourcePath: normalizeSourcePath(path2)
36886
36917
  }));
36887
36918
  }
36888
36919
  function validateAgentFragmentDocument(document, path2, context) {
@@ -36931,12 +36962,16 @@ function dedupeGeneratedResources(records) {
36931
36962
  }
36932
36963
  if (stableResource(resource) !== stableResource(existing.resource)) {
36933
36964
  throw new Error(
36934
- `Conflicting generated resource "${key}" from agent authoring. Inline generated resources must be identical when they share a name.`
36965
+ conflictingGeneratedResourceMessage(key, existing, record2)
36935
36966
  );
36936
36967
  }
36937
36968
  }
36938
36969
  return deduped.map((record2) => record2.resource);
36939
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
+ }
36940
36975
  function compileAgentDocumentValue(document, path2, fileIndex, contextVariables) {
36941
36976
  return compileAgentDraftResources(
36942
36977
  compileAgentDocument2(document, path2, {
@@ -37298,7 +37333,8 @@ function readProjectApplyDirectorySource(input) {
37298
37333
  resourceRecords.push(
37299
37334
  ...request.resources.map((resource) => ({
37300
37335
  resource,
37301
- generatedFromAgent: resource.kind !== RESOURCE_KIND_AGENT
37336
+ generatedFromAgent: resource.kind !== RESOURCE_KIND_AGENT,
37337
+ sourcePath: file2.path
37302
37338
  }))
37303
37339
  );
37304
37340
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.399",
3
+ "version": "0.1.400",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"