linkshell-cli 0.10.74 → 0.10.76

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.
Files changed (134) hide show
  1. package/dist/cli/src/commands/desktop-workspace.js +62 -9
  2. package/dist/cli/src/commands/desktop-workspace.js.map +1 -1
  3. package/dist/cli/src/commands/desktop.d.ts +90 -74
  4. package/dist/cli/src/commands/desktop.js +87 -1
  5. package/dist/cli/src/commands/desktop.js.map +1 -1
  6. package/dist/cli/src/commands/login-error.d.ts +9 -0
  7. package/dist/cli/src/commands/login-error.js +14 -0
  8. package/dist/cli/src/commands/login-error.js.map +1 -0
  9. package/dist/cli/src/commands/login.d.ts +2 -7
  10. package/dist/cli/src/commands/login.js +23 -52
  11. package/dist/cli/src/commands/login.js.map +1 -1
  12. package/dist/cli/src/commands/sign-in.d.ts +77 -0
  13. package/dist/cli/src/commands/sign-in.js +390 -0
  14. package/dist/cli/src/commands/sign-in.js.map +1 -0
  15. package/dist/cli/src/index.js +2 -1
  16. package/dist/cli/src/index.js.map +1 -1
  17. package/dist/cli/tsconfig.tsbuildinfo +1 -1
  18. package/dist/client-core/src/account-errors.d.ts +17 -0
  19. package/dist/client-core/src/account-errors.js +82 -0
  20. package/dist/client-core/src/account-errors.js.map +1 -0
  21. package/dist/host/src/acp-settings.js +1 -1
  22. package/dist/host/src/acp-settings.js.map +1 -1
  23. package/dist/host/src/computer-preview.d.ts +1 -9
  24. package/dist/host/src/drivers/acp/antigravity.d.ts +13 -0
  25. package/dist/host/src/drivers/acp/antigravity.js +13 -0
  26. package/dist/host/src/drivers/acp/antigravity.js.map +1 -1
  27. package/dist/host/src/drivers/acp/driver.d.ts +14 -1
  28. package/dist/host/src/drivers/acp/driver.js +45 -3
  29. package/dist/host/src/drivers/acp/driver.js.map +1 -1
  30. package/dist/host/src/drivers/acp/mapper.d.ts +2 -0
  31. package/dist/host/src/drivers/acp/mapper.js +6 -1
  32. package/dist/host/src/drivers/acp/mapper.js.map +1 -1
  33. package/dist/host/src/drivers/acp/questions.js +2 -2
  34. package/dist/host/src/drivers/acp/questions.js.map +1 -1
  35. package/dist/host/src/drivers/claude/app-sessions.d.ts +58 -0
  36. package/dist/host/src/drivers/claude/app-sessions.js +183 -0
  37. package/dist/host/src/drivers/claude/app-sessions.js.map +1 -0
  38. package/dist/host/src/drivers/claude/driver.d.ts +22 -1
  39. package/dist/host/src/drivers/claude/driver.js +99 -11
  40. package/dist/host/src/drivers/claude/driver.js.map +1 -1
  41. package/dist/host/src/drivers/claude/holders.d.ts +3 -1
  42. package/dist/host/src/drivers/claude/holders.js +4 -0
  43. package/dist/host/src/drivers/claude/holders.js.map +1 -1
  44. package/dist/host/src/drivers/claude/routing.d.ts +19 -0
  45. package/dist/host/src/drivers/claude/routing.js +145 -0
  46. package/dist/host/src/drivers/claude/routing.js.map +1 -0
  47. package/dist/host/src/drivers/claude/tasks.d.ts +2 -2
  48. package/dist/host/src/drivers/claude/transcript.d.ts +389 -344
  49. package/dist/host/src/drivers/claude/transcript.js +97 -22
  50. package/dist/host/src/drivers/claude/transcript.js.map +1 -1
  51. package/dist/host/src/drivers/codex/driver.d.ts +15 -0
  52. package/dist/host/src/drivers/codex/driver.js +47 -9
  53. package/dist/host/src/drivers/codex/driver.js.map +1 -1
  54. package/dist/host/src/drivers/codex/mapper.d.ts +41 -7
  55. package/dist/host/src/drivers/codex/mapper.js +167 -26
  56. package/dist/host/src/drivers/codex/mapper.js.map +1 -1
  57. package/dist/host/src/drivers/codex/mcp-apps.d.ts +69 -0
  58. package/dist/host/src/drivers/codex/mcp-apps.js +340 -0
  59. package/dist/host/src/drivers/codex/mcp-apps.js.map +1 -0
  60. package/dist/host/src/drivers/codex/settings.d.ts +13 -0
  61. package/dist/host/src/drivers/codex/settings.js +22 -6
  62. package/dist/host/src/drivers/codex/settings.js.map +1 -1
  63. package/dist/host/src/drivers/types.d.ts +50 -1
  64. package/dist/host/src/fs.d.ts +9 -9
  65. package/dist/host/src/hub.d.ts +120 -83
  66. package/dist/host/src/hub.js +157 -13
  67. package/dist/host/src/hub.js.map +1 -1
  68. package/dist/host/src/input.d.ts +43 -89
  69. package/dist/host/src/input.js +1 -1
  70. package/dist/host/src/input.js.map +1 -1
  71. package/dist/host/src/rpc/mcp.d.ts +8 -0
  72. package/dist/host/src/rpc/mcp.js +33 -0
  73. package/dist/host/src/rpc/mcp.js.map +1 -0
  74. package/dist/host/src/rpc/server.js +16 -2
  75. package/dist/host/src/rpc/server.js.map +1 -1
  76. package/dist/host/src/screen-session.d.ts +3 -17
  77. package/dist/host/src/screen-session.js +2 -2
  78. package/dist/host/src/screen-session.js.map +1 -1
  79. package/dist/host/src/store.d.ts +7 -0
  80. package/dist/host/src/store.js +27 -3
  81. package/dist/host/src/store.js.map +1 -1
  82. package/dist/host/src/terminals.d.ts +12 -6
  83. package/dist/host/src/terminals.js +29 -2
  84. package/dist/host/src/terminals.js.map +1 -1
  85. package/dist/host/src/usage.d.ts +5 -0
  86. package/dist/host/src/usage.js +10 -2
  87. package/dist/host/src/usage.js.map +1 -1
  88. package/dist/wire/src/acp.d.ts +68 -430
  89. package/dist/wire/src/acp.js +5 -5
  90. package/dist/wire/src/acp.js.map +1 -1
  91. package/dist/wire/src/async-questions.d.ts +2 -10
  92. package/dist/wire/src/computer-preview.d.ts +1 -15
  93. package/dist/wire/src/computer-preview.js +1 -1
  94. package/dist/wire/src/computer-preview.js.map +1 -1
  95. package/dist/wire/src/content.d.ts +205 -370
  96. package/dist/wire/src/content.js +4 -4
  97. package/dist/wire/src/content.js.map +1 -1
  98. package/dist/wire/src/editor.d.ts +48 -592
  99. package/dist/wire/src/envelopes.d.ts +53 -0
  100. package/dist/wire/src/envelopes.js +263 -0
  101. package/dist/wire/src/envelopes.js.map +1 -0
  102. package/dist/wire/src/goal.d.ts +15 -48
  103. package/dist/wire/src/index.d.ts +2 -0
  104. package/dist/wire/src/index.js +2 -0
  105. package/dist/wire/src/index.js.map +1 -1
  106. package/dist/wire/src/live-activity.d.ts +83 -212
  107. package/dist/wire/src/live-activity.js +1 -1
  108. package/dist/wire/src/live-activity.js.map +1 -1
  109. package/dist/wire/src/model.d.ts +454 -2277
  110. package/dist/wire/src/model.js +24 -0
  111. package/dist/wire/src/model.js.map +1 -1
  112. package/dist/wire/src/relay.d.ts +41 -267
  113. package/dist/wire/src/relay.js +1 -1
  114. package/dist/wire/src/relay.js.map +1 -1
  115. package/dist/wire/src/rpc-mcp.d.ts +84 -0
  116. package/dist/wire/src/rpc-mcp.js +78 -0
  117. package/dist/wire/src/rpc-mcp.js.map +1 -0
  118. package/dist/wire/src/rpc.d.ts +6747 -30929
  119. package/dist/wire/src/rpc.js +35 -7
  120. package/dist/wire/src/rpc.js.map +1 -1
  121. package/dist/wire/src/side.d.ts +13 -61
  122. package/dist/wire/src/updates.d.ts +1743 -6652
  123. package/dist/wire/src/updates.js +14 -1
  124. package/dist/wire/src/updates.js.map +1 -1
  125. package/dist/wire/src/usage.d.ts +17 -195
  126. package/dist/wire/src/watch.d.ts +223 -1141
  127. package/dist/wire/src/workflow.d.ts +46 -139
  128. package/package.json +4 -4
  129. package/src/commands/desktop-workspace.ts +69 -11
  130. package/src/commands/desktop.ts +71 -1
  131. package/src/commands/login-error.ts +12 -0
  132. package/src/commands/login.ts +13 -62
  133. package/src/commands/sign-in.ts +408 -0
  134. package/src/index.ts +2 -1
@@ -1,4 +1,4 @@
1
- import { type GoalChange, type BackgroundTask, type AgentInfo, type ContentBlock, type SessionEvent, type SessionSummary, type SubagentInfo, type QuestionAnswer, type GitInfo, type ProjectSummary, type WorktreeEntry, type SessionNotice, type AcpAgentSettings, type AcpRemoteAgent, type PendingPermissionSummary, type EditorRequest, type SideChat } from "@linkshell/wire";
1
+ import { type GoalChange, type BackgroundTask, type AgentInfo, type ContentBlock, type SessionEvent, type SessionSummary, type SubagentInfo, type QuestionAnswer, type GitInfo, type ProjectSummary, type WorktreeEntry, type SessionNotice, type AcpAgentSettings, type AcpRemoteAgent, type PendingPermissionSummary, type EditorRequest, type SideChat, type MethodResult } from "@linkshell/wire";
2
2
  import type { AcpSettingsStore } from "./acp-settings.js";
3
3
  import type { AgentDriver, DesktopController, DesktopLaunchContext, DriverHost, LaunchSpec } from "./drivers/types.js";
4
4
  import { type HostStore } from "./store.js";
@@ -9,6 +9,17 @@ export interface Subscriber {
9
9
  /** The backlog that follows starts after `startSeq`, not where the subscriber left off. */
10
10
  window?(startSeq: number): void;
11
11
  }
12
+ /**
13
+ * Archived here or in the app, unless it was unarchived here after the app
14
+ * archived it (`local.at` 0: chosen before times were kept, so it never outranks the app).
15
+ */
16
+ export declare function mergedArchive(local: {
17
+ archived: boolean;
18
+ at: number;
19
+ }, app: {
20
+ archived: boolean;
21
+ since: number;
22
+ } | undefined): boolean;
12
23
  /**
13
24
  * The host's source of truth for sessions. Drivers push native events in;
14
25
  * the hub logs them with a per-session seq, keeps summaries current and fans
@@ -77,47 +88,53 @@ export declare class SessionHub {
77
88
  pendingInteractions(): {
78
89
  agent: string;
79
90
  request: {
91
+ requestId: string;
92
+ title: string;
80
93
  options: {
81
- kind: "allow_once" | "allow_always" | "reject_once" | "reject_always";
82
- name: string;
83
94
  optionId: string;
95
+ name: string;
96
+ kind: "allow_once" | "allow_always" | "reject_once" | "reject_always";
84
97
  }[];
85
- title: string;
86
- requestId: string;
98
+ childSessionId?: string | undefined;
87
99
  toolCallId?: string | undefined;
100
+ detail?: string | undefined;
88
101
  tool?: {
89
- kind?: "search" | "delete" | "other" | "read" | "edit" | "move" | "execute" | "think" | "fetch" | "switch_mode" | undefined;
90
102
  title?: string | undefined;
103
+ kind?: "search" | "delete" | "other" | "read" | "edit" | "move" | "execute" | "think" | "fetch" | "switch_mode" | undefined;
104
+ rawInput?: unknown;
91
105
  content?: ({
92
106
  type: "content";
93
107
  content: {
94
108
  type: "text";
95
109
  text: string;
96
- annotations?: import("zod").objectOutputType<{
97
- audience: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodEnum<["user", "assistant"]>, "many">>>, ("user" | "assistant")[] | undefined, ("user" | "assistant")[] | null | undefined>;
98
- priority: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>, number | undefined, number | null | undefined>;
99
- lastModified: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>, string | undefined, string | null | undefined>;
100
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
110
+ annotations?: {
111
+ [x: string]: unknown;
112
+ audience?: ("user" | "assistant")[] | undefined;
113
+ priority?: number | undefined;
114
+ lastModified?: string | undefined;
115
+ } | undefined;
101
116
  _meta?: Record<string, unknown> | undefined;
102
117
  } | {
103
118
  type: "image";
104
119
  mimeType: string;
105
- annotations?: import("zod").objectOutputType<{
106
- audience: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodEnum<["user", "assistant"]>, "many">>>, ("user" | "assistant")[] | undefined, ("user" | "assistant")[] | null | undefined>;
107
- priority: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>, number | undefined, number | null | undefined>;
108
- lastModified: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>, string | undefined, string | null | undefined>;
109
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
120
+ annotations?: {
121
+ [x: string]: unknown;
122
+ audience?: ("user" | "assistant")[] | undefined;
123
+ priority?: number | undefined;
124
+ lastModified?: string | undefined;
125
+ } | undefined;
110
126
  _meta?: Record<string, unknown> | undefined;
111
127
  data?: string | undefined;
112
128
  uri?: string | undefined;
113
129
  } | {
114
130
  type: "audio";
115
131
  mimeType: string;
116
- annotations?: import("zod").objectOutputType<{
117
- audience: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodEnum<["user", "assistant"]>, "many">>>, ("user" | "assistant")[] | undefined, ("user" | "assistant")[] | null | undefined>;
118
- priority: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>, number | undefined, number | null | undefined>;
119
- lastModified: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>, string | undefined, string | null | undefined>;
120
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
132
+ annotations?: {
133
+ [x: string]: unknown;
134
+ audience?: ("user" | "assistant")[] | undefined;
135
+ priority?: number | undefined;
136
+ lastModified?: string | undefined;
137
+ } | undefined;
121
138
  _meta?: Record<string, unknown> | undefined;
122
139
  data?: string | undefined;
123
140
  uri?: string | undefined;
@@ -125,68 +142,66 @@ export declare class SessionHub {
125
142
  type: "resource";
126
143
  resource: {
127
144
  uri: string;
128
- text?: string | undefined;
129
- _meta?: Record<string, unknown> | undefined;
130
145
  mimeType?: string | undefined;
146
+ text?: string | undefined;
131
147
  blob?: string | undefined;
132
148
  assetUri?: string | undefined;
149
+ _meta?: Record<string, unknown> | undefined;
133
150
  };
134
- annotations?: import("zod").objectOutputType<{
135
- audience: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodEnum<["user", "assistant"]>, "many">>>, ("user" | "assistant")[] | undefined, ("user" | "assistant")[] | null | undefined>;
136
- priority: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>, number | undefined, number | null | undefined>;
137
- lastModified: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>, string | undefined, string | null | undefined>;
138
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
151
+ annotations?: {
152
+ [x: string]: unknown;
153
+ audience?: ("user" | "assistant")[] | undefined;
154
+ priority?: number | undefined;
155
+ lastModified?: string | undefined;
156
+ } | undefined;
139
157
  _meta?: Record<string, unknown> | undefined;
140
158
  } | {
141
159
  type: "resource_link";
142
160
  uri: string;
143
161
  name: string;
144
162
  kind?: "file" | "skill" | "agent" | undefined;
145
- annotations?: import("zod").objectOutputType<{
146
- audience: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodEnum<["user", "assistant"]>, "many">>>, ("user" | "assistant")[] | undefined, ("user" | "assistant")[] | null | undefined>;
147
- priority: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>, number | undefined, number | null | undefined>;
148
- lastModified: import("zod").ZodEffects<import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>, string | undefined, string | null | undefined>;
149
- }, import("zod").ZodTypeAny, "passthrough"> | undefined;
163
+ annotations?: {
164
+ [x: string]: unknown;
165
+ audience?: ("user" | "assistant")[] | undefined;
166
+ priority?: number | undefined;
167
+ lastModified?: string | undefined;
168
+ } | undefined;
150
169
  _meta?: Record<string, unknown> | undefined;
151
- mimeType?: string | undefined;
152
170
  title?: string | undefined;
153
171
  description?: string | undefined;
172
+ mimeType?: string | undefined;
154
173
  size?: number | undefined;
155
174
  };
156
175
  } | {
157
- path: string;
158
176
  type: "diff";
177
+ path: string;
159
178
  newText: string;
160
179
  oldText?: string | null | undefined;
161
180
  } | {
162
- path: string;
163
181
  type: "patch";
164
- diff: string;
182
+ path: string;
165
183
  change: "add" | "delete" | "update";
184
+ diff: string;
166
185
  movePath?: string | undefined;
167
186
  } | {
168
187
  type: "terminal";
169
188
  terminalId: string;
170
189
  })[] | undefined;
171
- rawInput?: unknown;
172
190
  locations?: {
173
191
  path: string;
174
192
  line?: number | undefined;
175
193
  }[] | undefined;
176
194
  } | undefined;
177
- detail?: string | undefined;
195
+ url?: {
196
+ url: string;
197
+ elicitationId: string;
198
+ } | undefined;
178
199
  questions?: {
179
- kind: "text" | "choice" | "choices";
180
- text: string;
181
200
  id: string;
182
- options?: {
183
- value: string;
184
- label: string;
185
- description?: string | undefined;
186
- }[] | undefined;
187
- other?: boolean | undefined;
201
+ text: string;
202
+ kind: "text" | "choice" | "choices";
188
203
  constraints?: {
189
- type: "string" | "number" | "boolean" | "integer" | "array";
204
+ type: "string" | "number" | "boolean" | "array" | "integer";
190
205
  minimum?: number | undefined;
191
206
  maximum?: number | undefined;
192
207
  minLength?: number | undefined;
@@ -198,42 +213,24 @@ export declare class SessionHub {
198
213
  } | undefined;
199
214
  defaults?: string[] | undefined;
200
215
  header?: string | undefined;
216
+ options?: {
217
+ value: string;
218
+ label: string;
219
+ description?: string | undefined;
220
+ }[] | undefined;
221
+ other?: boolean | undefined;
201
222
  secret?: boolean | undefined;
202
223
  required?: boolean | undefined;
203
224
  }[] | undefined;
204
- childSessionId?: string | undefined;
205
- url?: {
206
- url: string;
207
- elicitationId: string;
208
- } | undefined;
209
225
  };
210
226
  }[];
211
227
  editor(input: EditorRequest): Promise<{
228
+ editorId?: string | undefined;
212
229
  path?: string | undefined;
213
230
  text?: string | undefined;
214
231
  version?: number | undefined;
215
- preview?: {
216
- kind: "edit" | "jump" | "searchAndReplace";
217
- path: string;
218
- id: string;
219
- before: string;
220
- after: string;
221
- position?: {
222
- line: number;
223
- character: number;
224
- } | undefined;
225
- } | undefined;
226
- position?: {
227
- line: number;
228
- character: number;
229
- } | undefined;
230
- editorId?: string | undefined;
231
232
  suggestions?: ({
232
- kind: "edit";
233
- uri: string;
234
- id: string;
235
233
  edits: {
236
- newText: string;
237
234
  range: {
238
235
  start: {
239
236
  line: number;
@@ -244,36 +241,55 @@ export declare class SessionHub {
244
241
  character: number;
245
242
  };
246
243
  };
244
+ newText: string;
247
245
  }[];
246
+ id: string;
247
+ uri: string;
248
+ kind: "edit";
248
249
  cursorPosition?: {
249
250
  line: number;
250
251
  character: number;
251
252
  } | null | undefined;
252
253
  } | {
253
- kind: "jump";
254
- uri: string;
255
- id: string;
256
254
  position: {
257
255
  line: number;
258
256
  character: number;
259
257
  };
260
- } | {
261
- kind: "rename";
262
- uri: string;
263
258
  id: string;
259
+ uri: string;
260
+ kind: "jump";
261
+ } | {
264
262
  position: {
265
263
  line: number;
266
264
  character: number;
267
265
  };
268
266
  newName: string;
267
+ id: string;
268
+ uri: string;
269
+ kind: "rename";
269
270
  } | {
270
- replace: string;
271
271
  search: string;
272
- kind: "searchAndReplace";
273
- uri: string;
272
+ replace: string;
274
273
  id: string;
274
+ uri: string;
275
+ kind: "searchAndReplace";
275
276
  isRegex?: boolean | null | undefined;
276
277
  })[] | undefined;
278
+ preview?: {
279
+ id: string;
280
+ path: string;
281
+ before: string;
282
+ after: string;
283
+ kind: "edit" | "jump" | "searchAndReplace";
284
+ position?: {
285
+ line: number;
286
+ character: number;
287
+ } | undefined;
288
+ } | undefined;
289
+ position?: {
290
+ line: number;
291
+ character: number;
292
+ } | undefined;
277
293
  }>;
278
294
  configureAcp(agent: string, settings: AcpAgentSettings, sessionId?: string): Promise<void>;
279
295
  authenticate(agent: string, methodId?: string, logout?: boolean): Promise<{
@@ -289,9 +305,9 @@ export declare class SessionHub {
289
305
  baseUrl?: string;
290
306
  headers?: Record<string, string>;
291
307
  }): Promise<{
292
- required: boolean;
293
308
  providerId: string;
294
309
  supported: string[];
310
+ required: boolean;
295
311
  current?: {
296
312
  apiType: string;
297
313
  baseUrl: string;
@@ -315,6 +331,11 @@ export declare class SessionHub {
315
331
  /** Asked for every project each time the list is: remembered for a moment. */
316
332
  private branchOf;
317
333
  getSession(sessionId: string): SessionSummary;
334
+ /** A session and its agent's driver, unchecked: for what one driver offers itself (`mcp.*`), which says what it needs of it. */
335
+ sessionDriver(sessionId: string): {
336
+ session: SessionSummary;
337
+ driver: AgentDriver | undefined;
338
+ };
318
339
  /** Adds the live-only fields (current activity, first pending permission) to a stored summary. */
319
340
  /** Marks a session that works in one of LinkShell's worktrees. */
320
341
  private withWorktree;
@@ -322,7 +343,20 @@ export declare class SessionHub {
322
343
  private worktrees;
323
344
  private readonly pendingQuestions;
324
345
  private questionsOf;
346
+ /** Per session, the session it was forked from (null: none), read from the store once. */
347
+ private readonly forkOrigins;
348
+ /** Per session, the sessions whose lineage names it: their rows change when it comes or goes. */
349
+ private readonly related;
350
+ private forkOrigin;
351
+ /** Where the session came from, naming only sessions this host has: a list can't nest under one it doesn't show. */
352
+ private withLineage;
353
+ /** As the Claude app nests: a session still in use stands alone when the one it came from is archived. */
354
+ private firstKnown;
355
+ /** The session came, went or was (un)archived: the rows that name it as parent or origin say so now. */
356
+ private announceRelated;
325
357
  private decorate;
358
+ /** What a new session of `agent` could run on (see `agents.models`): nothing from a driver that can't tell before a session exists. */
359
+ agentModels(agent: string, cwd?: string): Promise<MethodResult<"agents.models">>;
326
360
  createSession(input: {
327
361
  agent: string;
328
362
  cwd: string;
@@ -416,6 +450,9 @@ export declare class SessionHub {
416
450
  private sendHeld;
417
451
  onRemoved(listener: (sessionId: string) => void): () => void;
418
452
  archive(sessionId: string, archived: boolean): Promise<SessionSummary>;
453
+ /** Folds in the archive state of the agent's app that LinkShell only reads (see `mergedArchive`). */
454
+ private reconcileAppArchive;
455
+ private localArchive;
419
456
  rename(sessionId: string, title: string): Promise<SessionSummary>;
420
457
  /**
421
458
  * Deletes a session. A worktree only it used goes too when nothing in it