@ellipsis-dev/sdk 0.2.0 → 0.2.2

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 { A as AgentSessionWire, L as ListSessionRecordsResponse, a as ListSessionTurnsResponse, S as SessionMessageWire } from './types-F94JllmC.js';
2
- export { b as AgentSessionExitStatus, c as AgentSessionPr, d as AgentSessionSource, e as AgentSessionStatus, f as AgentTurn, g as AgentTurnStatus, h as AttributionType, B as BudgetSource, D as DefaultResolution, i as DeltaFrame, j as DoneFrame, E as ErrorFrame, G as GithubAccountSnippet, k as GithubAccountType, H as Harness, l as HeartbeatFrame, M as ModelTokensInfo, P as ParentKind, R as RecordsAppendFrame, m as SendSessionMessageRequest, n as SessionFrame, o as SessionLiveness, p as SessionMessageStatus, q as SessionRecordWire, r as SessionState, s as SessionStreamFrame, t as SessionSurface, u as SnapshotFrame, v as StreamFrame, T as TokensInfo, w as TurnTokensInfo, x as components, y as paths } from './types-F94JllmC.js';
1
+ import { A as AgentSessionWire, L as ListSessionRecordsResponse, a as ListSessionTurnsResponse, b as ListSessionExecutionsResponse, S as SessionMessageWire } from './types-B5A_axbQ.js';
2
+ export { c as AgentSessionExitStatus, d as AgentSessionPr, e as AgentSessionSource, f as AgentSessionStatus, g as AgentTurn, h as AgentTurnStatus, i as AttributionType, B as BudgetSource, D as DefaultResolution, j as DeltaFrame, k as DoneFrame, E as ErrorFrame, G as GithubAccountSnippet, l as GithubAccountType, H as Harness, m as HeartbeatFrame, M as ModelTokensInfo, P as ParentKind, R as RecordsAppendFrame, n as SendSessionMessageRequest, o as SessionExecutionWire, p as SessionFrame, q as SessionLiveness, r as SessionMessageStatus, s as SessionRecordWire, t as SessionState, u as SessionStreamFrame, v as SessionSurface, w as SnapshotFrame, x as StreamFrame, T as TokensInfo, y as TurnTokensInfo, z as components, C as paths } from './types-B5A_axbQ.js';
3
3
 
4
4
  type FetchJson = (path: string, init?: {
5
5
  method?: string;
@@ -14,9 +14,10 @@ declare class EllipsisClient {
14
14
  limit?: number;
15
15
  }): Promise<ListSessionRecordsResponse>;
16
16
  getSessionTurns(sessionId: string): Promise<ListSessionTurnsResponse>;
17
+ getSessionExecutions(sessionId: string): Promise<ListSessionExecutionsResponse>;
17
18
  sendSessionMessage(sessionId: string, message: string, options?: {
18
19
  idempotencyKey?: string;
19
20
  }): Promise<SessionMessageWire>;
20
21
  }
21
22
 
22
- export { AgentSessionWire, EllipsisClient, type FetchJson, ListSessionRecordsResponse, ListSessionTurnsResponse, SessionMessageWire };
23
+ export { AgentSessionWire, EllipsisClient, type FetchJson, ListSessionExecutionsResponse, ListSessionRecordsResponse, ListSessionTurnsResponse, SessionMessageWire };
package/dist/index.js CHANGED
@@ -30,6 +30,16 @@ var EllipsisClient = class {
30
30
  `/v1/sessions/${encodeURIComponent(sessionId)}/turns`
31
31
  );
32
32
  }
33
+ // The session's executions (initial start, cold wakes, infra retries) with
34
+ // their launch context: `system_prompt_append` is the text Ellipsis appends
35
+ // to Claude Code's default system prompt, alongside the initial query and
36
+ // model. Per execution because each cold wake persists its own launch
37
+ // config.
38
+ async getSessionExecutions(sessionId) {
39
+ return await this.fetchJson(
40
+ `/v1/sessions/${encodeURIComponent(sessionId)}/executions`
41
+ );
42
+ }
33
43
  // Send a message into the session's inbox (§4.2). Returns the created (or,
34
44
  // on an idempotent retry, the original) inbox row — clients key optimistic
35
45
  // echo chips on its id. `idempotencyKey` makes retries safe per
@@ -1,4 +1,4 @@
1
- import { q as SessionRecordWire, A as AgentSessionWire, S as SessionMessageWire, v as StreamFrame } from '../types-F94JllmC.js';
1
+ import { s as SessionRecordWire, A as AgentSessionWire, S as SessionMessageWire, x as StreamFrame } from '../types-B5A_axbQ.js';
2
2
 
3
3
  interface ChatToolNode {
4
4
  key: string;
@@ -1,4 +1,4 @@
1
- import { v as StreamFrame, A as AgentSessionWire } from '../types-F94JllmC.js';
1
+ import { x as StreamFrame, A as AgentSessionWire } from '../types-B5A_axbQ.js';
2
2
 
3
3
  declare const SESSION_STREAM_PROTOCOL_VERSION = 3;
4
4
  declare const WS_CLOSE_NORMAL = 1000;
@@ -16,6 +16,23 @@ interface paths {
16
16
  patch?: never;
17
17
  trace?: never;
18
18
  };
19
+ '/v1/sessions/{session_id}/executions': {
20
+ parameters: {
21
+ query?: never;
22
+ header?: never;
23
+ path?: never;
24
+ cookie?: never;
25
+ };
26
+ /** Get Agent Session Executions */
27
+ get: operations['get_agent_session_executions_v1_sessions__session_id__executions_get'];
28
+ put?: never;
29
+ post?: never;
30
+ delete?: never;
31
+ options?: never;
32
+ head?: never;
33
+ patch?: never;
34
+ trace?: never;
35
+ };
19
36
  '/v1/sessions/{session_id}/messages': {
20
37
  parameters: {
21
38
  query?: never;
@@ -175,6 +192,7 @@ interface components {
175
192
  parent_kind?: components['schemas']['ParentKind'] | null;
176
193
  /** Prompt */
177
194
  prompt?: string | null;
195
+ prompting: components['schemas']['SessionPrompting'];
178
196
  /** Replayed From Session Id */
179
197
  replayed_from_session_id?: string | null;
180
198
  /** Resolved Budget Cents */
@@ -348,6 +366,14 @@ interface components {
348
366
  * @enum {string}
349
367
  */
350
368
  DefaultResolution: 'repo_default' | 'account_default' | 'none';
369
+ /**
370
+ * ExecutionStatus
371
+ * @description Per-execution status ladder (was AgentProcessStatus). Distinct from the
372
+ * session's durable `session_state` and from `agent_sessions.status`, which
373
+ * remains the atomic claim/dispatch guard.
374
+ * @enum {string}
375
+ */
376
+ ExecutionStatus: 'running' | 'failed' | 'done';
351
377
  /**
352
378
  * GithubAccountSnippet
353
379
  * @description Sometimes the GitHub API returns a user of github (can include bots)
@@ -380,6 +406,11 @@ interface components {
380
406
  * @enum {string}
381
407
  */
382
408
  Harness: 'claude_code';
409
+ /** ListSessionExecutionsResponse */
410
+ ListSessionExecutionsResponse: {
411
+ /** Executions */
412
+ executions: components['schemas']['SessionExecutionWire'][];
413
+ };
383
414
  /** ListSessionRecordsResponse */
384
415
  ListSessionRecordsResponse: {
385
416
  /** Earliest Feed Seq */
@@ -447,6 +478,12 @@ interface components {
447
478
  * @enum {string}
448
479
  */
449
480
  ParentKind: 'continuation' | 'handoff' | 'resume';
481
+ /**
482
+ * PromptBlockedReason
483
+ * @description Why direct prompting is refused. Absent when prompting is allowed.
484
+ * @enum {string}
485
+ */
486
+ PromptBlockedReason: 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'closed' | 'laptop';
450
487
  /**
451
488
  * RecordSource
452
489
  * @description `session_records.source` — the client render switch. `lifecycle` rows are
@@ -476,6 +513,35 @@ interface components {
476
513
  /** Message */
477
514
  message: string;
478
515
  };
516
+ /** SessionExecutionWire */
517
+ SessionExecutionWire: {
518
+ /** Agent Session Id */
519
+ agent_session_id: string;
520
+ /** Attempt Index */
521
+ attempt_index: number;
522
+ /**
523
+ * Created At
524
+ * Format: date-time
525
+ */
526
+ created_at: string;
527
+ /** Execution Index */
528
+ execution_index: number;
529
+ /** Exit Status */
530
+ exit_status?: string | null;
531
+ /** Id */
532
+ id: string;
533
+ /** Model */
534
+ model?: string | null;
535
+ /** Query */
536
+ query?: string | null;
537
+ /** Resumed */
538
+ resumed: boolean;
539
+ status: components['schemas']['ExecutionStatus'];
540
+ /** System Prompt Append */
541
+ system_prompt_append?: string | null;
542
+ /** Wake Index */
543
+ wake_index: number;
544
+ };
479
545
  /**
480
546
  * SessionLiveness
481
547
  * @description The durable conversation axis (backs the surfaced `session` field).
@@ -562,6 +628,22 @@ interface components {
562
628
  sender_attribution_type?: components['schemas']['AttributionType'] | null;
563
629
  status: components['schemas']['SessionMessageStatus'];
564
630
  };
631
+ /**
632
+ * SessionPrompting
633
+ * @description The prompt-affordance projection. `enabled` answers "would a send work",
634
+ * and when it wouldn't, `blocked_reason` + `detail` say why.
635
+ *
636
+ * `surface_name` is set only for MENTION_SURFACE, naming where to reply.
637
+ */
638
+ SessionPrompting: {
639
+ blocked_reason?: components['schemas']['PromptBlockedReason'] | null;
640
+ /** Detail */
641
+ detail?: string | null;
642
+ /** Enabled */
643
+ enabled: boolean;
644
+ /** Surface Name */
645
+ surface_name?: string | null;
646
+ };
565
647
  /**
566
648
  * SessionRecordWire
567
649
  * @description The wire shape of one session record (§3.3): the §3.6 stable envelope +
@@ -767,6 +849,39 @@ interface operations {
767
849
  };
768
850
  };
769
851
  };
852
+ get_agent_session_executions_v1_sessions__session_id__executions_get: {
853
+ parameters: {
854
+ query?: never;
855
+ header?: {
856
+ 'user-agent'?: string | null;
857
+ };
858
+ path: {
859
+ session_id: string;
860
+ };
861
+ cookie?: never;
862
+ };
863
+ requestBody?: never;
864
+ responses: {
865
+ /** @description Successful Response */
866
+ 200: {
867
+ headers: {
868
+ [name: string]: unknown;
869
+ };
870
+ content: {
871
+ 'application/json': components['schemas']['ListSessionExecutionsResponse'];
872
+ };
873
+ };
874
+ /** @description Validation Error */
875
+ 422: {
876
+ headers: {
877
+ [name: string]: unknown;
878
+ };
879
+ content: {
880
+ 'application/json': components['schemas']['HTTPValidationError'];
881
+ };
882
+ };
883
+ };
884
+ };
770
885
  send_agent_session_message_v1_sessions__session_id__messages_post: {
771
886
  parameters: {
772
887
  query?: never;
@@ -913,6 +1028,10 @@ type Harness = 'claude_code';
913
1028
  * down (interactive platform; later phase).
914
1029
  */
915
1030
  type ParentKind = 'continuation' | 'handoff' | 'resume';
1031
+ /**
1032
+ * Why direct prompting is refused. Absent when prompting is allowed.
1033
+ */
1034
+ type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'closed' | 'laptop';
916
1035
  /**
917
1036
  * Which layer actually determined the enforced budget.
918
1037
  *
@@ -998,6 +1117,7 @@ interface AgentSessionWire {
998
1117
  parent_agent_session_id: string | null;
999
1118
  parent_kind: ParentKind | null;
1000
1119
  prompt: string | null;
1120
+ prompting: SessionPrompting;
1001
1121
  replayed_from_session_id: string | null;
1002
1122
  resolved_budget_cents: number;
1003
1123
  resolved_budget_source: BudgetSource;
@@ -1046,6 +1166,18 @@ interface AgentSessionPr {
1046
1166
  repo_full_name: string;
1047
1167
  url: string;
1048
1168
  }
1169
+ /**
1170
+ * The prompt-affordance projection. `enabled` answers "would a send work",
1171
+ * and when it wouldn't, `blocked_reason` + `detail` say why.
1172
+ *
1173
+ * `surface_name` is set only for MENTION_SURFACE, naming where to reply.
1174
+ */
1175
+ interface SessionPrompting {
1176
+ blocked_reason: PromptBlockedReason | null;
1177
+ detail: string | null;
1178
+ enabled: boolean;
1179
+ surface_name: string | null;
1180
+ }
1049
1181
  /**
1050
1182
  * The three fields we expose. All `None` for an un-keyed (laptop) session.
1051
1183
  *
@@ -1177,5 +1309,7 @@ type ListSessionRecordsResponse = components['schemas']['ListSessionRecordsRespo
1177
1309
  type ListSessionTurnsResponse = components['schemas']['ListSessionTurnsResponse'];
1178
1310
  type AgentTurn = components['schemas']['AgentTurn'];
1179
1311
  type AgentTurnStatus = components['schemas']['AgentTurnStatus'];
1312
+ type ListSessionExecutionsResponse = components['schemas']['ListSessionExecutionsResponse'];
1313
+ type SessionExecutionWire = components['schemas']['SessionExecutionWire'];
1180
1314
 
1181
- export type { AgentSessionWire as A, BudgetSource as B, DefaultResolution as D, ErrorFrame as E, GithubAccountSnippet as G, Harness as H, ListSessionRecordsResponse as L, ModelTokensInfo as M, ParentKind as P, RecordsAppendFrame as R, SessionMessageWire as S, TokensInfo as T, ListSessionTurnsResponse as a, AgentSessionExitStatus as b, AgentSessionPr as c, AgentSessionSource as d, AgentSessionStatus as e, AgentTurn as f, AgentTurnStatus as g, AttributionType as h, DeltaFrame as i, DoneFrame as j, GithubAccountType as k, HeartbeatFrame as l, SendSessionMessageRequest as m, SessionFrame as n, SessionLiveness as o, SessionMessageStatus as p, SessionRecordWire as q, SessionState as r, SessionStreamFrame as s, SessionSurface as t, SnapshotFrame as u, StreamFrame as v, TurnTokensInfo as w, components as x, paths as y };
1315
+ export type { AgentSessionWire as A, BudgetSource as B, paths as C, DefaultResolution as D, ErrorFrame as E, GithubAccountSnippet as G, Harness as H, ListSessionRecordsResponse as L, ModelTokensInfo as M, ParentKind as P, RecordsAppendFrame as R, SessionMessageWire as S, TokensInfo as T, ListSessionTurnsResponse as a, ListSessionExecutionsResponse as b, AgentSessionExitStatus as c, AgentSessionPr as d, AgentSessionSource as e, AgentSessionStatus as f, AgentTurn as g, AgentTurnStatus as h, AttributionType as i, DeltaFrame as j, DoneFrame as k, GithubAccountType as l, HeartbeatFrame as m, SendSessionMessageRequest as n, SessionExecutionWire as o, SessionFrame as p, SessionLiveness as q, SessionMessageStatus as r, SessionRecordWire as s, SessionState as t, SessionStreamFrame as u, SessionSurface as v, SnapshotFrame as w, StreamFrame as x, TurnTokensInfo as y, components as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ellipsis-dev/sdk",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
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",
@@ -333,6 +333,9 @@
333
333
  "default": null,
334
334
  "title": "Prompt"
335
335
  },
336
+ "prompting": {
337
+ "$ref": "#/$defs/SessionPrompting"
338
+ },
336
339
  "replayed_from_session_id": {
337
340
  "anyOf": [
338
341
  {
@@ -536,6 +539,7 @@
536
539
  "parent_agent_session_id",
537
540
  "parent_kind",
538
541
  "prompt",
542
+ "prompting",
539
543
  "replayed_from_session_id",
540
544
  "resolved_budget_cents",
541
545
  "resolved_budget_source",
@@ -805,6 +809,18 @@
805
809
  "title": "ParentKind",
806
810
  "type": "string"
807
811
  },
812
+ "PromptBlockedReason": {
813
+ "description": "Why direct prompting is refused. Absent when prompting is allowed.",
814
+ "enum": [
815
+ "mention_surface",
816
+ "ephemeral_trigger",
817
+ "non_interactive",
818
+ "closed",
819
+ "laptop"
820
+ ],
821
+ "title": "PromptBlockedReason",
822
+ "type": "string"
823
+ },
808
824
  "RecordsAppendFrame": {
809
825
  "description": "Cursored append-only: raw records ordered by feed_seq, all sources.\nEvery record in the frame advances the resume cursor \u2014 including ones a\nclient renders as nothing (\u00a73.4).",
810
826
  "properties": {
@@ -995,6 +1011,58 @@
995
1011
  "title": "SessionMessageWire",
996
1012
  "type": "object"
997
1013
  },
1014
+ "SessionPrompting": {
1015
+ "description": "The prompt-affordance projection. `enabled` answers \"would a send work\",\nand when it wouldn't, `blocked_reason` + `detail` say why.\n\n`surface_name` is set only for MENTION_SURFACE, naming where to reply.",
1016
+ "properties": {
1017
+ "blocked_reason": {
1018
+ "anyOf": [
1019
+ {
1020
+ "$ref": "#/$defs/PromptBlockedReason"
1021
+ },
1022
+ {
1023
+ "type": "null"
1024
+ }
1025
+ ],
1026
+ "default": null
1027
+ },
1028
+ "detail": {
1029
+ "anyOf": [
1030
+ {
1031
+ "type": "string"
1032
+ },
1033
+ {
1034
+ "type": "null"
1035
+ }
1036
+ ],
1037
+ "default": null,
1038
+ "title": "Detail"
1039
+ },
1040
+ "enabled": {
1041
+ "title": "Enabled",
1042
+ "type": "boolean"
1043
+ },
1044
+ "surface_name": {
1045
+ "anyOf": [
1046
+ {
1047
+ "type": "string"
1048
+ },
1049
+ {
1050
+ "type": "null"
1051
+ }
1052
+ ],
1053
+ "default": null,
1054
+ "title": "Surface Name"
1055
+ }
1056
+ },
1057
+ "required": [
1058
+ "blocked_reason",
1059
+ "detail",
1060
+ "enabled",
1061
+ "surface_name"
1062
+ ],
1063
+ "title": "SessionPrompting",
1064
+ "type": "object"
1065
+ },
998
1066
  "SessionRecordWire": {
999
1067
  "description": "The wire shape of one session record (\u00a73.3): the \u00a73.6 stable envelope +\nthe native `payload`, by explicit allowlist. Internal-only columns\n(`search_text`, `clis`, ingest bookkeeping, attribution denormalizations)\nare deliberately absent so internal model evolution stays free.",
1000
1068
  "properties": {
@@ -314,6 +314,18 @@
314
314
  "SessionScheduledPayload": {
315
315
  "description": "session_scheduled \u2014 the session row exists and is queued for a worker.\nThe one session-scoped record emitted at creation (no execution yet).",
316
316
  "properties": {
317
+ "config_commit_sha": {
318
+ "anyOf": [
319
+ {
320
+ "type": "string"
321
+ },
322
+ {
323
+ "type": "null"
324
+ }
325
+ ],
326
+ "default": null,
327
+ "title": "Config Commit Sha"
328
+ },
317
329
  "config_name": {
318
330
  "anyOf": [
319
331
  {
@@ -314,6 +314,9 @@
314
314
  ],
315
315
  "title": "Prompt"
316
316
  },
317
+ "prompting": {
318
+ "$ref": "#/components/schemas/SessionPrompting"
319
+ },
317
320
  "replayed_from_session_id": {
318
321
  "anyOf": [
319
322
  {
@@ -491,7 +494,8 @@
491
494
  "tokens_model",
492
495
  "resolved_budget_cents",
493
496
  "resolved_budget_source",
494
- "status"
497
+ "status",
498
+ "prompting"
495
499
  ],
496
500
  "title": "AgentSessionWire",
497
501
  "type": "object"
@@ -733,6 +737,16 @@
733
737
  "title": "DefaultResolution",
734
738
  "type": "string"
735
739
  },
740
+ "ExecutionStatus": {
741
+ "description": "Per-execution status ladder (was AgentProcessStatus). Distinct from the\nsession's durable `session_state` and from `agent_sessions.status`, which\nremains the atomic claim/dispatch guard.",
742
+ "enum": [
743
+ "running",
744
+ "failed",
745
+ "done"
746
+ ],
747
+ "title": "ExecutionStatus",
748
+ "type": "string"
749
+ },
736
750
  "GithubAccountSnippet": {
737
751
  "description": "Sometimes the GitHub API returns a user of github (can include bots)\nusing this snippet instead of the full GithubAccount model. One example,\nis when the API returns a pull request.\n\nThis is the least amount of info we need to represent a GitHub account.",
738
752
  "properties": {
@@ -791,6 +805,22 @@
791
805
  "title": "Harness",
792
806
  "type": "string"
793
807
  },
808
+ "ListSessionExecutionsResponse": {
809
+ "properties": {
810
+ "executions": {
811
+ "items": {
812
+ "$ref": "#/components/schemas/SessionExecutionWire"
813
+ },
814
+ "title": "Executions",
815
+ "type": "array"
816
+ }
817
+ },
818
+ "required": [
819
+ "executions"
820
+ ],
821
+ "title": "ListSessionExecutionsResponse",
822
+ "type": "object"
823
+ },
794
824
  "ListSessionRecordsResponse": {
795
825
  "properties": {
796
826
  "earliest_feed_seq": {
@@ -896,6 +926,18 @@
896
926
  "title": "ParentKind",
897
927
  "type": "string"
898
928
  },
929
+ "PromptBlockedReason": {
930
+ "description": "Why direct prompting is refused. Absent when prompting is allowed.",
931
+ "enum": [
932
+ "mention_surface",
933
+ "ephemeral_trigger",
934
+ "non_interactive",
935
+ "closed",
936
+ "laptop"
937
+ ],
938
+ "title": "PromptBlockedReason",
939
+ "type": "string"
940
+ },
899
941
  "RecordSource": {
900
942
  "description": "`session_records.source` \u2014 the client render switch. `lifecycle` rows are\ncontroller-emitted platform notifications; a harness value means a native\ntranscript record from that harness.",
901
943
  "enum": [
@@ -947,6 +989,98 @@
947
989
  "title": "SendSessionMessageRequest",
948
990
  "type": "object"
949
991
  },
992
+ "SessionExecutionWire": {
993
+ "properties": {
994
+ "agent_session_id": {
995
+ "title": "Agent Session Id",
996
+ "type": "string"
997
+ },
998
+ "attempt_index": {
999
+ "title": "Attempt Index",
1000
+ "type": "integer"
1001
+ },
1002
+ "created_at": {
1003
+ "format": "date-time",
1004
+ "title": "Created At",
1005
+ "type": "string"
1006
+ },
1007
+ "execution_index": {
1008
+ "title": "Execution Index",
1009
+ "type": "integer"
1010
+ },
1011
+ "exit_status": {
1012
+ "anyOf": [
1013
+ {
1014
+ "type": "string"
1015
+ },
1016
+ {
1017
+ "type": "null"
1018
+ }
1019
+ ],
1020
+ "title": "Exit Status"
1021
+ },
1022
+ "id": {
1023
+ "title": "Id",
1024
+ "type": "string"
1025
+ },
1026
+ "model": {
1027
+ "anyOf": [
1028
+ {
1029
+ "type": "string"
1030
+ },
1031
+ {
1032
+ "type": "null"
1033
+ }
1034
+ ],
1035
+ "title": "Model"
1036
+ },
1037
+ "query": {
1038
+ "anyOf": [
1039
+ {
1040
+ "type": "string"
1041
+ },
1042
+ {
1043
+ "type": "null"
1044
+ }
1045
+ ],
1046
+ "title": "Query"
1047
+ },
1048
+ "resumed": {
1049
+ "title": "Resumed",
1050
+ "type": "boolean"
1051
+ },
1052
+ "status": {
1053
+ "$ref": "#/components/schemas/ExecutionStatus"
1054
+ },
1055
+ "system_prompt_append": {
1056
+ "anyOf": [
1057
+ {
1058
+ "type": "string"
1059
+ },
1060
+ {
1061
+ "type": "null"
1062
+ }
1063
+ ],
1064
+ "title": "System Prompt Append"
1065
+ },
1066
+ "wake_index": {
1067
+ "title": "Wake Index",
1068
+ "type": "integer"
1069
+ }
1070
+ },
1071
+ "required": [
1072
+ "id",
1073
+ "agent_session_id",
1074
+ "created_at",
1075
+ "execution_index",
1076
+ "wake_index",
1077
+ "attempt_index",
1078
+ "resumed",
1079
+ "status"
1080
+ ],
1081
+ "title": "SessionExecutionWire",
1082
+ "type": "object"
1083
+ },
950
1084
  "SessionLiveness": {
951
1085
  "description": "The durable conversation axis (backs the surfaced `session` field).",
952
1086
  "enum": [
@@ -1213,6 +1347,52 @@
1213
1347
  "title": "SessionMessageWire",
1214
1348
  "type": "object"
1215
1349
  },
1350
+ "SessionPrompting": {
1351
+ "description": "The prompt-affordance projection. `enabled` answers \"would a send work\",\nand when it wouldn't, `blocked_reason` + `detail` say why.\n\n`surface_name` is set only for MENTION_SURFACE, naming where to reply.",
1352
+ "properties": {
1353
+ "blocked_reason": {
1354
+ "anyOf": [
1355
+ {
1356
+ "$ref": "#/components/schemas/PromptBlockedReason"
1357
+ },
1358
+ {
1359
+ "type": "null"
1360
+ }
1361
+ ]
1362
+ },
1363
+ "detail": {
1364
+ "anyOf": [
1365
+ {
1366
+ "type": "string"
1367
+ },
1368
+ {
1369
+ "type": "null"
1370
+ }
1371
+ ],
1372
+ "title": "Detail"
1373
+ },
1374
+ "enabled": {
1375
+ "title": "Enabled",
1376
+ "type": "boolean"
1377
+ },
1378
+ "surface_name": {
1379
+ "anyOf": [
1380
+ {
1381
+ "type": "string"
1382
+ },
1383
+ {
1384
+ "type": "null"
1385
+ }
1386
+ ],
1387
+ "title": "Surface Name"
1388
+ }
1389
+ },
1390
+ "required": [
1391
+ "enabled"
1392
+ ],
1393
+ "title": "SessionPrompting",
1394
+ "type": "object"
1395
+ },
1216
1396
  "SessionRecordWire": {
1217
1397
  "description": "The wire shape of one session record (\u00a73.3): the \u00a73.6 stable envelope +\nthe native `payload`, by explicit allowlist. Internal-only columns\n(`search_text`, `clis`, ingest bookkeeping, attribution denormalizations)\nare deliberately absent so internal model evolution stays free.",
1218
1398
  "properties": {
@@ -1626,6 +1806,69 @@
1626
1806
  ]
1627
1807
  }
1628
1808
  },
1809
+ "/v1/sessions/{session_id}/executions": {
1810
+ "get": {
1811
+ "operationId": "get_agent_session_executions_v1_sessions__session_id__executions_get",
1812
+ "parameters": [
1813
+ {
1814
+ "in": "path",
1815
+ "name": "session_id",
1816
+ "required": true,
1817
+ "schema": {
1818
+ "title": "Session Id",
1819
+ "type": "string"
1820
+ }
1821
+ },
1822
+ {
1823
+ "in": "header",
1824
+ "name": "user-agent",
1825
+ "required": false,
1826
+ "schema": {
1827
+ "anyOf": [
1828
+ {
1829
+ "type": "string"
1830
+ },
1831
+ {
1832
+ "type": "null"
1833
+ }
1834
+ ],
1835
+ "title": "User-Agent"
1836
+ }
1837
+ }
1838
+ ],
1839
+ "responses": {
1840
+ "200": {
1841
+ "content": {
1842
+ "application/json": {
1843
+ "schema": {
1844
+ "$ref": "#/components/schemas/ListSessionExecutionsResponse"
1845
+ }
1846
+ }
1847
+ },
1848
+ "description": "Successful Response"
1849
+ },
1850
+ "422": {
1851
+ "content": {
1852
+ "application/json": {
1853
+ "schema": {
1854
+ "$ref": "#/components/schemas/HTTPValidationError"
1855
+ }
1856
+ }
1857
+ },
1858
+ "description": "Validation Error"
1859
+ }
1860
+ },
1861
+ "security": [
1862
+ {
1863
+ "HTTPBearer": []
1864
+ }
1865
+ ],
1866
+ "summary": "Get Agent Session Executions",
1867
+ "tags": [
1868
+ "v1"
1869
+ ]
1870
+ }
1871
+ },
1629
1872
  "/v1/sessions/{session_id}/messages": {
1630
1873
  "post": {
1631
1874
  "operationId": "send_agent_session_message_v1_sessions__session_id__messages_post",