@robota-sdk/agent-ui-web 3.0.6 → 3.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,85 @@
1
1
  # @robota-sdk/agent-ui-web
2
2
 
3
+ ## 3.1.1
4
+ ### Patch Changes
5
+
6
+ - @robota-sdk/agent-interface-command@3.1.1
7
+ - @robota-sdk/agent-interface-execution@3.1.1
8
+ - @robota-sdk/agent-interface-session@3.1.1
9
+ - @robota-sdk/agent-interface-transport@3.1.1
10
+ - @robota-sdk/agent-transport@3.1.1
11
+
12
+ ## 3.1.0
13
+ ### Minor Changes
14
+
15
+ - bc8de21: `TSessionLoadOutcome` gains a fifth status, `locked`: the record is there and sealed, and this
16
+ process cannot open it right now (`reason: 'no-keys'` when the store keeps its records `'plain'`,
17
+ `'changed'` when a held session's file changed since). `list()` leaves locked sessions out, since
18
+ there is no record to describe; the optional `scan()` returns the listing together with how many it
19
+ left out — `locked`, which an unlock would list, and an optional `noKeys` for those sealed with keys
20
+ this process does not have — and `scanSessionStore`/`listResumableSessions` in
21
+ `@robota-sdk/agent-framework` read it. `lockedSessionReason`, `lockedSessionMessage(id, reason)` and
22
+ `lockedSessionsNotice(locked, noKeys)` word a sealed session by why it does not open, so only locked
23
+ keys are ever met with "unlock"; resume, rename, hand-off, usage and the CLI's notices follow them. A
24
+ served session listing carries how many sealed sessions the host cannot open, its keys locked or
25
+ none that open them, as `lockedSessionCount`; the reason does not cross the wire, so the terminal
26
+ picker and the web session list say how many are sealed and not listed, never to unlock.
27
+
28
+ `@robota-sdk/agent-interface-analytics` adds an optional `IPersonalUsageCoverage.lockedSessions`, the
29
+ number of sealed sessions a usage report could not open (locked keys, or none that open them).
30
+ `@robota-sdk/agent-session-analytics` adds an optional `IPersonalUsageSnapshot.lockedSessionCount`,
31
+ which fills it, and the formatted report then reads `locked N` in its coverage line.
32
+
33
+ What to do: a `switch` over `outcome.status` handles `locked`; when you write, treat it like
34
+ `corrupt` (do not save over it). A surface that lists sessions can show `scan().locked` and
35
+ `scan().noKeys` so sealed sessions do not look deleted.
36
+ - a2d36ea: Move what touches a host out of the main entries of `@robota-sdk/agent-command` and `@robota-sdk/agent-preset` into new Node-only `./node` subpaths (`"browser": null`), so neither main entry names a Node module of its own. Both stay Node-only until the packages they import go neutral.
37
+
38
+ - `@robota-sdk/agent-command/node` (new) holds `/shell` and `/editor` (`createShellCommandModule`, `createEditorCommandModule` and their sources, entries, `execute*`, `resolveShell`, `resolveEditor` and `spawnInherited`), `createTerminalClientCommands` (an attached terminal runs `/shell` and `/editor` itself), `createNodeDoctorDeps` and `resolveCommandOnPath`, and the new `openFileInEditor`. Import these from `/node`.
39
+ - `createDefaultCommandModules` no longer builds `/shell` and `/editor`, and its `editorTemporaryDirectoryPrefix` option is gone: a Node product adds the two modules beside the default set, as `@robota-sdk/pack-coding` already does. The CLI's command list is unchanged.
40
+ - `/doctor` takes its probes and writers by injection. `createDoctorCommandModule(inputs, deps, display)` has no default for `deps` (pass `createNodeDoctorDeps` from `/node`), `IDoctorDeps` gains `ensureOwnerOnlyDirectory` and `writeSettings` for the confirmed repairs and a required `files: IFileSystem` that the plugin and skill probes read installed extensions through, and `createDefaultCommandModules` takes `doctorDeps`. Absent, `/doctor` is still listed and answers that it is unavailable on this host; nothing is probed or written.
41
+ - `/git` runs through an injected process. `createGitCommandModule({ port })` has no default `createGitProcess()` any more and `createDefaultCommandModules` takes `gitProcess`; absent, `/git` is still listed and answers that it is unavailable on this host, and no process starts. `@robota-sdk/agent-command` no longer re-exports `createGitProcess`, `gitEnvironment`, `ICreateGitProcessOptions`, `IGitProcessPort`, `IGitProcessRunOptions`, `TGitProcessFailureReason` or `TGitProcessOutcome`: import `createGitProcess`, `gitEnvironment` and `ICreateGitProcessOptions` from `@robota-sdk/agent-framework/node`, and the port and outcome types (`IGitProcessPort`, `IGitProcessRunOptions`, `TGitProcessFailureReason`, `TGitProcessOutcome`) from `@robota-sdk/agent-framework`, which owns them. `@robota-sdk/agent-cli` and `@robota-sdk/pack-coding` pass `createGitProcess()`.
42
+ - `/keybindings` opens its file through an injected `TOpenFileInEditor`: `createKeybindingsCommandModule(file, openInEditor)` and the new `keybindingsEditor` option of `createDefaultCommandModules` (pass `openFileInEditor` from `/node`). Absent, `/keybindings` answers that the editor is unavailable here and creates no file.
43
+ - `/provider` and `/model` read a `$ENV:` credential reference from the host's `env` snapshot only. Absent, the reference reads as unset (the setup says so and asks again); the live process environment is no longer consulted by the command itself.
44
+ - `/loop` takes its ids and per-loop offset from `randomId` and `sha256Hex` in `@robota-sdk/agent-core`; both read exactly as before.
45
+ - The `/doctor` check ids (`settings.<scope>.<family>`) read a project-relative path a Windows host joined with `\` as they read one joined with `/`.
46
+ - `@robota-sdk/agent-preset/node` (new) holds `loadExternalPresetsFromDir`. The main entry gains `loadExternalPresetsFromFiles` (`IExternalPresetFile` list of `{ fileName, read }`), which has the same per-file error rules over files a host hands it; only `*.json` names are read. Output-style file ids are read from the file name without `node:path`.
47
+ - `@robota-sdk/agent-cli` passes `createNodeDoctorDeps` and `openFileInEditor`, and reads the preset directory and runs the attached terminal's commands through the `/node` entries, so every command behaves as before. `@robota-sdk/pack-coding` and `@robota-sdk/agent-ui-terminal` (tests) import `/shell` and `/editor` from `@robota-sdk/agent-command/node`; `@robota-sdk/agent-ui-web` only has a test comment updated.
48
+ - b56b5a9: Ship one build per package. The platform-neutral entries moved from `dist/node` to `dist`, and the second
49
+ `dist/browser` build of `@robota-sdk/agent-core`, `@robota-sdk/agent-transport`,
50
+ `@robota-sdk/agent-ui-web` and `@robota-sdk/agent-transport-webrtc-web` is gone: a neutral entry runs
51
+ unchanged in every runtime, so a subpath's `exports` map `import` and `require` to the same files and no
52
+ longer a `node` or `browser` condition (a Node-only subpath keeps `"browser": null`). Import specifiers
53
+ and the code behind them are unchanged; only a deep import of `dist/node/*` or `dist/browser/*` breaks.
54
+ `@robota-sdk/agent-transport/client` also ships a CommonJS build now.
55
+
56
+ ### Patch Changes
57
+
58
+ - Updated dependencies [bc8de21]
59
+ - Updated dependencies [eabce48]
60
+ - Updated dependencies [bc8de21]
61
+ - Updated dependencies [eabce48]
62
+ - Updated dependencies [eabce48]
63
+ - Updated dependencies [bc8de21]
64
+ - Updated dependencies [82663df]
65
+ - Updated dependencies [bc8de21]
66
+ - Updated dependencies [437ca9e]
67
+ - Updated dependencies [b56b5a9]
68
+ - @robota-sdk/agent-interface-session@3.1.0
69
+ - @robota-sdk/agent-interface-execution@3.1.0
70
+ - @robota-sdk/agent-transport@3.1.0
71
+ - @robota-sdk/agent-interface-transport@3.1.0
72
+ - @robota-sdk/agent-interface-command@3.1.0
73
+
74
+ ## 3.0.7
75
+ ### Patch Changes
76
+
77
+ - @robota-sdk/agent-interface-command@3.0.7
78
+ - @robota-sdk/agent-interface-execution@3.0.7
79
+ - @robota-sdk/agent-interface-session@3.0.7
80
+ - @robota-sdk/agent-interface-transport@3.0.7
81
+ - @robota-sdk/agent-transport@3.0.7
82
+
3
83
  ## 3.0.6
4
84
  ### Patch Changes
5
85
 
@@ -4316,6 +4316,16 @@ function otherClients(session, isCurrent) {
4316
4316
  return others >= 1 ? others : null;
4317
4317
  }
4318
4318
  /**
4319
+ * The line for sealed sessions the host cannot open: the listing leaves them out, so without it they
4320
+ * would read as gone. The host's keys may be locked or may not open them at all, and which does not
4321
+ * cross the wire, so it never says to unlock. Same wording as the terminal's for a host's listing,
4322
+ * which this package does not depend on.
4323
+ */
4324
+ function lockedSessionsLine(count) {
4325
+ if (count === void 0 || count <= 0) return null;
4326
+ return count === 1 ? "1 saved session is sealed and not listed here." : `${count} saved sessions are sealed and not listed here.`;
4327
+ }
4328
+ /**
4319
4329
  * #3189 — this workspace's sessions on the left of the conversation, as in Claude Code Desktop:
4320
4330
  * start a new one, or click another to make it current. Rows the host could not read are listed,
4321
4331
  * disabled, so a damaged session never looks deleted. A refused switch comes back as a notice.
@@ -4329,6 +4339,7 @@ function SessionSidebar({ state, brand, className }) {
4329
4339
  const listing = state.sessionListing ?? null;
4330
4340
  const current = listing?.currentSessionId ?? null;
4331
4341
  const unreadable = listing?.unreadableSessionIds ?? [];
4342
+ const lockedLine = lockedSessionsLine(listing?.lockedSessionCount);
4332
4343
  const failed = state.sessionsError?.code === "list_failed" ? state.sessionsError.message : null;
4333
4344
  const connected = state.status === "connected";
4334
4345
  const [menu, setMenu] = (0, react.useState)(null);
@@ -4429,121 +4440,128 @@ function SessionSidebar({ state, brand, className }) {
4429
4440
  }) : null,
4430
4441
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("ul", {
4431
4442
  className: "space-y-px",
4432
- children: [rows.map((session) => {
4433
- const isCurrent = session.id === current;
4434
- const others = otherClients(session, isCurrent);
4435
- const isRenaming = renamingId === session.id;
4436
- const statusParts = [session.live === true ? "Live" : null, others !== null ? `${others} ${others === 1 ? "other" : "others"}` : null].filter((part) => part !== null);
4437
- const statusId = `session-status-${session.id}`;
4438
- const updatedId = `session-updated-${session.id}`;
4439
- const describedBy = statusParts.length > 0 ? `${updatedId} ${statusId}` : updatedId;
4440
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
4441
- className: "group relative",
4442
- children: [isRenaming ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4443
- autoFocus: true,
4444
- "aria-label": `Rename ${sessionTitle(session)}`,
4445
- value: renameValue,
4446
- onChange: (event) => setRenameValue(event.target.value),
4447
- onBlur: () => saveRename(session),
4448
- onKeyDown: (event) => {
4449
- if (event.key === "Enter") {
4450
- event.preventDefault();
4451
- saveRename(session);
4452
- } else if (event.key === "Escape") {
4443
+ children: [
4444
+ rows.map((session) => {
4445
+ const isCurrent = session.id === current;
4446
+ const others = otherClients(session, isCurrent);
4447
+ const isRenaming = renamingId === session.id;
4448
+ const statusParts = [session.live === true ? "Live" : null, others !== null ? `${others} ${others === 1 ? "other" : "others"}` : null].filter((part) => part !== null);
4449
+ const statusId = `session-status-${session.id}`;
4450
+ const updatedId = `session-updated-${session.id}`;
4451
+ const describedBy = statusParts.length > 0 ? `${updatedId} ${statusId}` : updatedId;
4452
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
4453
+ className: "group relative",
4454
+ children: [isRenaming ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4455
+ autoFocus: true,
4456
+ "aria-label": `Rename ${sessionTitle(session)}`,
4457
+ value: renameValue,
4458
+ onChange: (event) => setRenameValue(event.target.value),
4459
+ onBlur: () => saveRename(session),
4460
+ onKeyDown: (event) => {
4461
+ if (event.key === "Enter") {
4462
+ event.preventDefault();
4463
+ saveRename(session);
4464
+ } else if (event.key === "Escape") {
4465
+ event.preventDefault();
4466
+ setRenamingId(null);
4467
+ }
4468
+ },
4469
+ className: "w-full rounded-lg border border-accent bg-raised px-2.5 py-2 text-[14px] text-foreground outline-none"
4470
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
4471
+ type: "button",
4472
+ "aria-current": isCurrent ? "true" : void 0,
4473
+ "aria-label": sessionTitle(session),
4474
+ "aria-describedby": describedBy,
4475
+ title: connected ? session.preview || session.id : "Reconnecting…",
4476
+ disabled: !connected,
4477
+ onClick: () => {
4478
+ if (!isCurrent) state.switchSession?.(session.id);
4479
+ },
4480
+ onContextMenu: (event) => {
4453
4481
  event.preventDefault();
4454
- setRenamingId(null);
4455
- }
4456
- },
4457
- className: "w-full rounded-lg border border-accent bg-raised px-2.5 py-2 text-[14px] text-foreground outline-none"
4458
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
4459
- type: "button",
4460
- "aria-current": isCurrent ? "true" : void 0,
4461
- "aria-label": sessionTitle(session),
4462
- "aria-describedby": describedBy,
4463
- title: connected ? session.preview || session.id : "Reconnecting…",
4464
- disabled: !connected,
4465
- onClick: () => {
4466
- if (!isCurrent) state.switchSession?.(session.id);
4467
- },
4468
- onContextMenu: (event) => {
4469
- event.preventDefault();
4470
- openMenuAt(session.id, event.clientX, event.clientY);
4471
- },
4472
- className: `w-full rounded-lg py-2 pl-2.5 pr-8 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${isCurrent ? "bg-raised" : "hover:bg-hover"}`,
4473
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4474
- className: `block truncate text-[14px] leading-snug ${isCurrent ? "font-medium text-foreground" : "text-foreground/85"}`,
4475
- children: sessionTitle(session)
4476
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4477
- className: "mt-0.5 flex items-center gap-1.5 text-[12.5px] tabular-nums text-subtle",
4478
- children: [
4479
- session.live === true ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4480
- title: "Live in the host",
4481
- className: "h-1.5 w-1.5 flex-shrink-0 rounded-full bg-accent",
4482
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4482
+ openMenuAt(session.id, event.clientX, event.clientY);
4483
+ },
4484
+ className: `w-full rounded-lg py-2 pl-2.5 pr-8 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${isCurrent ? "bg-raised" : "hover:bg-hover"}`,
4485
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4486
+ className: `block truncate text-[14px] leading-snug ${isCurrent ? "font-medium text-foreground" : "text-foreground/85"}`,
4487
+ children: sessionTitle(session)
4488
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4489
+ className: "mt-0.5 flex items-center gap-1.5 text-[12.5px] tabular-nums text-subtle",
4490
+ children: [
4491
+ session.live === true ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4492
+ title: "Live in the host",
4493
+ className: "h-1.5 w-1.5 flex-shrink-0 rounded-full bg-accent",
4494
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4495
+ className: "sr-only",
4496
+ children: "live"
4497
+ })
4498
+ }) : null,
4499
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4500
+ id: updatedId,
4501
+ children: formatUpdatedAt(session.updatedAt)
4502
+ }),
4503
+ others !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4504
+ "aria-hidden": "true",
4505
+ children: "·"
4506
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4507
+ className: "text-muted-foreground",
4508
+ children: [
4509
+ others,
4510
+ " ",
4511
+ others === 1 ? "other" : "others"
4512
+ ]
4513
+ })] }) : null,
4514
+ statusParts.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4515
+ id: statusId,
4483
4516
  className: "sr-only",
4484
- children: "live"
4485
- })
4486
- }) : null,
4487
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4488
- id: updatedId,
4489
- children: formatUpdatedAt(session.updatedAt)
4490
- }),
4491
- others !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4492
- "aria-hidden": "true",
4493
- children: "·"
4494
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4495
- className: "text-muted-foreground",
4496
- children: [
4497
- others,
4498
- " ",
4499
- others === 1 ? "other" : "others"
4500
- ]
4501
- })] }) : null,
4502
- statusParts.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4503
- id: statusId,
4504
- className: "sr-only",
4505
- children: statusParts.join(", ")
4506
- }) : null
4507
- ]
4508
- })]
4509
- }), !isRenaming ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4510
- type: "button",
4511
- ref: (el) => {
4512
- if (el) moreButtonRefs.current.set(session.id, el);
4513
- else moreButtonRefs.current.delete(session.id);
4514
- },
4515
- "aria-label": `More for ${sessionTitle(session)}`,
4516
- "aria-haspopup": "menu",
4517
- "aria-expanded": menu?.sessionId === session.id,
4518
- onClick: (event) => {
4519
- const rect = event.currentTarget.getBoundingClientRect();
4520
- openMenuAt(session.id, rect.left, rect.bottom);
4521
- },
4522
- className: "absolute right-1 top-1/2 -translate-y-1/2 rounded-md p-1 text-muted-foreground opacity-0 hover:bg-hover hover:text-foreground focus-visible:opacity-100 group-hover:opacity-100",
4523
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MoreHorizontal, {
4524
- size: 15,
4525
- strokeWidth: 1.75
4526
- })
4527
- }) : null]
4528
- }, session.id);
4529
- }), unreadable.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
4530
- className: "px-2.5 py-2 text-[12.5px] text-subtle",
4531
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("summary", {
4532
- className: "cursor-pointer text-muted-foreground hover:text-foreground",
4533
- children: [
4534
- unreadable.length,
4535
- " older ",
4536
- unreadable.length === 1 ? "session" : "sessions",
4537
- " in this folder can't be opened"
4538
- ]
4539
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
4540
- className: "mt-1.5 space-y-0.5 font-mono text-[11.5px]",
4541
- children: unreadable.map((id) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
4542
- className: "truncate",
4543
- children: id
4544
- }, id))
4545
- })]
4546
- }) })]
4517
+ children: statusParts.join(", ")
4518
+ }) : null
4519
+ ]
4520
+ })]
4521
+ }), !isRenaming ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4522
+ type: "button",
4523
+ ref: (el) => {
4524
+ if (el) moreButtonRefs.current.set(session.id, el);
4525
+ else moreButtonRefs.current.delete(session.id);
4526
+ },
4527
+ "aria-label": `More for ${sessionTitle(session)}`,
4528
+ "aria-haspopup": "menu",
4529
+ "aria-expanded": menu?.sessionId === session.id,
4530
+ onClick: (event) => {
4531
+ const rect = event.currentTarget.getBoundingClientRect();
4532
+ openMenuAt(session.id, rect.left, rect.bottom);
4533
+ },
4534
+ className: "absolute right-1 top-1/2 -translate-y-1/2 rounded-md p-1 text-muted-foreground opacity-0 hover:bg-hover hover:text-foreground focus-visible:opacity-100 group-hover:opacity-100",
4535
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MoreHorizontal, {
4536
+ size: 15,
4537
+ strokeWidth: 1.75
4538
+ })
4539
+ }) : null]
4540
+ }, session.id);
4541
+ }),
4542
+ unreadable.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
4543
+ className: "px-2.5 py-2 text-[12.5px] text-subtle",
4544
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("summary", {
4545
+ className: "cursor-pointer text-muted-foreground hover:text-foreground",
4546
+ children: [
4547
+ unreadable.length,
4548
+ " older ",
4549
+ unreadable.length === 1 ? "session" : "sessions",
4550
+ " in this folder can't be opened"
4551
+ ]
4552
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
4553
+ className: "mt-1.5 space-y-0.5 font-mono text-[11.5px]",
4554
+ children: unreadable.map((id) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
4555
+ className: "truncate",
4556
+ children: id
4557
+ }, id))
4558
+ })]
4559
+ }) }),
4560
+ lockedLine !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
4561
+ className: "px-2.5 py-2 text-[12.5px] text-subtle",
4562
+ children: lockedLine
4563
+ })
4564
+ ]
4547
4565
  })
4548
4566
  ]
4549
4567
  }),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/app-view/types.ts","../src/client/ws-session-client.ts","../src/hooks/prompt-state.ts","../src/hooks/session-client-types.ts","../src/hooks/useSessionClient.ts","../src/hooks/use-session-directory.ts","../src/components/composer-attachments.ts","../src/components/Composer.tsx","../src/client/runtime-host.ts","../src/hooks/ui-intent-state.ts","../src/components/ConversationView.tsx","../src/components/AgentActivityPanel.tsx","../src/components/AgentSwitcherSheet.tsx","../src/components/PermissionPrompt.tsx","../src/components/personal-usage-dashboard-types.ts","../src/components/PersonalUsageDashboard.tsx","../src/components/SessionSurface.tsx","../src/components/SessionSidebar.tsx","../src/components/SessionMonitor.tsx","../src/components/Dialog.tsx","../src/components/SettingsScreen.tsx","../src/components/HelpSheet.tsx","../src/components/Brand.tsx","../src/product-identity.tsx"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/app-view/types.ts","../src/client/ws-session-client.ts","../src/hooks/prompt-state.ts","../src/hooks/session-client-types.ts","../src/hooks/useSessionClient.ts","../src/hooks/use-session-directory.ts","../src/components/composer-attachments.ts","../src/components/Composer.tsx","../src/client/runtime-host.ts","../src/hooks/ui-intent-state.ts","../src/components/ConversationView.tsx","../src/components/AgentActivityPanel.tsx","../src/components/AgentSwitcherSheet.tsx","../src/components/PermissionPrompt.tsx","../src/components/personal-usage-dashboard-types.ts","../src/components/PersonalUsageDashboard.tsx","../src/components/SessionSurface.tsx","../src/components/SessionSidebar.tsx","../src/components/SessionMonitor.tsx","../src/components/Dialog.tsx","../src/components/SettingsScreen.tsx","../src/components/HelpSheet.tsx","../src/components/Brand.tsx","../src/product-identity.tsx"],"mappings":"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"}