@ellipsis-dev/sdk 0.15.0 → 0.15.1

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.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as components } from './types-DtVn9Yj3.js';
2
- export { A as AgentConfigSource, a as AttributionType, B as BudgetSource, C as ClaudeSessionRecord, b as CodexEvent, d as CodexItem, e as CodexSessionRecord, f as CreateReviewRequest, D as DeltaFrame, g as DoneFrame, E as ErrorFrame, F as Finding, G as GithubAccountSnippet, h as GithubAccountType, H as Harness, i as HeartbeatFrame, L as LifecycleSessionRecord, P as ParentKind, j as PromptBlockedReason, R as RecordsAppendFrame, k as ResolvedReviewScope, l as Review, m as ReviewConfiguration, n as ReviewCounters, o as ReviewFinding, p as ReviewRequester, q as ReviewScope, r as ReviewScopeKind, s as ReviewStage, t as ReviewedCommit, u as ReviewsListResponse, S as SdkAssistantRecord, v as SdkContentBlock, w as SdkRateLimitRecord, x as SdkRecord, y as SdkResultRecord, z as SdkSystemRecord, I as SdkUserRecord, J as SendSessionMessageRequest, K as Session, M as SessionExecution, N as SessionExecutionsListResponse, O as SessionExitStatus, Q as SessionFrame, T as SessionLiveness, U as SessionMessage, V as SessionMessageResponse, W as SessionMessageStatus, X as SessionPr, Y as SessionPrompting, Z as SessionRecord, _ as SessionRecordsListResponse, $ as SessionResponse, a0 as SessionSource, a1 as SessionState, a2 as SessionStatus, a3 as SessionStreamFrame, a4 as SessionSurface, a5 as SessionsListResponse, a6 as SnapshotFrame, a7 as StreamFrame, a8 as TokensInfo, a9 as paths } from './types-DtVn9Yj3.js';
1
+ import { c as components } from './types-D9g-eZui.js';
2
+ export { A as AgentConfigSource, a as AttributionType, B as BudgetSource, C as ClaudeSessionRecord, b as CodexEvent, d as CodexItem, e as CodexSessionRecord, f as CreateReviewRequest, D as DeltaFrame, g as DoneFrame, E as ErrorFrame, F as Finding, G as GithubAccountSnippet, h as GithubAccountType, H as Harness, i as HeartbeatFrame, L as LifecycleSessionRecord, P as ParentKind, j as PromptBlockedReason, R as RecordsAppendFrame, k as ResolvedReviewScope, l as Review, m as ReviewConfiguration, n as ReviewCounters, o as ReviewFinding, p as ReviewRequester, q as ReviewScope, r as ReviewScopeKind, s as ReviewStage, t as ReviewedCommit, u as ReviewsListResponse, S as SdkAssistantRecord, v as SdkContentBlock, w as SdkRateLimitRecord, x as SdkRecord, y as SdkResultRecord, z as SdkSystemRecord, I as SdkUserRecord, J as SendSessionMessageRequest, K as Session, M as SessionExecution, N as SessionExecutionsListResponse, O as SessionExitStatus, Q as SessionFrame, T as SessionLiveness, U as SessionMessage, V as SessionMessageResponse, W as SessionMessageStatus, X as SessionPr, Y as SessionPrompting, Z as SessionRecord, _ as SessionRecordsListResponse, $ as SessionResponse, a0 as SessionSource, a1 as SessionState, a2 as SessionStatus, a3 as SessionStreamFrame, a4 as SessionSurface, a5 as SessionsListResponse, a6 as SnapshotFrame, a7 as StreamFrame, a8 as TokensInfo, a9 as paths } from './types-D9g-eZui.js';
3
3
 
4
4
  interface CursorResponse {
5
5
  has_more: boolean;
@@ -1,4 +1,4 @@
1
- import { Z as SessionRecord, aa as CodexFileChangeItem, b as CodexEvent, ab as CodexMcpToolCallItem, x as SdkRecord, K as Session, U as SessionMessage, a7 as StreamFrame } from '../types-DtVn9Yj3.js';
1
+ import { Z as SessionRecord, aa as CodexFileChangeItem, b as CodexEvent, ab as CodexMcpToolCallItem, x as SdkRecord, K as Session, U as SessionMessage, a7 as StreamFrame } from '../types-D9g-eZui.js';
2
2
 
3
3
  interface ChatToolNode {
4
4
  key: string;
@@ -366,6 +366,8 @@ function recordToItems(record, keyBase, options = {}) {
366
366
  const text = lifecycleText(record.record_type, record.payload);
367
367
  return text ? [{ key: keyBase, kind: "notice", text, spaceBefore: true }] : [];
368
368
  }
369
+ default:
370
+ return [];
369
371
  }
370
372
  }
371
373
  function isConnectVisibleRecord(record) {
@@ -1,4 +1,4 @@
1
- import { a7 as StreamFrame, K as Session } from '../types-DtVn9Yj3.js';
1
+ import { a7 as StreamFrame, K as Session } from '../types-D9g-eZui.js';
2
2
 
3
3
  declare const SESSION_STREAM_PROTOCOL_VERSION = 3;
4
4
  declare const WS_CLOSE_NORMAL = 1000;
@@ -4085,11 +4085,10 @@ interface components {
4085
4085
  * @description Who BUILT a model. Never who serves it.
4086
4086
  *
4087
4087
  * Serving path is irrelevant here. Anthropic built every Claude model, so all of
4088
- * them are ANTHROPIC whether we reach them through the first-party Anthropic API
4089
- * or through Bedrock -- a choice made per request by the llm_providers chain, so
4090
- * it is not even a fixed property of the model. Likewise the `gpt-5.6-*` rows
4091
- * are OPENAI (OpenAI's models, served by AWS via bedrock-mantle), and GLM is ZAI
4092
- * (Z.ai's model, served by DeepInfra via OpenRouter).
4088
+ * them are ANTHROPIC even though OpenRouter is what actually serves them.
4089
+ * Likewise the `gpt-5.6-*` rows are OPENAI (OpenAI's models, resold to us by
4090
+ * OpenRouter), and GLM is ZAI (Z.ai's model, served by DeepInfra via
4091
+ * OpenRouter).
4093
4092
  *
4094
4093
  * So this is deliberately NOT derived from `EgressRoute.provider`: routing is an
4095
4094
  * infrastructure fact that changes when we move a model between providers, while
@@ -6003,6 +6002,8 @@ interface components {
6003
6002
  metadata: {
6004
6003
  [key: string]: string;
6005
6004
  };
6005
+ /** @description Per-file line counts for the uncommitted changes in the session's workspace. Work the session committed is not included here — see output_prs. Null if no diff was ever captured. */
6006
+ output_diff?: components['schemas']['SessionDiff'] | null;
6006
6007
  /**
6007
6008
  * Output Prs
6008
6009
  * @description Pull requests the session created or updated.
@@ -6146,6 +6147,37 @@ interface components {
6146
6147
  */
6147
6148
  total: number;
6148
6149
  };
6150
+ /**
6151
+ * SessionDiff
6152
+ * @description The counts half of a session's working-tree diff, small enough to ride on
6153
+ * agent_sessions and be returned by every session read. The patch text lives
6154
+ * in `agent_session_diffs` and is fetched on demand.
6155
+ *
6156
+ * Scope is UNCOMMITTED work only (`git diff HEAD`), so this answers "is there
6157
+ * unlanded work in this sandbox?" — a session that committed and pushed shows
6158
+ * no files here and its created PR instead.
6159
+ */
6160
+ SessionDiff: {
6161
+ /** Files */
6162
+ files: components['schemas']['SessionDiffFile'][];
6163
+ };
6164
+ /**
6165
+ * SessionDiffFile
6166
+ * @description One file's uncommitted change in a session's sandbox, as `git diff HEAD`
6167
+ * --numstat reports it (with intent-to-add so new files count).
6168
+ */
6169
+ SessionDiffFile: {
6170
+ /** Additions */
6171
+ additions: number;
6172
+ /** Deletions */
6173
+ deletions: number;
6174
+ /** Path */
6175
+ path: string;
6176
+ /** Repo */
6177
+ repo: string;
6178
+ /** Status */
6179
+ status: string;
6180
+ };
6149
6181
  /**
6150
6182
  * SessionExecution
6151
6183
  * @description One runtime attempt of a session — the initial start, a cold wake of a
@@ -10831,6 +10863,10 @@ interface Session {
10831
10863
  metadata: {
10832
10864
  [k: string]: string;
10833
10865
  };
10866
+ /**
10867
+ * Per-file line counts for the uncommitted changes in the session's workspace. Work the session committed is not included here — see output_prs. Null if no diff was ever captured.
10868
+ */
10869
+ output_diff: SessionDiff | null;
10834
10870
  /**
10835
10871
  * Pull requests the session created or updated.
10836
10872
  */
@@ -11343,6 +11379,29 @@ interface SessionCost {
11343
11379
  */
11344
11380
  total: number;
11345
11381
  }
11382
+ /**
11383
+ * The counts half of a session's working-tree diff, small enough to ride on
11384
+ * agent_sessions and be returned by every session read. The patch text lives
11385
+ * in `agent_session_diffs` and is fetched on demand.
11386
+ *
11387
+ * Scope is UNCOMMITTED work only (`git diff HEAD`), so this answers "is there
11388
+ * unlanded work in this sandbox?" — a session that committed and pushed shows
11389
+ * no files here and its created PR instead.
11390
+ */
11391
+ interface SessionDiff {
11392
+ files: SessionDiffFile[];
11393
+ }
11394
+ /**
11395
+ * One file's uncommitted change in a session's sandbox, as `git diff HEAD`
11396
+ * --numstat reports it (with intent-to-add so new files count).
11397
+ */
11398
+ interface SessionDiffFile {
11399
+ additions: number;
11400
+ deletions: number;
11401
+ path: string;
11402
+ repo: string;
11403
+ status: string;
11404
+ }
11346
11405
  /**
11347
11406
  * A pull request this session created, denormalized at capture time so
11348
11407
  * session surfaces render a labeled link without joining gh_prs. Live PR
@@ -11988,6 +12047,10 @@ interface Session1 {
11988
12047
  metadata: {
11989
12048
  [k: string]: string;
11990
12049
  };
12050
+ /**
12051
+ * Per-file line counts for the uncommitted changes in the session's workspace. Work the session committed is not included here — see output_prs. Null if no diff was ever captured.
12052
+ */
12053
+ output_diff: SessionDiff | null;
11991
12054
  /**
11992
12055
  * Pull requests the session created or updated.
11993
12056
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ellipsis-dev/sdk",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
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",
@@ -4082,6 +4082,18 @@
4082
4082
  "title": "Metadata",
4083
4083
  "type": "object"
4084
4084
  },
4085
+ "output_diff": {
4086
+ "anyOf": [
4087
+ {
4088
+ "$ref": "#/$defs/SessionDiff"
4089
+ },
4090
+ {
4091
+ "type": "null"
4092
+ }
4093
+ ],
4094
+ "default": null,
4095
+ "description": "Per-file line counts for the uncommitted changes in the session's workspace. Work the session committed is not included here \u2014 see output_prs. Null if no diff was ever captured."
4096
+ },
4085
4097
  "output_prs": {
4086
4098
  "anyOf": [
4087
4099
  {
@@ -4204,6 +4216,7 @@
4204
4216
  "last_activity_at",
4205
4217
  "last_message_at",
4206
4218
  "metadata",
4219
+ "output_diff",
4207
4220
  "output_prs",
4208
4221
  "parent",
4209
4222
  "prompt",
@@ -4384,6 +4397,57 @@
4384
4397
  "title": "SessionCost",
4385
4398
  "type": "object"
4386
4399
  },
4400
+ "SessionDiff": {
4401
+ "description": "The counts half of a session's working-tree diff, small enough to ride on\nagent_sessions and be returned by every session read. The patch text lives\nin `agent_session_diffs` and is fetched on demand.\n\nScope is UNCOMMITTED work only (`git diff HEAD`), so this answers \"is there\nunlanded work in this sandbox?\" \u2014 a session that committed and pushed shows\nno files here and its created PR instead.",
4402
+ "properties": {
4403
+ "files": {
4404
+ "items": {
4405
+ "$ref": "#/$defs/SessionDiffFile"
4406
+ },
4407
+ "title": "Files",
4408
+ "type": "array"
4409
+ }
4410
+ },
4411
+ "required": [
4412
+ "files"
4413
+ ],
4414
+ "title": "SessionDiff",
4415
+ "type": "object"
4416
+ },
4417
+ "SessionDiffFile": {
4418
+ "description": "One file's uncommitted change in a session's sandbox, as `git diff HEAD`\n--numstat reports it (with intent-to-add so new files count).",
4419
+ "properties": {
4420
+ "additions": {
4421
+ "title": "Additions",
4422
+ "type": "integer"
4423
+ },
4424
+ "deletions": {
4425
+ "title": "Deletions",
4426
+ "type": "integer"
4427
+ },
4428
+ "path": {
4429
+ "title": "Path",
4430
+ "type": "string"
4431
+ },
4432
+ "repo": {
4433
+ "title": "Repo",
4434
+ "type": "string"
4435
+ },
4436
+ "status": {
4437
+ "title": "Status",
4438
+ "type": "string"
4439
+ }
4440
+ },
4441
+ "required": [
4442
+ "additions",
4443
+ "deletions",
4444
+ "path",
4445
+ "repo",
4446
+ "status"
4447
+ ],
4448
+ "title": "SessionDiffFile",
4449
+ "type": "object"
4450
+ },
4387
4451
  "SessionExitStatus": {
4388
4452
  "description": "Why a terminal agent session ended \u2014 a finer-grained reason than `status`.\n\n`status` (SessionStatus) is the lifecycle state: COMPLETED / ERROR /\nCANCELLED. `exit_status` explains *why* a run reached that terminal state, so\nthe UI and metrics can tell a budget cutoff apart from a crashed tool call or\na deliberate cancellation. It is None until the run reaches a terminal state.",
4389
4453
  "enum": [
@@ -5206,7 +5206,7 @@
5206
5206
  "type": "object"
5207
5207
  },
5208
5208
  "ModelManufacturer": {
5209
- "description": "Who BUILT a model. Never who serves it.\n\nServing path is irrelevant here. Anthropic built every Claude model, so all of\nthem are ANTHROPIC whether we reach them through the first-party Anthropic API\nor through Bedrock -- a choice made per request by the llm_providers chain, so\nit is not even a fixed property of the model. Likewise the `gpt-5.6-*` rows\nare OPENAI (OpenAI's models, served by AWS via bedrock-mantle), and GLM is ZAI\n(Z.ai's model, served by DeepInfra via OpenRouter).\n\nSo this is deliberately NOT derived from `EgressRoute.provider`: routing is an\ninfrastructure fact that changes when we move a model between providers, while\nthe manufacturer is a property of the model itself and never changes.\n\nThe frontend renders a vendor logo per model, which is why it needs the maker.\nKeying that UI off the egress provider would put an AWS logo on a GPT model and\nan OpenAI logo on GLM.",
5209
+ "description": "Who BUILT a model. Never who serves it.\n\nServing path is irrelevant here. Anthropic built every Claude model, so all of\nthem are ANTHROPIC even though OpenRouter is what actually serves them.\nLikewise the `gpt-5.6-*` rows are OPENAI (OpenAI's models, resold to us by\nOpenRouter), and GLM is ZAI (Z.ai's model, served by DeepInfra via\nOpenRouter).\n\nSo this is deliberately NOT derived from `EgressRoute.provider`: routing is an\ninfrastructure fact that changes when we move a model between providers, while\nthe manufacturer is a property of the model itself and never changes.\n\nThe frontend renders a vendor logo per model, which is why it needs the maker.\nKeying that UI off the egress provider would put an AWS logo on a GPT model and\nan OpenAI logo on GLM.",
5210
5210
  "enum": [
5211
5211
  "anthropic",
5212
5212
  "openai",
@@ -8566,6 +8566,17 @@
8566
8566
  "title": "Metadata",
8567
8567
  "type": "object"
8568
8568
  },
8569
+ "output_diff": {
8570
+ "anyOf": [
8571
+ {
8572
+ "$ref": "#/components/schemas/SessionDiff"
8573
+ },
8574
+ {
8575
+ "type": "null"
8576
+ }
8577
+ ],
8578
+ "description": "Per-file line counts for the uncommitted changes in the session's workspace. Work the session committed is not included here \u2014 see output_prs. Null if no diff was ever captured."
8579
+ },
8569
8580
  "output_prs": {
8570
8581
  "anyOf": [
8571
8582
  {
@@ -8822,6 +8833,57 @@
8822
8833
  "title": "SessionCost",
8823
8834
  "type": "object"
8824
8835
  },
8836
+ "SessionDiff": {
8837
+ "description": "The counts half of a session's working-tree diff, small enough to ride on\nagent_sessions and be returned by every session read. The patch text lives\nin `agent_session_diffs` and is fetched on demand.\n\nScope is UNCOMMITTED work only (`git diff HEAD`), so this answers \"is there\nunlanded work in this sandbox?\" \u2014 a session that committed and pushed shows\nno files here and its created PR instead.",
8838
+ "properties": {
8839
+ "files": {
8840
+ "items": {
8841
+ "$ref": "#/components/schemas/SessionDiffFile"
8842
+ },
8843
+ "title": "Files",
8844
+ "type": "array"
8845
+ }
8846
+ },
8847
+ "required": [
8848
+ "files"
8849
+ ],
8850
+ "title": "SessionDiff",
8851
+ "type": "object"
8852
+ },
8853
+ "SessionDiffFile": {
8854
+ "description": "One file's uncommitted change in a session's sandbox, as `git diff HEAD`\n--numstat reports it (with intent-to-add so new files count).",
8855
+ "properties": {
8856
+ "additions": {
8857
+ "title": "Additions",
8858
+ "type": "integer"
8859
+ },
8860
+ "deletions": {
8861
+ "title": "Deletions",
8862
+ "type": "integer"
8863
+ },
8864
+ "path": {
8865
+ "title": "Path",
8866
+ "type": "string"
8867
+ },
8868
+ "repo": {
8869
+ "title": "Repo",
8870
+ "type": "string"
8871
+ },
8872
+ "status": {
8873
+ "title": "Status",
8874
+ "type": "string"
8875
+ }
8876
+ },
8877
+ "required": [
8878
+ "repo",
8879
+ "path",
8880
+ "status",
8881
+ "additions",
8882
+ "deletions"
8883
+ ],
8884
+ "title": "SessionDiffFile",
8885
+ "type": "object"
8886
+ },
8825
8887
  "SessionExecution": {
8826
8888
  "description": "One runtime attempt of a session \u2014 the initial start, a cold wake of a\ndurable conversation, or an infrastructure retry \u2014 including the launch\ncontext the model was actually given.",
8827
8889
  "properties": {