@ellipsis-dev/sdk 0.25.0 → 0.27.0

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.
@@ -808,7 +808,8 @@ interface paths {
808
808
  *
809
809
  * `findings` and `configuration` are omitted (counters only). Each
810
810
  * filter is a set: repeat `repository`, `pull_request_number`, or
811
- * `status` to match any of several values.
811
+ * `status` to match any of several values. `start` and `end` bound
812
+ * the review's creation time.
812
813
  *
813
814
  * Webhook-created reviews appear here too, so this answers "show
814
815
  * me every review on this PR".
@@ -942,8 +943,9 @@ interface paths {
942
943
  *
943
944
  * The daily driver: a prompt, optionally where to run it
944
945
  * (`environment`) and the run's own settings, in the AutomationConfig
945
- * vocabulary. Anything omitted comes from the organization's
946
- * settings — default model, default environment, budget — so
946
+ * vocabulary. What you send is what runs: omit `environment` and the
947
+ * session runs in the built-in basic sandbox. A missing model or
948
+ * budget comes from the organization's settings, so
947
949
  * `{"prompt": "..."}` alone is a complete request. `prompt` is the
948
950
  * first message; omit it and the session starts idle, waiting for
949
951
  * one. 400 when `interactive` is false and there is no prompt, or
@@ -1175,19 +1177,18 @@ interface paths {
1175
1177
  * Get Organization Settings
1176
1178
  * @description Get the organization settings.
1177
1179
  *
1178
- * The default model and default environment every session falls
1179
- * back to when neither its request nor its automation names one,
1180
- * and the per-session budget ceiling no session may exceed.
1180
+ * The default model every session falls back to when neither its
1181
+ * request nor its automation names one, and the per-session budget
1182
+ * ceiling no session may exceed.
1181
1183
  */
1182
1184
  get: operations['get_organization_settings'];
1183
1185
  /**
1184
1186
  * Set Organization Settings
1185
1187
  * @description Set the organization settings.
1186
1188
  *
1187
- * Replaces all three: `default_model` accepts an alias or canonical
1188
- * id and is stored canonical; `default_environment` accepts a name
1189
- * or `env_` id and is stored as the id; `budget_ceiling.session` is
1190
- * in US dollars, at most the platform ceiling. Null clears each.
1189
+ * Replaces both: `default_model` accepts an alias or canonical id
1190
+ * and is stored canonical; `budget_ceiling.session` is in US
1191
+ * dollars, at most the platform ceiling. Null clears each.
1191
1192
  * Refused for sandbox tokens (potentially prompt-injected code must
1192
1193
  * not repoint the organization's defaults).
1193
1194
  */
@@ -2613,7 +2614,7 @@ interface components {
2613
2614
  * @description Parameters for creating an automation.
2614
2615
  */
2615
2616
  CreateAutomationRequest: {
2616
- /** @description The automation's definition, in the same schema as a YAML file under agents/. */
2617
+ /** @description The automation's definition, in the same schema as a YAML file under .ellipsis/. */
2617
2618
  automation: components['schemas']['AutomationConfig'];
2618
2619
  };
2619
2620
  /**
@@ -3698,6 +3699,24 @@ interface components {
3698
3699
  * @enum {string}
3699
3700
  */
3700
3701
  Harness: 'claude_code' | 'codex';
3702
+ /**
3703
+ * ImageAttachment
3704
+ * @description One image on a request body, base64 inline (the Claude Code paste
3705
+ * shape). Shared by `POST /v1/sessions` and `POST /v1/sessions/{id}/messages`.
3706
+ */
3707
+ ImageAttachment: {
3708
+ /**
3709
+ * Data
3710
+ * @description The raw image bytes, base64-encoded. 5 MiB cap.
3711
+ */
3712
+ data: string;
3713
+ /**
3714
+ * Media Type
3715
+ * @description The image's MIME type: image/png, image/jpeg, image/gif, or image/webp. The bytes must match.
3716
+ * @enum {string}
3717
+ */
3718
+ media_type: 'image/png' | 'image/jpeg' | 'image/gif' | 'image/webp';
3719
+ };
3701
3720
  /**
3702
3721
  * IngestTranscriptRequest
3703
3722
  * @description A batch of raw transcript lines pushed from inside a session's
@@ -3918,7 +3937,7 @@ interface components {
3918
3937
  LinkAutomationRequest: {
3919
3938
  /**
3920
3939
  * Path
3921
- * @description File path within the repo. Omit for the default agents/<slug>.yaml; if set it must be a location the sync scans (a .yaml/.yml file under agents/, .agents/, ellipsis/, or .ellipsis/ at any depth).
3940
+ * @description File path within the repo. Omit for the default .ellipsis/automations/<slug>.yaml; if set it must be a location the sync scans (a .yaml/.yml file under .ellipsis/ at any depth; in the repository named .ellipsis the repo root is that directory).
3922
3941
  */
3923
3942
  path?: string | null;
3924
3943
  /**
@@ -4287,11 +4306,6 @@ interface components {
4287
4306
  OrganizationSettings: {
4288
4307
  /** @description The organization's spend ceilings. */
4289
4308
  budget_ceiling?: components['schemas']['BudgetCeiling'];
4290
- /**
4291
- * Default Environment
4292
- * @description The saved environment sessions run in when neither their request nor their automation names one: an `env_...` id or the environment's name on write, always the id on read. Null means the built-in basic sandbox.
4293
- */
4294
- default_environment?: string | null;
4295
4309
  /**
4296
4310
  * Default Model
4297
4311
  * @description Canonical model id every session falls back to when neither its request nor its automation names one, or null when unset (sessions then run the platform default).
@@ -6041,9 +6055,14 @@ interface components {
6041
6055
  * @description Optional retry-safety key, unique per (session, key): a retry with the same key returns the original message — no duplicate message, no double turn, no double spend. The SDK auto-generates one per send.
6042
6056
  */
6043
6057
  idempotency_key?: string | null;
6058
+ /**
6059
+ * Images
6060
+ * @description Images attached to the message, base64 inline — what a paste into Claude Code sends. Each becomes an `[Image #N]` placeholder in the stored body and an image block the model sees on the turn this message opens. Up to 10, 5 MiB each; PNG, JPEG, GIF, or WebP. Claude harness only.
6061
+ */
6062
+ images?: components['schemas']['ImageAttachment'][];
6044
6063
  /**
6045
6064
  * Message
6046
- * @description The message text.
6065
+ * @description The message text. May be empty when `images` is not.
6047
6066
  */
6048
6067
  message: string;
6049
6068
  };
@@ -6150,7 +6169,7 @@ interface components {
6150
6169
  prompting: components['schemas']['SessionPrompting'];
6151
6170
  /** @description Lifecycle state of the durable conversation, or null for sessions without one. */
6152
6171
  session_state?: components['schemas']['SessionState'] | null;
6153
- /** @description Where the session came from (e.g. react, manual, api, cli, mention, cron). */
6172
+ /** @description Where the session came from (e.g. react, web, api, cli, mention, cron). */
6154
6173
  source: components['schemas']['SessionSource'];
6155
6174
  /** @description Execution status of the session. */
6156
6175
  status: components['schemas']['SessionStatus'];
@@ -6343,7 +6362,7 @@ interface components {
6343
6362
  * @description Identifier of the saved environment the session's config resolved. Null for an inline environment block or the built-in basic sandbox.
6344
6363
  */
6345
6364
  environment_id?: string | null;
6346
- /** @description How the environment was chosen (request, agent_config, repo_default, account_default, platform_default). Null when the config carried its own inline environment. */
6365
+ /** @description How the environment was chosen (request, agent_config, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment. */
6347
6366
  source?: components['schemas']['EnvironmentSource'] | null;
6348
6367
  };
6349
6368
  /**
@@ -6536,7 +6555,7 @@ interface components {
6536
6555
  author?: string | null;
6537
6556
  /**
6538
6557
  * Body
6539
- * @description The message text.
6558
+ * @description The message text, with one `[Image #N]` placeholder per attached image.
6540
6559
  */
6541
6560
  body: string;
6542
6561
  /**
@@ -6565,6 +6584,11 @@ interface components {
6565
6584
  * @description Unique identifier of the message.
6566
6585
  */
6567
6586
  id: string;
6587
+ /**
6588
+ * Images
6589
+ * @description Images attached to the message, metadata only: index, media type, size. The bytes go to the model, never over the stream.
6590
+ */
6591
+ images?: components['schemas']['SessionMessageImage'][];
6568
6592
  /**
6569
6593
  * Sender Attribution Id
6570
6594
  * @description Identifier of the principal that sent the message, if attributed.
@@ -6580,6 +6604,28 @@ interface components {
6580
6604
  /** @description Delivery status of the message. */
6581
6605
  status: components['schemas']['SessionMessageStatus'];
6582
6606
  };
6607
+ /**
6608
+ * SessionMessageImage
6609
+ * @description One image on a message, metadata only. `index` is the N in the
6610
+ * `[Image #N]` placeholder in the message body.
6611
+ */
6612
+ SessionMessageImage: {
6613
+ /**
6614
+ * Index
6615
+ * @description 1-based position: the N in `[Image #N]`.
6616
+ */
6617
+ index: number;
6618
+ /**
6619
+ * Media Type
6620
+ * @description The image's MIME type.
6621
+ */
6622
+ media_type: string;
6623
+ /**
6624
+ * Size Bytes
6625
+ * @description Size of the decoded image, in bytes.
6626
+ */
6627
+ size_bytes: number;
6628
+ };
6583
6629
  /**
6584
6630
  * SessionMessageResponse
6585
6631
  * @description One inbox message.
@@ -6673,9 +6719,12 @@ interface components {
6673
6719
  };
6674
6720
  /**
6675
6721
  * SessionSource
6722
+ * @description Where a session came from: the credential that started it (web app,
6723
+ * API key, CLI) or the trigger that fired (react, mention, cron). Never
6724
+ * taken from a request body.
6676
6725
  * @enum {string}
6677
6726
  */
6678
- SessionSource: 'react' | 'manual' | 'api' | 'cli' | 'mention' | 'cron';
6727
+ SessionSource: 'react' | 'web' | 'api' | 'cli' | 'mention' | 'cron';
6679
6728
  /**
6680
6729
  * SessionState
6681
6730
  * @description Lifecycle of a keyed (multi-turn) session — the durable conversation.
@@ -6988,7 +7037,7 @@ interface components {
6988
7037
  codex?: components['schemas']['CodexConfig'] | null;
6989
7038
  /**
6990
7039
  * Environment
6991
- * @description Where the session runs. A STRING is a saved environment's name or `env_...` id, substituted wholesale. An OBJECT is the whole environment for this session — `{}` is the bare sandbox; nothing from the organization's default merges in. Omitted, the session runs in the organization's default environment, else the built-in basic sandbox.
7040
+ * @description Where the session runs. A STRING is a saved environment's name or `env_...` id, substituted wholesale. An OBJECT is the whole environment for this session — `{}` is the bare sandbox. Omitted, the session runs in the built-in basic sandbox — nothing outside the request picks the environment.
6992
7041
  */
6993
7042
  environment?: string | components['schemas']['EnvironmentConfig'] | null;
6994
7043
  /**
@@ -6997,6 +7046,11 @@ interface components {
6997
7046
  * @default false
6998
7047
  */
6999
7048
  force_rebuild: boolean;
7049
+ /**
7050
+ * Images
7051
+ * @description Images attached to the first message, base64 inline — what a paste into Claude Code sends. Each becomes an `[Image #N]` placeholder in the prompt and an image block the model sees on turn 0. Up to 10, 5 MiB each; PNG, JPEG, GIF, or WebP. Claude harness only.
7052
+ */
7053
+ images?: components['schemas']['ImageAttachment'][];
7000
7054
  /**
7001
7055
  * Interactive
7002
7056
  * @description Whether the session stays open for messages after its first turn. Set false for a one-shot run that does its job and closes without holding a warm sandbox; a one-shot run must carry a prompt, since nothing can ever be sent to it later. Sessions on the Codex harness are one-shot regardless.
@@ -9810,6 +9864,10 @@ interface operations {
9810
9864
  pull_request_number?: number[];
9811
9865
  /** @description Only reviews in these statuses. Repeat the parameter for several. */
9812
9866
  status?: components['schemas']['CodeReviewRunStatus'][];
9867
+ /** @description Only reviews created at or after this time. */
9868
+ start?: string | null;
9869
+ /** @description Only reviews created at or before this time. */
9870
+ end?: string | null;
9813
9871
  limit?: number;
9814
9872
  cursor?: string | null;
9815
9873
  };
@@ -10265,7 +10323,7 @@ interface operations {
10265
10323
  'application/json': components['schemas']['SessionResponse'];
10266
10324
  };
10267
10325
  };
10268
- /** @description The request is incompatible with itself (a one-shot run with no prompt, or both `claude` and `codex`), its keys produce an invalid config, or `budget` exceeds the organization's per-session ceiling. */
10326
+ /** @description The request is incompatible with itself (a one-shot run with no prompt, both `claude` and `codex`, or images on the Codex harness), an image is invalid or over the limit, its keys produce an invalid config, or `budget` exceeds the organization's per-session ceiling. */
10269
10327
  400: {
10270
10328
  headers: {
10271
10329
  [name: string]: unknown;
@@ -10518,7 +10576,7 @@ interface operations {
10518
10576
  'application/json': components['schemas']['SessionMessageResponse'];
10519
10577
  };
10520
10578
  };
10521
- /** @description The message is empty. */
10579
+ /** @description The message is empty (no text and no images), an image is invalid or over the limit, or the session runs on the Codex harness (images are Claude-only). */
10522
10580
  400: {
10523
10581
  headers: {
10524
10582
  [name: string]: unknown;
@@ -10939,15 +10997,6 @@ interface operations {
10939
10997
  'application/json': components['schemas']['ErrorResponse'];
10940
10998
  };
10941
10999
  };
10942
- /** @description The default environment does not exist in your account. */
10943
- 404: {
10944
- headers: {
10945
- [name: string]: unknown;
10946
- };
10947
- content: {
10948
- 'application/json': components['schemas']['ErrorResponse'];
10949
- };
10950
- };
10951
11000
  /** @description Validation Error */
10952
11001
  422: {
10953
11002
  headers: {
@@ -11198,9 +11247,9 @@ type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_intera
11198
11247
  */
11199
11248
  type SessionState = 'idle' | 'running' | 'closed';
11200
11249
  /**
11201
- * Where the session came from (e.g. react, manual, api, cli, mention, cron).
11250
+ * Where the session came from (e.g. react, web, api, cli, mention, cron).
11202
11251
  */
11203
- type SessionSource = 'react' | 'manual' | 'api' | 'cli' | 'mention' | 'cron';
11252
+ type SessionSource = 'react' | 'web' | 'api' | 'cli' | 'mention' | 'cron';
11204
11253
  /**
11205
11254
  * Execution status of the session.
11206
11255
  */
@@ -11243,7 +11292,7 @@ interface SessionMessage {
11243
11292
  */
11244
11293
  author: string | null;
11245
11294
  /**
11246
- * The message text.
11295
+ * The message text, with one `[Image #N]` placeholder per attached image.
11247
11296
  */
11248
11297
  body: string;
11249
11298
  /**
@@ -11266,6 +11315,10 @@ interface SessionMessage {
11266
11315
  * Unique identifier of the message.
11267
11316
  */
11268
11317
  id: string;
11318
+ /**
11319
+ * Images attached to the message, metadata only: index, media type, size. The bytes go to the model, never over the stream.
11320
+ */
11321
+ images: SessionMessageImage[];
11269
11322
  /**
11270
11323
  * Identifier of the principal that sent the message, if attributed.
11271
11324
  */
@@ -11280,6 +11333,24 @@ interface SessionMessage {
11280
11333
  session_id: string;
11281
11334
  status: SessionMessageStatus;
11282
11335
  }
11336
+ /**
11337
+ * One image on a message, metadata only. `index` is the N in the
11338
+ * `[Image #N]` placeholder in the message body.
11339
+ */
11340
+ interface SessionMessageImage {
11341
+ /**
11342
+ * 1-based position: the N in `[Image #N]`.
11343
+ */
11344
+ index: number;
11345
+ /**
11346
+ * The image's MIME type.
11347
+ */
11348
+ media_type: string;
11349
+ /**
11350
+ * Size of the decoded image, in bytes.
11351
+ */
11352
+ size_bytes: number;
11353
+ }
11283
11354
  /**
11284
11355
  * The session's current state.
11285
11356
  */
@@ -11891,7 +11962,7 @@ interface SessionEnvironment {
11891
11962
  */
11892
11963
  environment_id: string | null;
11893
11964
  /**
11894
- * How the environment was chosen (request, agent_config, repo_default, account_default, platform_default). Null when the config carried its own inline environment.
11965
+ * How the environment was chosen (request, agent_config, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment.
11895
11966
  */
11896
11967
  source: EnvironmentSource | null;
11897
11968
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ellipsis-dev/sdk",
3
- "version": "0.25.0",
3
+ "version": "0.27.0",
4
4
  "description": "TypeScript SDK for the Ellipsis agents platform: /v1 REST types + client, the session stream WebSocket client, and the session transcript store.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -4059,7 +4059,7 @@
4059
4059
  },
4060
4060
  "source": {
4061
4061
  "$ref": "#/$defs/SessionSource",
4062
- "description": "Where the session came from (e.g. react, manual, api, cli, mention, cron)."
4062
+ "description": "Where the session came from (e.g. react, web, api, cli, mention, cron)."
4063
4063
  },
4064
4064
  "status": {
4065
4065
  "$ref": "#/$defs/SessionStatus",
@@ -4416,7 +4416,7 @@
4416
4416
  }
4417
4417
  ],
4418
4418
  "default": null,
4419
- "description": "How the environment was chosen (request, agent_config, repo_default, account_default, platform_default). Null when the config carried its own inline environment."
4419
+ "description": "How the environment was chosen (request, agent_config, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment."
4420
4420
  }
4421
4421
  },
4422
4422
  "required": [
@@ -4703,7 +4703,7 @@
4703
4703
  "title": "Author"
4704
4704
  },
4705
4705
  "body": {
4706
- "description": "The message text.",
4706
+ "description": "The message text, with one `[Image #N]` placeholder per attached image.",
4707
4707
  "title": "Body",
4708
4708
  "type": "string"
4709
4709
  },
@@ -4758,6 +4758,14 @@
4758
4758
  "title": "Id",
4759
4759
  "type": "string"
4760
4760
  },
4761
+ "images": {
4762
+ "description": "Images attached to the message, metadata only: index, media type, size. The bytes go to the model, never over the stream.",
4763
+ "items": {
4764
+ "$ref": "#/$defs/SessionMessageImage"
4765
+ },
4766
+ "title": "Images",
4767
+ "type": "array"
4768
+ },
4761
4769
  "sender_attribution_id": {
4762
4770
  "anyOf": [
4763
4771
  {
@@ -4801,6 +4809,7 @@
4801
4809
  "delivered_turn_id",
4802
4810
  "feed_seq",
4803
4811
  "id",
4812
+ "images",
4804
4813
  "sender_attribution_id",
4805
4814
  "sender_attribution_type",
4806
4815
  "session_id",
@@ -4809,6 +4818,33 @@
4809
4818
  "title": "SessionMessage",
4810
4819
  "type": "object"
4811
4820
  },
4821
+ "SessionMessageImage": {
4822
+ "description": "One image on a message, metadata only. `index` is the N in the\n`[Image #N]` placeholder in the message body.",
4823
+ "properties": {
4824
+ "index": {
4825
+ "description": "1-based position: the N in `[Image #N]`.",
4826
+ "title": "Index",
4827
+ "type": "integer"
4828
+ },
4829
+ "media_type": {
4830
+ "description": "The image's MIME type.",
4831
+ "title": "Media Type",
4832
+ "type": "string"
4833
+ },
4834
+ "size_bytes": {
4835
+ "description": "Size of the decoded image, in bytes.",
4836
+ "title": "Size Bytes",
4837
+ "type": "integer"
4838
+ }
4839
+ },
4840
+ "required": [
4841
+ "index",
4842
+ "media_type",
4843
+ "size_bytes"
4844
+ ],
4845
+ "title": "SessionMessageImage",
4846
+ "type": "object"
4847
+ },
4812
4848
  "SessionMessageStatus": {
4813
4849
  "enum": [
4814
4850
  "pending",
@@ -4920,9 +4956,10 @@
4920
4956
  "type": "object"
4921
4957
  },
4922
4958
  "SessionSource": {
4959
+ "description": "Where a session came from: the credential that started it (web app,\nAPI key, CLI) or the trigger that fired (react, mention, cron). Never\ntaken from a request body.",
4923
4960
  "enum": [
4924
4961
  "react",
4925
- "manual",
4962
+ "web",
4926
4963
  "api",
4927
4964
  "cli",
4928
4965
  "mention",