@vibesdotdev/terminal-client 0.0.0-stage → 1.0.0-rc.3

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 (201) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +102 -2
  3. package/dist/ansi/index.d.ts +11 -0
  4. package/dist/ansi/index.d.ts.map +1 -0
  5. package/dist/ansi/index.js +11 -0
  6. package/dist/ansi/index.js.map +1 -0
  7. package/dist/ansi/keymap.d.ts +77 -0
  8. package/dist/ansi/keymap.d.ts.map +1 -0
  9. package/dist/ansi/keymap.js +257 -0
  10. package/dist/ansi/keymap.js.map +1 -0
  11. package/dist/api-client-plugin.d.ts +4 -0
  12. package/dist/api-client-plugin.d.ts.map +1 -0
  13. package/dist/api-client-plugin.js +16 -0
  14. package/dist/api-client-plugin.js.map +1 -0
  15. package/dist/client/http-session.d.ts +44 -0
  16. package/dist/client/http-session.d.ts.map +1 -0
  17. package/dist/client/http-session.js +457 -0
  18. package/dist/client/http-session.js.map +1 -0
  19. package/dist/client/index.d.ts +8 -0
  20. package/dist/client/index.d.ts.map +1 -0
  21. package/dist/client/index.js +8 -0
  22. package/dist/client/index.js.map +1 -0
  23. package/dist/client.d.ts +56 -0
  24. package/dist/client.d.ts.map +1 -0
  25. package/dist/client.js +169 -0
  26. package/dist/client.js.map +1 -0
  27. package/dist/index.d.ts +14 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +14 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/pty-bridge/index.d.ts +15 -0
  32. package/dist/pty-bridge/index.d.ts.map +1 -0
  33. package/dist/pty-bridge/index.js +15 -0
  34. package/dist/pty-bridge/index.js.map +1 -0
  35. package/dist/pty-bridge/protocol.d.ts +6 -0
  36. package/dist/pty-bridge/protocol.d.ts.map +1 -0
  37. package/dist/pty-bridge/protocol.js +6 -0
  38. package/dist/pty-bridge/protocol.js.map +1 -0
  39. package/dist/pty-bridge/server.d.ts +7 -0
  40. package/dist/pty-bridge/server.d.ts.map +1 -0
  41. package/dist/pty-bridge/server.js +9 -0
  42. package/dist/pty-bridge/server.js.map +1 -0
  43. package/dist/remote-session.d.ts +51 -0
  44. package/dist/remote-session.d.ts.map +1 -0
  45. package/dist/remote-session.js +326 -0
  46. package/dist/remote-session.js.map +1 -0
  47. package/dist/schemas/http.d.ts +61 -0
  48. package/dist/schemas/http.d.ts.map +1 -0
  49. package/dist/schemas/http.js +45 -0
  50. package/dist/schemas/http.js.map +1 -0
  51. package/dist/schemas/remote.d.ts +25 -0
  52. package/dist/schemas/remote.d.ts.map +1 -0
  53. package/dist/schemas/remote.js +23 -0
  54. package/dist/schemas/remote.js.map +1 -0
  55. package/dist/schemas/session.d.ts +26 -0
  56. package/dist/schemas/session.d.ts.map +1 -0
  57. package/dist/schemas/session.js +17 -0
  58. package/dist/schemas/session.js.map +1 -0
  59. package/dist/schemas/store.d.ts +29 -0
  60. package/dist/schemas/store.d.ts.map +1 -0
  61. package/dist/schemas/store.js +22 -0
  62. package/dist/schemas/store.js.map +1 -0
  63. package/dist/schemas/terminal.d.ts +296 -0
  64. package/dist/schemas/terminal.d.ts.map +1 -0
  65. package/dist/schemas/terminal.js +243 -0
  66. package/dist/schemas/terminal.js.map +1 -0
  67. package/dist/server/index.d.ts +9 -0
  68. package/dist/server/index.d.ts.map +1 -0
  69. package/dist/server/index.js +9 -0
  70. package/dist/server/index.js.map +1 -0
  71. package/dist/server/session-store.d.ts +176 -0
  72. package/dist/server/session-store.d.ts.map +1 -0
  73. package/dist/server/session-store.js +462 -0
  74. package/dist/server/session-store.js.map +1 -0
  75. package/dist/server/sse-stream.d.ts +32 -0
  76. package/dist/server/sse-stream.d.ts.map +1 -0
  77. package/dist/server/sse-stream.js +87 -0
  78. package/dist/server/sse-stream.js.map +1 -0
  79. package/dist/svelte/HostPicker.svelte +263 -0
  80. package/dist/svelte/HostPicker.svelte.d.ts +36 -0
  81. package/dist/svelte/HostPicker.svelte.d.ts.map +1 -0
  82. package/dist/svelte/README.md +75 -0
  83. package/dist/svelte/ReconnectBanner.svelte +88 -0
  84. package/dist/svelte/ReconnectBanner.svelte.d.ts +16 -0
  85. package/dist/svelte/ReconnectBanner.svelte.d.ts.map +1 -0
  86. package/dist/svelte/SessionTabs.svelte +192 -0
  87. package/dist/svelte/SessionTabs.svelte.d.ts +17 -0
  88. package/dist/svelte/SessionTabs.svelte.d.ts.map +1 -0
  89. package/dist/svelte/Terminal.svelte +567 -0
  90. package/dist/svelte/Terminal.svelte.d.ts +25 -0
  91. package/dist/svelte/Terminal.svelte.d.ts.map +1 -0
  92. package/dist/svelte/TerminalHostWorkspace.svelte +264 -0
  93. package/dist/svelte/TerminalHostWorkspace.svelte.d.ts +59 -0
  94. package/dist/svelte/TerminalHostWorkspace.svelte.d.ts.map +1 -0
  95. package/dist/svelte/TerminalMobileToolbar.svelte +56 -0
  96. package/dist/svelte/TerminalMobileToolbar.svelte.d.ts +14 -0
  97. package/dist/svelte/TerminalMobileToolbar.svelte.d.ts.map +1 -0
  98. package/dist/svelte/TerminalWorkspace.svelte +562 -0
  99. package/dist/svelte/TerminalWorkspace.svelte.d.ts +25 -0
  100. package/dist/svelte/TerminalWorkspace.svelte.d.ts.map +1 -0
  101. package/dist/svelte/ambient.d.ts +9 -0
  102. package/dist/svelte/docs/terminal-svelte.docs.descriptor.d.ts +4 -0
  103. package/dist/svelte/docs/terminal-svelte.docs.descriptor.d.ts.map +1 -0
  104. package/dist/svelte/docs/terminal-svelte.docs.descriptor.js +74 -0
  105. package/dist/svelte/index.d.ts +29 -0
  106. package/dist/svelte/index.d.ts.map +1 -0
  107. package/dist/svelte/index.js +28 -0
  108. package/dist/svelte/styles.css +8 -0
  109. package/dist/svelte/terminal-host-workspace.d.ts +152 -0
  110. package/dist/svelte/terminal-host-workspace.d.ts.map +1 -0
  111. package/dist/svelte/terminal-host-workspace.js +335 -0
  112. package/dist/svelte/terminal-session-authority.d.ts +17 -0
  113. package/dist/svelte/terminal-session-authority.d.ts.map +1 -0
  114. package/dist/svelte/terminal-session-authority.js +25 -0
  115. package/dist/svelte/terminal-svelte.plugin.d.ts +21 -0
  116. package/dist/svelte/terminal-svelte.plugin.d.ts.map +1 -0
  117. package/dist/svelte/terminal-svelte.plugin.js +53 -0
  118. package/dist/svelte/terminal-theme.d.ts +11 -0
  119. package/dist/svelte/terminal-theme.d.ts.map +1 -0
  120. package/dist/svelte/terminal-theme.js +116 -0
  121. package/dist/svelte/tool-widgets/TerminalToolCard.svelte +65 -0
  122. package/dist/svelte/tool-widgets/TerminalToolCard.svelte.d.ts +5 -0
  123. package/dist/svelte/tool-widgets/TerminalToolCard.svelte.d.ts.map +1 -0
  124. package/dist/svelte/tool-widgets/terminal-tool-card.d.ts +25 -0
  125. package/dist/svelte/tool-widgets/terminal-tool-card.d.ts.map +1 -0
  126. package/dist/svelte/tool-widgets/terminal-tool-card.js +116 -0
  127. package/dist/svelte/types.d.ts +160 -0
  128. package/dist/svelte/types.d.ts.map +1 -0
  129. package/dist/svelte/types.js +51 -0
  130. package/dist/svelte/workspace.d.ts +3 -0
  131. package/dist/svelte/workspace.d.ts.map +1 -0
  132. package/dist/svelte/workspace.js +2 -0
  133. package/dist/terminal-client.plugin.d.ts +3 -0
  134. package/dist/terminal-client.plugin.d.ts.map +1 -0
  135. package/dist/terminal-client.plugin.js +3 -0
  136. package/dist/terminal-client.plugin.js.map +1 -0
  137. package/dist/terminal-runtime.d.ts +30 -0
  138. package/dist/terminal-runtime.d.ts.map +1 -0
  139. package/dist/terminal-runtime.js +673 -0
  140. package/dist/terminal-runtime.js.map +1 -0
  141. package/dist/terminal.consumer.plugin.d.ts +14 -0
  142. package/dist/terminal.consumer.plugin.d.ts.map +1 -0
  143. package/dist/terminal.consumer.plugin.js +31 -0
  144. package/dist/terminal.consumer.plugin.js.map +1 -0
  145. package/dist/tools/terminal.impl.consumer.d.ts +11 -0
  146. package/dist/tools/terminal.impl.consumer.d.ts.map +1 -0
  147. package/dist/tools/terminal.impl.consumer.js +20 -0
  148. package/dist/tools/terminal.impl.consumer.js.map +1 -0
  149. package/dist/tools/terminal.schemas.d.ts +3 -0
  150. package/dist/tools/terminal.schemas.d.ts.map +1 -0
  151. package/dist/tools/terminal.schemas.js +3 -0
  152. package/dist/tools/terminal.schemas.js.map +1 -0
  153. package/dist/tools/terminal.unified.descriptor.d.ts +218 -0
  154. package/dist/tools/terminal.unified.descriptor.d.ts.map +1 -0
  155. package/dist/tools/terminal.unified.descriptor.js +36 -0
  156. package/dist/tools/terminal.unified.descriptor.js.map +1 -0
  157. package/dist/tui/index.d.ts +9 -0
  158. package/dist/tui/index.d.ts.map +1 -0
  159. package/dist/tui/index.js +8 -0
  160. package/dist/tui/index.js.map +1 -0
  161. package/dist/tui/terminal-open.descriptor.d.ts +9 -0
  162. package/dist/tui/terminal-open.descriptor.d.ts.map +1 -0
  163. package/dist/tui/terminal-open.descriptor.js +18 -0
  164. package/dist/tui/terminal-open.descriptor.js.map +1 -0
  165. package/dist/tui/terminal-open.impl.consumer.d.ts +9 -0
  166. package/dist/tui/terminal-open.impl.consumer.d.ts.map +1 -0
  167. package/dist/tui/terminal-open.impl.consumer.js +13 -0
  168. package/dist/tui/terminal-open.impl.consumer.js.map +1 -0
  169. package/dist/tui/terminal-registry.descriptor.d.ts +11 -0
  170. package/dist/tui/terminal-registry.descriptor.d.ts.map +1 -0
  171. package/dist/tui/terminal-registry.descriptor.js +17 -0
  172. package/dist/tui/terminal-registry.descriptor.js.map +1 -0
  173. package/dist/tui/terminal-registry.impl.consumer.d.ts +71 -0
  174. package/dist/tui/terminal-registry.impl.consumer.d.ts.map +1 -0
  175. package/dist/tui/terminal-registry.impl.consumer.js +190 -0
  176. package/dist/tui/terminal-registry.impl.consumer.js.map +1 -0
  177. package/dist/tui/terminal-tui.plugin.d.ts +10 -0
  178. package/dist/tui/terminal-tui.plugin.d.ts.map +1 -0
  179. package/dist/tui/terminal-tui.plugin.js +32 -0
  180. package/dist/tui/terminal-tui.plugin.js.map +1 -0
  181. package/dist/tui/terminal.descriptor.d.ts +10 -0
  182. package/dist/tui/terminal.descriptor.d.ts.map +1 -0
  183. package/dist/tui/terminal.descriptor.js +25 -0
  184. package/dist/tui/terminal.descriptor.js.map +1 -0
  185. package/dist/tui/terminal.impl.consumer.d.ts +14 -0
  186. package/dist/tui/terminal.impl.consumer.d.ts.map +1 -0
  187. package/dist/tui/terminal.impl.consumer.js +189 -0
  188. package/dist/tui/terminal.impl.consumer.js.map +1 -0
  189. package/dist/tui/terminal.state-key.d.ts +30 -0
  190. package/dist/tui/terminal.state-key.d.ts.map +1 -0
  191. package/dist/tui/terminal.state-key.js +9 -0
  192. package/dist/tui/terminal.state-key.js.map +1 -0
  193. package/dist/tui/terminal.state.d.ts +152 -0
  194. package/dist/tui/terminal.state.d.ts.map +1 -0
  195. package/dist/tui/terminal.state.js +149 -0
  196. package/dist/tui/terminal.state.js.map +1 -0
  197. package/dist/workspace.d.ts +155 -0
  198. package/dist/workspace.d.ts.map +1 -0
  199. package/dist/workspace.js +292 -0
  200. package/dist/workspace.js.map +1 -0
  201. package/package.json +228 -4
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The `terminal.registry` tui/state key: the execution places and opened
3
+ * sessions the terminal launcher shows, with the schema every value written
4
+ * to it is parsed by.
5
+ */
6
+ import { defineTuiStateKey } from '@vibesdotdev/tui/kinds/tui-state';
7
+ import { TerminalRegistryStateSchema } from "./terminal.state.js";
8
+ export const terminalRegistryStateKey = defineTuiStateKey('terminal.registry', TerminalRegistryStateSchema);
9
+ //# sourceMappingURL=terminal.state-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.state-key.js","sourceRoot":"","sources":["../../src/tui/terminal.state-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Terminal-client TUI launcher — shared state shape + pure helpers.
3
+ *
4
+ * The `terminal.registry` tui/state holds the honest place catalog (where a
5
+ * terminal can be opened) and the sessions this launcher has opened. It is
6
+ * derived from the live runtime (`runtime/execution` providers + `fleet/host`
7
+ * descriptors), never hard-coded connection facts.
8
+ */
9
+ import * as z from 'zod/v4';
10
+ import { type ExecutionCapabilities } from '@vibesdotdev/kernel/execution';
11
+ /** Coarse scope of an execution place — mirrors the control-plane matrix. */
12
+ export declare const TerminalPlaceKindSchema: z.ZodEnum<{
13
+ cloud: "cloud";
14
+ device: "device";
15
+ fleet: "fleet";
16
+ }>;
17
+ export type TerminalPlaceKind = z.infer<typeof TerminalPlaceKindSchema>;
18
+ /**
19
+ * Availability is truthful (D-HONEST-CAPS):
20
+ * - `available` — a real execution provider (or reachable host) backs it now.
21
+ * - `unconfigured` — the place archetype is understood but nothing is wired here
22
+ * yet (e.g. no paired fleet host, no cloud exec provider).
23
+ * - `unavailable` — a provider exists but failed its reachability probe.
24
+ */
25
+ export declare const TerminalPlaceAvailabilitySchema: z.ZodEnum<{
26
+ unavailable: "unavailable";
27
+ available: "available";
28
+ unconfigured: "unconfigured";
29
+ }>;
30
+ export type TerminalPlaceAvailability = z.infer<typeof TerminalPlaceAvailabilitySchema>;
31
+ export declare const TerminalPlaceViewSchema: z.ZodObject<{
32
+ id: z.ZodString;
33
+ kind: z.ZodEnum<{
34
+ cloud: "cloud";
35
+ device: "device";
36
+ fleet: "fleet";
37
+ }>;
38
+ label: z.ZodString;
39
+ executionId: z.ZodOptional<z.ZodString>;
40
+ capabilities: z.ZodObject<{
41
+ pty: z.ZodBoolean;
42
+ shell: z.ZodBoolean;
43
+ signals: z.ZodBoolean;
44
+ resize: z.ZodBoolean;
45
+ maxSessions: z.ZodNumber;
46
+ }, z.core.$strict>;
47
+ availability: z.ZodEnum<{
48
+ unavailable: "unavailable";
49
+ available: "available";
50
+ unconfigured: "unconfigured";
51
+ }>;
52
+ detail: z.ZodString;
53
+ }, z.core.$strip>;
54
+ export type TerminalPlaceView = z.infer<typeof TerminalPlaceViewSchema>;
55
+ /**
56
+ * Session outcomes are truthful (D-HONEST-CAPS):
57
+ * - `live` — an interactive session is open.
58
+ * - `ran` — a command actually executed and returned.
59
+ * - `exited` — a previously-live session ended.
60
+ * - `error` — the launch/command failed.
61
+ * - `handoff` — nothing ran here; control was handed to another surface (e.g. a
62
+ * fleet place opens its remote PTY in the terminal surface). Never implies a
63
+ * shell ran.
64
+ */
65
+ export declare const TerminalSessionStatusSchema: z.ZodEnum<{
66
+ error: "error";
67
+ live: "live";
68
+ exited: "exited";
69
+ ran: "ran";
70
+ handoff: "handoff";
71
+ }>;
72
+ export type TerminalSessionStatus = z.infer<typeof TerminalSessionStatusSchema>;
73
+ export declare const TerminalSessionViewSchema: z.ZodObject<{
74
+ id: z.ZodString;
75
+ placeId: z.ZodString;
76
+ placeLabel: z.ZodString;
77
+ command: z.ZodString;
78
+ status: z.ZodEnum<{
79
+ error: "error";
80
+ live: "live";
81
+ exited: "exited";
82
+ ran: "ran";
83
+ handoff: "handoff";
84
+ }>;
85
+ openedAt: z.ZodString;
86
+ note: z.ZodString;
87
+ }, z.core.$strip>;
88
+ export type TerminalSessionView = z.infer<typeof TerminalSessionViewSchema>;
89
+ /** The `terminal.registry` tui/state value; its key parses every write with this. */
90
+ export declare const TerminalRegistryStateSchema: z.ZodObject<{
91
+ places: z.ZodArray<z.ZodObject<{
92
+ id: z.ZodString;
93
+ kind: z.ZodEnum<{
94
+ cloud: "cloud";
95
+ device: "device";
96
+ fleet: "fleet";
97
+ }>;
98
+ label: z.ZodString;
99
+ executionId: z.ZodOptional<z.ZodString>;
100
+ capabilities: z.ZodObject<{
101
+ pty: z.ZodBoolean;
102
+ shell: z.ZodBoolean;
103
+ signals: z.ZodBoolean;
104
+ resize: z.ZodBoolean;
105
+ maxSessions: z.ZodNumber;
106
+ }, z.core.$strict>;
107
+ availability: z.ZodEnum<{
108
+ unavailable: "unavailable";
109
+ available: "available";
110
+ unconfigured: "unconfigured";
111
+ }>;
112
+ detail: z.ZodString;
113
+ }, z.core.$strip>>;
114
+ sessions: z.ZodArray<z.ZodObject<{
115
+ id: z.ZodString;
116
+ placeId: z.ZodString;
117
+ placeLabel: z.ZodString;
118
+ command: z.ZodString;
119
+ status: z.ZodEnum<{
120
+ error: "error";
121
+ live: "live";
122
+ exited: "exited";
123
+ ran: "ran";
124
+ handoff: "handoff";
125
+ }>;
126
+ openedAt: z.ZodString;
127
+ note: z.ZodString;
128
+ }, z.core.$strip>>;
129
+ loaded: z.ZodBoolean;
130
+ loading: z.ZodBoolean;
131
+ error: z.ZodNullable<z.ZodString>;
132
+ }, z.core.$strip>;
133
+ export type TerminalRegistryState = z.infer<typeof TerminalRegistryStateSchema>;
134
+ export declare const defaultTerminalRegistryState: TerminalRegistryState;
135
+ /** Default capability expectation for a place before it resolves an impl. */
136
+ export declare function terminalPlaceDefaultCapabilities(kind: TerminalPlaceKind): ExecutionCapabilities;
137
+ /**
138
+ * Honest capability banner. Interactive (`pty:true`) places return `null` — no
139
+ * banner needed. Non-PTY places state plainly that commands run and return
140
+ * their output, with no faked "live" keystroke stream.
141
+ */
142
+ export declare function terminalPlaceCapabilityBanner(place: TerminalPlaceView): string | null;
143
+ /** Compact capability summary for a list row. */
144
+ export declare function terminalCapabilitySummary(caps: ExecutionCapabilities): string;
145
+ export declare function terminalPlaceAvailabilityLabel(availability: TerminalPlaceAvailability): string;
146
+ /**
147
+ * Human label for a session outcome. `handoff` reads as "handoff" — never as a
148
+ * command/shell that ran (D-HONEST-CAPS).
149
+ */
150
+ export declare function terminalSessionStatusLabel(status: TerminalSessionStatus): string;
151
+ export declare function sortTerminalPlaces(places: TerminalPlaceView[]): TerminalPlaceView[];
152
+ //# sourceMappingURL=terminal.state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.state.d.ts","sourceRoot":"","sources":["../../src/tui/terminal.state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAExG,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB;;;;EAAuC,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B;;;;EAAuD,CAAC;AACpG,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;iBAYlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B;;;;;;EAAwD,CAAC;AACjG,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBASpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,qFAAqF;AACrF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,4BAA4B,EAAE,qBAM1C,CAAC;AAkBF,6EAA6E;AAC7E,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,CAE/F;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED,iDAAiD;AACjD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAM7E;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,yBAAyB,GAAG,MAAM,CAI9F;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAahF;AAUD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAQnF"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Terminal-client TUI launcher — shared state shape + pure helpers.
3
+ *
4
+ * The `terminal.registry` tui/state holds the honest place catalog (where a
5
+ * terminal can be opened) and the sessions this launcher has opened. It is
6
+ * derived from the live runtime (`runtime/execution` providers + `fleet/host`
7
+ * descriptors), never hard-coded connection facts.
8
+ */
9
+ import * as z from 'zod/v4';
10
+ import { ExecutionCapabilitiesSchema } from '@vibesdotdev/kernel/execution';
11
+ /** Coarse scope of an execution place — mirrors the control-plane matrix. */
12
+ export const TerminalPlaceKindSchema = z.enum(['device', 'fleet', 'cloud']);
13
+ /**
14
+ * Availability is truthful (D-HONEST-CAPS):
15
+ * - `available` — a real execution provider (or reachable host) backs it now.
16
+ * - `unconfigured` — the place archetype is understood but nothing is wired here
17
+ * yet (e.g. no paired fleet host, no cloud exec provider).
18
+ * - `unavailable` — a provider exists but failed its reachability probe.
19
+ */
20
+ export const TerminalPlaceAvailabilitySchema = z.enum(['available', 'unconfigured', 'unavailable']);
21
+ export const TerminalPlaceViewSchema = z.object({
22
+ /** Place selector, e.g. `device:local`, `fleet:<hostId>`, `cloud:exec`. */
23
+ id: z.string(),
24
+ kind: TerminalPlaceKindSchema,
25
+ label: z.string(),
26
+ /** Execution provider id to resolve when opening here (when known). */
27
+ executionId: z.string().optional(),
28
+ /** Honest capability mask advertised for this place. */
29
+ capabilities: ExecutionCapabilitiesSchema,
30
+ availability: TerminalPlaceAvailabilitySchema,
31
+ /** One-line honest description shown in the detail pane. */
32
+ detail: z.string()
33
+ });
34
+ /**
35
+ * Session outcomes are truthful (D-HONEST-CAPS):
36
+ * - `live` — an interactive session is open.
37
+ * - `ran` — a command actually executed and returned.
38
+ * - `exited` — a previously-live session ended.
39
+ * - `error` — the launch/command failed.
40
+ * - `handoff` — nothing ran here; control was handed to another surface (e.g. a
41
+ * fleet place opens its remote PTY in the terminal surface). Never implies a
42
+ * shell ran.
43
+ */
44
+ export const TerminalSessionStatusSchema = z.enum(['live', 'ran', 'exited', 'error', 'handoff']);
45
+ export const TerminalSessionViewSchema = z.object({
46
+ id: z.string(),
47
+ placeId: z.string(),
48
+ placeLabel: z.string(),
49
+ command: z.string(),
50
+ status: TerminalSessionStatusSchema,
51
+ openedAt: z.string(),
52
+ /** Short outcome note (exit code, first output line, or error). */
53
+ note: z.string()
54
+ });
55
+ /** The `terminal.registry` tui/state value; its key parses every write with this. */
56
+ export const TerminalRegistryStateSchema = z.object({
57
+ places: z.array(TerminalPlaceViewSchema),
58
+ sessions: z.array(TerminalSessionViewSchema),
59
+ loaded: z.boolean(),
60
+ loading: z.boolean(),
61
+ error: z.string().nullable()
62
+ });
63
+ export const defaultTerminalRegistryState = {
64
+ places: [],
65
+ sessions: [],
66
+ loaded: false,
67
+ loading: true,
68
+ error: null
69
+ };
70
+ const PTY_CAPS = {
71
+ pty: true,
72
+ shell: true,
73
+ signals: true,
74
+ resize: true,
75
+ maxSessions: 1
76
+ };
77
+ const EXEC_ONLY_CAPS = {
78
+ pty: false,
79
+ shell: true,
80
+ signals: false,
81
+ resize: false,
82
+ maxSessions: 8
83
+ };
84
+ /** Default capability expectation for a place before it resolves an impl. */
85
+ export function terminalPlaceDefaultCapabilities(kind) {
86
+ return kind === 'cloud' ? { ...EXEC_ONLY_CAPS } : { ...PTY_CAPS };
87
+ }
88
+ /**
89
+ * Honest capability banner. Interactive (`pty:true`) places return `null` — no
90
+ * banner needed. Non-PTY places state plainly that commands run and return
91
+ * their output, with no faked "live" keystroke stream.
92
+ */
93
+ export function terminalPlaceCapabilityBanner(place) {
94
+ if (place.capabilities.pty)
95
+ return null;
96
+ return `${place.label} — no live keystrokes here. Commands run and return their output.`;
97
+ }
98
+ /** Compact capability summary for a list row. */
99
+ export function terminalCapabilitySummary(caps) {
100
+ const mode = caps.pty ? 'interactive PTY' : 'exec-only';
101
+ const verbs = [caps.shell && 'shell', caps.signals && 'signals', caps.resize && 'resize']
102
+ .filter(Boolean)
103
+ .join(' · ');
104
+ return verbs ? `${mode} · ${verbs}` : mode;
105
+ }
106
+ export function terminalPlaceAvailabilityLabel(availability) {
107
+ if (availability === 'available')
108
+ return 'Ready';
109
+ if (availability === 'unavailable')
110
+ return 'Unreachable';
111
+ return 'Not configured';
112
+ }
113
+ /**
114
+ * Human label for a session outcome. `handoff` reads as "handoff" — never as a
115
+ * command/shell that ran (D-HONEST-CAPS).
116
+ */
117
+ export function terminalSessionStatusLabel(status) {
118
+ switch (status) {
119
+ case 'live':
120
+ return 'live';
121
+ case 'ran':
122
+ return 'ran';
123
+ case 'exited':
124
+ return 'exited';
125
+ case 'error':
126
+ return 'error';
127
+ case 'handoff':
128
+ return 'handoff';
129
+ }
130
+ }
131
+ /** Stable sort: available places first, then by kind (device→fleet→cloud). */
132
+ const KIND_ORDER = { device: 0, fleet: 1, cloud: 2 };
133
+ const AVAIL_ORDER = {
134
+ available: 0,
135
+ unconfigured: 1,
136
+ unavailable: 2
137
+ };
138
+ export function sortTerminalPlaces(places) {
139
+ return [...places].sort((a, b) => {
140
+ const byAvail = AVAIL_ORDER[a.availability] - AVAIL_ORDER[b.availability];
141
+ if (byAvail !== 0)
142
+ return byAvail;
143
+ const byKind = KIND_ORDER[a.kind] - KIND_ORDER[b.kind];
144
+ if (byKind !== 0)
145
+ return byKind;
146
+ return a.label.localeCompare(b.label);
147
+ });
148
+ }
149
+ //# sourceMappingURL=terminal.state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.state.js","sourceRoot":"","sources":["../../src/tui/terminal.state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAA8B,MAAM,+BAA+B,CAAC;AAExG,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAG5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;AAGpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,2EAA2E;IAC3E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,uEAAuE;IACvE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,wDAAwD;IACxD,YAAY,EAAE,2BAA2B;IACzC,YAAY,EAAE,+BAA+B;IAC7C,4DAA4D;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAGH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAGjG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,2BAA2B;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,mEAAmE;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAGH,qFAAqF;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,4BAA4B,GAA0B;IAClE,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,QAAQ,GAA0B;IACvC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,cAAc,GAA0B;IAC7C,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,CAAC;CACd,CAAC;AAEF,6EAA6E;AAC7E,MAAM,UAAU,gCAAgC,CAAC,IAAuB;IACvE,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAwB;IACrE,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,GAAG,KAAK,CAAC,KAAK,mEAAmE,CAAC;AAC1F,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,yBAAyB,CAAC,IAA2B;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC;SACvF,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,YAAuC;IACrF,IAAI,YAAY,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC;IACjD,IAAI,YAAY,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACzD,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAA6B;IACvE,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf,KAAK,KAAK;YACT,OAAO,KAAK,CAAC;QACd,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,OAAO;YACX,OAAO,OAAO,CAAC;QAChB,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;IACnB,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAA8C,CAAC;AACjG,MAAM,WAAW,GAAG;IACnB,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;CACsC,CAAC;AAEtD,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC7D,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAClC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAChC,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { type VibesRuntime } from '@vibesdotdev/kernel';
2
+ import type { ExecutionCapabilities, ExecutionSession, ProcessHandle, RuntimeExecution } from '@vibesdotdev/kernel/execution';
3
+ import * as z from 'zod/v4';
4
+ export declare const terminalWorkspaceVesselStateSchema: z.ZodObject<{
5
+ executionId: z.ZodDefault<z.ZodString>;
6
+ cwd: z.ZodDefault<z.ZodString>;
7
+ correlationId: z.ZodOptional<z.ZodString>;
8
+ sourceSurfaceId: z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strict>;
10
+ export type TerminalWorkspaceStatus = 'idle' | 'opening' | 'live' | 'exited' | 'error';
11
+ export interface TerminalWorkspaceRuntimePlaceOption {
12
+ id: string;
13
+ label: string;
14
+ status: 'available' | 'unavailable';
15
+ detail?: string;
16
+ /** Explicit local execution selector when a place has more than one provider. */
17
+ executionId?: string;
18
+ /**
19
+ * Honest capability mask this place advertises. Surfaces gate UI on it
20
+ * (D-HONEST-CAPS): `pty:false` places render an exec banner, never a live
21
+ * keystroke terminal. Omitted → derived from the place id.
22
+ */
23
+ capabilities?: ExecutionCapabilities;
24
+ }
25
+ export type TerminalWorkspaceQuickActionId = 'help' | 'clear' | 'interrupt' | 'end';
26
+ export interface TerminalWorkspaceQuickAction {
27
+ id: TerminalWorkspaceQuickActionId;
28
+ label: string;
29
+ description: string;
30
+ command?: string;
31
+ signal?: string;
32
+ }
33
+ export interface TerminalWorkspaceOpenedReceipt {
34
+ phase: 'opened';
35
+ sessionId: string;
36
+ environmentId: string;
37
+ executionId: string;
38
+ runtimePlaceId: string;
39
+ cwd: string;
40
+ openedAt: string;
41
+ }
42
+ export interface TerminalWorkspaceExitedEvent {
43
+ phase: 'exited';
44
+ sessionId: string;
45
+ environmentId: string;
46
+ executionId: string;
47
+ runtimePlaceId: string;
48
+ cwd: string;
49
+ openedAt: string;
50
+ exitedAt: string;
51
+ exitCode: number | null;
52
+ }
53
+ /**
54
+ * Actual Terminal lifecycle outcomes. `opened` is the only success receipt and
55
+ * is produced only after `runtime/execution.session()` resolves.
56
+ */
57
+ export type TerminalWorkspaceLifecycleEvent = TerminalWorkspaceOpenedReceipt | TerminalWorkspaceExitedEvent;
58
+ export interface OpenTerminalWorkspaceSessionInput {
59
+ execution: Pick<RuntimeExecution, 'id' | 'resolveCommand' | 'session'>;
60
+ /**
61
+ * The session's whole environment, run with `envMode: 'replace'`: this
62
+ * host's composed environment for a native session, and nothing for a
63
+ * provider that runs children in its own environment (the browser shell).
64
+ */
65
+ env: Record<string, string>;
66
+ command: string;
67
+ args?: string[];
68
+ runtimePlaceId: string;
69
+ cwd: string;
70
+ cols: number;
71
+ rows: number;
72
+ now?: () => Date;
73
+ }
74
+ export interface OpenTerminalWorkspaceSessionResult {
75
+ session: ExecutionSession;
76
+ receipt: TerminalWorkspaceOpenedReceipt;
77
+ }
78
+ export type TerminalWorkspaceSessionMode = 'session' | 'exec';
79
+ /**
80
+ * Outcome of opening the authority named by a place selector.
81
+ *
82
+ * `mode:'session'` is the interactive PTY path — `session` is a live
83
+ * `ExecutionSession`. `mode:'exec'` is the honest non-PTY path (e.g. cloud):
84
+ * there is NO interactive PTY session (`session:null`), but output STREAMS live
85
+ * — `execProcess` is a `ProcessHandle` whose stdout/stderr the surface drains as
86
+ * bytes arrive. No keystroke stream is faked. `capabilities` is the live mask of
87
+ * the resolved execution so the surface can gate its UI truthfully.
88
+ */
89
+ export interface OpenTerminalWorkspaceTargetSessionResult {
90
+ session: ExecutionSession | null;
91
+ receipt: TerminalWorkspaceOpenedReceipt;
92
+ capabilities: ExecutionCapabilities;
93
+ mode: TerminalWorkspaceSessionMode;
94
+ /** Live streaming process for exec-mode, present only when `mode:'exec'`. */
95
+ execProcess?: ProcessHandle;
96
+ }
97
+ export interface OpenTerminalWorkspaceTargetSessionInput {
98
+ runtime: VibesRuntime;
99
+ executionId: string;
100
+ command: string;
101
+ args?: string[];
102
+ runtimePlaceId: string;
103
+ cwd: string;
104
+ cols: number;
105
+ rows: number;
106
+ now?: () => Date;
107
+ }
108
+ export interface TerminalWorkspaceLaunchInput {
109
+ executionId: string;
110
+ runtimePlaceId: string;
111
+ command: string;
112
+ args?: readonly string[];
113
+ cwd: string;
114
+ }
115
+ /** Stable identity for every prop that selects or configures a live session. */
116
+ export declare function terminalWorkspaceLaunchSignature(input: TerminalWorkspaceLaunchInput): string;
117
+ export declare function terminalWorkspaceDefaultCommand(runtimePlaceId: string): string;
118
+ export declare const terminalWorkspaceQuickActions: readonly TerminalWorkspaceQuickAction[];
119
+ /**
120
+ * Resolve and open the real execution session, then derive its success receipt.
121
+ * The clock is read after the awaited session resolves, so callers cannot
122
+ * observe an `opened` receipt for a request the execution provider has not
123
+ * accepted.
124
+ */
125
+ export declare function openTerminalWorkspaceSession(input: OpenTerminalWorkspaceSessionInput): Promise<OpenTerminalWorkspaceSessionResult>;
126
+ /**
127
+ * Open against the authority named by this window's immutable place selector.
128
+ * Browser, local-machine, and fleet paths stay explicit so a remote label can
129
+ * never silently fall back to a local browser shell.
130
+ */
131
+ export declare function openTerminalWorkspaceTargetSession(input: OpenTerminalWorkspaceTargetSessionInput): Promise<OpenTerminalWorkspaceTargetSessionResult>;
132
+ /**
133
+ * Pre-resolution capability expectation for a place, used only to gate the UI
134
+ * before the impl is resolved. `cloud:`/`sandbox:` are now interactive
135
+ * (D-NO-DEFER / A5): a REAL PTY runs inside the CF Sandbox container via the
136
+ * pty-ws server, so `pty:true`. The live mask from `getCapabilities()` overrides
137
+ * this once a place is opened.
138
+ */
139
+ export declare function terminalWorkspacePlaceDefaultCapabilities(runtimePlaceId: string): ExecutionCapabilities;
140
+ /**
141
+ * Banner copy for a place. Non-PTY places get the honest "streams output live,
142
+ * no interactive TTY" caveat. Interactive cloud/sandbox places get a short
143
+ * positive note ("cloud PTY (containerized)") — the PTY is real, it just lives
144
+ * in the sandbox container, so there is no caveat, only context. Interactive
145
+ * local/device/fleet places get no banner (`null`). No jargon; no overclaim.
146
+ */
147
+ export declare function terminalWorkspaceCapabilityBanner(capabilities: Pick<ExecutionCapabilities, 'pty'>, runtimePlaceId: string): string | null;
148
+ export declare function terminalWorkspaceExitedEvent(receipt: TerminalWorkspaceOpenedReceipt, result: {
149
+ exitCode: number | null;
150
+ }, now?: () => Date): TerminalWorkspaceExitedEvent;
151
+ export declare function terminalWorkspaceStatusLabel(status: TerminalWorkspaceStatus): string;
152
+ export declare function terminalWorkspacePlaceLabel(runtimePlaceId: string): string;
153
+ export declare function terminalWorkspaceConnectionNotice(cwd: string, runtimePlaceId: string): string;
154
+ export declare function terminalWorkspaceError<Failure>(_error: Failure, runtimePlaceId?: string): string;
155
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}