pi-webapp 0.1.21 → 0.1.22

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 (28) hide show
  1. package/README.md +2 -1
  2. package/README.zh-CN.md +2 -1
  3. package/bin/open-web-page.mjs +3 -0
  4. package/bin/pi-webapp.mjs +8 -0
  5. package/dist/extension.js +30 -27
  6. package/docs/desktop.md +69 -26
  7. package/docs/sentry.md +1 -1
  8. package/package.json +5 -5
  9. package/web/dist/.vite/manifest.json +63 -41
  10. package/web/dist/assets/app-D54rSb9U.js +542 -0
  11. package/web/dist/assets/app.js +2 -2
  12. package/web/dist/assets/{elixir-DI-tUE_U.js → elixir-R3IvWmT5.js} +1 -1
  13. package/web/dist/assets/{graphql-Bz9lYT3E.js → graphql-DSgZM88T.js} +1 -1
  14. package/web/dist/assets/{html-DfmEJESS.js → html-COcRjUs1.js} +1 -1
  15. package/web/dist/assets/{html-derivative-BaRuZAr6.js → html-derivative-C2Epw9Yg.js} +1 -1
  16. package/web/dist/assets/{http-oJQxPuUz.js → http-BnatDCTa.js} +1 -1
  17. package/web/dist/assets/{julia-VEDmabGN.js → julia-yApUWuwQ.js} +1 -1
  18. package/web/dist/assets/{perl-g_tPwekP.js → perl-CpGQZpC_.js} +1 -1
  19. package/web/dist/assets/{php-C_eP8QT0.js → php-C7wdcWqa.js} +1 -1
  20. package/web/dist/assets/{WorkspaceTerminal-DF87HK0D.js → plugin-CDXXKG8W.js} +12 -12
  21. package/web/dist/assets/plugin-DuICpslz.js +1 -0
  22. package/web/dist/assets/plugin-U9RqGH7R.js +3 -0
  23. package/web/dist/assets/{rst-D71MTZLw.js → rst-DXm1XNUD.js} +1 -1
  24. package/web/dist/assets/{ruby-DVYYFOy_.js → ruby-BM86KL0M.js} +1 -1
  25. package/web/dist/assets/style.css +2 -2
  26. package/web/dist/assets/{svelte-uHeUtAW3.js → svelte-Dizghd7i.js} +1 -1
  27. package/web/dist/assets/{vue-C1Yqc5Ux.js → vue-DJuuwuj_.js} +1 -1
  28. package/web/dist/assets/app-4px1DWHV.js +0 -544
package/docs/desktop.md CHANGED
@@ -20,7 +20,13 @@ npm run desktop:start
20
20
  nodejs.org, verifies the archive against the official HTTPS SHA-256 manifest,
21
21
  and installs the pinned production dependencies from
22
22
  `desktop/runtime-manifest/package-lock.json`. It verifies the bundled Pi version
23
- and actually starts a PTY before declaring success. Internet is required while
23
+ and actually starts an interactive PTY, answers terminal queries, and checks its
24
+ output and clean exit before declaring success. Linux compiles only the pinned
25
+ `node-pty` lifecycle with the bundled Node and archive headers (the package has
26
+ no Linux prebuild); Windows stages its pinned ConPTY DLL/helper payload. No
27
+ Electron-ABI addon or host build is reused. Linux builders need Python and a C++
28
+ toolchain; end users do not need these to run the packaged PTY.
29
+ Internet is required while
24
30
  building, not to install Node/Pi on the end user's machine. Model calls,
25
31
  authorization and package installation can still require internet.
26
32
 
@@ -50,7 +56,9 @@ e.g. `pi-0.1.20-desktop.5-mac-arm64.dmg`. “pi → 关于 pi” shows the build
50
56
  and executable location, so different desktop rebuilds are distinguishable even
51
57
  when their shared backend stays at the same npm version. `desktop/release.json`
52
58
  is the single source for the desktop name/build; increment its build number for
53
- each delivered rebuild. The CFBundleVersion / Windows file version also changes.
59
+ each delivered rebuild. The CFBundleVersion / Windows file version also changes. AppImage filenames use
60
+ electron-builder's Linux deployment spelling `x86_64`; the runner/runtime
61
+ architecture and release target ID remain `x64` / `linux-x64`.
54
62
 
55
63
  Cross-platform/architecture flags are
56
64
  intentionally rejected by the wrapper: using the current machine's Node/native
@@ -59,6 +67,12 @@ native runners for each target. `desktop.yml` remains a manual cross-platform
59
67
  packaging/artifact workflow. The separate `desktop-release.yml` below handles
60
68
  verified macOS arm64 prereleases, not every main push.
61
69
 
70
+ The embedded runtime never automatically launches a second browser for its Web
71
+ page: the shared browser opener honors `PI_WEBAPP_AUTO_OPEN=0` and desktop runtime
72
+ identity. In particular, startup does not await a long-lived `xdg-open` browser
73
+ before announcing backend readiness. The explicit native “在浏览器中打开” menu and
74
+ confirmed connection-recovery actions remain available.
75
+
62
76
  The application embeds Node and Pi. Git, SSH, project compilers and other system
63
77
  tools are **not** bundled. Missing tools must be installed by the user. Model
64
78
  accounts/API credentials must still be configured in the existing settings UI.
@@ -133,24 +147,38 @@ its independent npm pipeline may write another version. Increment the desktop
133
147
  build number for each delivered rebuild. Tag creation/release is an intentional
134
148
  publication action, not part of an ordinary main commit.
135
149
 
136
- The build job uses standard `macos-15` arm64, pinned npm lockfiles, standalone
137
- Node/Pi preparation, icon/config tests and the **packaged** desktop/browser/PTY
138
- smoke. Sentry reporting and signing discovery are disabled. It produces:
139
-
140
- - `pi-<version>-desktop.<build>-mac-arm64.dmg`
141
- - `SHA256SUMS` (DMG SHA-256)
142
- - `desktop-release.json` (source SHA, backend/build/runtime versions, unsigned
143
- status, platform/architecture, file size/checksum and smoke checks)
144
- - `release-notes.md` (used as the Release body, not a separate download asset)
145
-
146
- A separate Ubuntu job has scoped `contents: write` and no npm installation/app
147
- execution. It revalidates the source-bound files, creates a **draft prerelease**,
148
- uploads only the three intended assets, downloads them to verify their bytes,
149
- and only then publishes the prerelease with `latest=false`. Signing is not
150
- claimed. An interrupted upload leaves a draft; retrying the same source/tag may
151
- repair a draft. A published release is never clobbered: a retry only succeeds
152
- when downloaded assets are byte-identical. A conflicting source/tag or different
153
- published bytes fails rather than replacing a public download.
150
+ The candidate build-6 pipeline adds four **native** targets:
151
+
152
+ | Target | Runner | Installer payload tested |
153
+ | --- | --- | --- |
154
+ | macOS arm64 | macos-15 | Read-only mounted DMG / pi.app |
155
+ | macOS x64 | macos-15-intel | Read-only mounted DMG / pi.app |
156
+ | Windows x64 | windows-2022 | NSIS silently installed pi.exe on disposable CI runner |
157
+ | Linux x64 | ubuntu-22.04 | Extracted AppImage AppRun under Xvfb, without requiring FUSE |
158
+
159
+ Each uses locked dependencies, standalone Node/Pi, full unit tests and actual
160
+ installer-payload desktop/browser/PTY smoke. The smoke reads the installed Pi
161
+ package and requires the same pinned version. Signing discovery and Sentry are
162
+ disabled. ARM Windows/Linux and other targets are not implicitly supported.
163
+
164
+ A read-only aggregation job requires **all four** verified receipts from the
165
+ same source/version/build/Pi pair. It collects four installers, SHA256SUMS,
166
+ `desktop-release.json` (schema 2, per-target runtime and smoke evidence), and
167
+ release-notes.md. A missing/failed target prevents the complete release; matrix
168
+ entries alone are not an acceptance claim. Build-only runs also exercise this
169
+ aggregation, but never create a public Release.
170
+
171
+ Only the final Ubuntu publish job gets `contents: write`, with no npm installation
172
+ or app execution. It checks the bundle, creates a **draft prerelease**, uploads
173
+ four installers plus checksums and metadata, downloads all six assets to verify
174
+ their bytes, then publishes with `latest=false`. An interrupted upload stays a
175
+ draft; retries may repair it. Published assets are never clobbered: a retry only
176
+ succeeds if every downloaded file is byte-identical. Conflicting source/tag or
177
+ bytes fail rather than replacing a public download.
178
+
179
+ The original public build 5 remains macOS-arm64-only with Pi 0.87.1. Do not
180
+ advertise candidate target support or point users to candidate installer links
181
+ until native jobs pass and that new build has actually been published.
154
182
 
155
183
  The packing wrapper deliberately retains `--publish never`: explicit CI Release
156
184
  upload owns publication. The manual cross-platform package workflow remains
@@ -237,7 +265,21 @@ without global Node/Pi. It tests renderer isolation, real PTY interaction,
237
265
  authentication, file listing, desktop update protection, a browser connected to
238
266
  the same service, and confirmed shutdown/process cleanup. It does **not** submit
239
267
  a paid model request, log in to a provider, or use the user's saved credentials.
240
- Screenshots/results are written to `artifacts/desktop/`.
268
+ Screenshots/results are written to `artifacts/desktop/`. CI also persists a
269
+ secret-free phase receipt before each major step, bounds installer smoke to six
270
+ minutes, and bounds cleanup of its exact isolated Electron child. Failures retain
271
+ only bounded, redacted tails of that fixture's launcher log and Electron stderr,
272
+ plus allowlisted launcher metadata (never the URL, nonce, auth files or user
273
+ sessions). Locale is seeded before navigation; the first UI must become usable
274
+ before a real reload is tested, avoiding interruption of initial bootstrap.
275
+ The locale seed touches only the actual HTTP loopback root, not opaque/error
276
+ pages; real loopback storage errors still fail the test. Smoke opts into
277
+ `PI_WEBAPP_STARTUP_TRACE=1`: the launcher records fixed RPC startup milestones,
278
+ never RPC payloads, command bodies, URLs or access/control tokens. POSIX SDK and
279
+ shell/Git integration tests run on macOS/Linux. Windows runs portable SDK/launcher
280
+ boundaries, desktop/release invariants, an interactive native cmd PTY test, and
281
+ the actual installed-payload GUI smoke; Unix executable fixtures are not treated
282
+ as Windows tests. All four installer receipts remain mandatory for assembly.
241
283
 
242
284
  The legacy smoke uses a temporary HOME/agent directory and copies the old package
243
285
  without changing its launcher or extension JavaScript. It prepares node-pty's
@@ -255,16 +297,17 @@ configuration to make a fixture pass.
255
297
 
256
298
  ## Why the bundled Pi may not be the latest upstream version
257
299
 
258
- The desktop bundles **Pi 0.87.1** because that is the host project's explicitly
259
- pinned and tested SDK/runtime pair, not because npm automatically chose its
260
- latest release. `package.json` and `desktop/runtime-manifest/package-lock.json`
300
+ The build-6 candidate pins **Pi 1.3.0**, the upstream latest checked on
301
+ 2026-10-20. The previously published build 5 bundles **Pi 0.87.1**. A source
302
+ upgrade does not mutate that old download or a running external Web service. `package.json` and `desktop/runtime-manifest/package-lock.json`
261
303
  pin both `@earendil-works/pi-coding-agent` and `@earendil-works/pi-ai` together.
262
304
  The standalone Node runtime and native PTY are verified as part of that unit.
263
305
  The app version, desktop build number and bundled Pi version are separate.
264
306
 
265
307
  The public npm `latest` for both Pi packages was **1.3.0 when checked on
266
- 2026-10-20**. Thus 0.87.1 is **not** the latest Pi; a validated pin should not be
267
- misrepresented as one or become an excuse never to maintain the dependency.
308
+ 2026-10-20**. Thus the older build's 0.87.1 is **not** the latest Pi. The candidate upgrade
309
+ has passed typechecks and existing tests; native package gates still decide
310
+ whether it may be offered as a new public download.
268
311
  Moving from the tested 0.x SDK to 1.x needs API/type compatibility review, paired
269
312
  lockfile updates, authentication/plugin/session regressions, native PTY checks,
270
313
  and packaged desktop/Web smoke tests before publishing a new installer.
package/docs/sentry.md CHANGED
@@ -108,7 +108,7 @@ node scripts/publish-verified-release.mjs
108
108
 
109
109
  `verify:sentry` first checks credentials and the package, then invokes the packaged Node verification entry and serves the packaged browser assets on loopback with synthetic configuration. It sends only synthetic events to the configured Sentry DSNs with `environment=sentry-verification`; normal imports and normal browser environments do not run these probes. The Node entry requires `PI_WEB_SENTRY_VERIFY_RELEASE=true` and the verification environment; the browser requires a verification-configured server and the explicit `sentry_release_probe=1` URL flag. The CLI sets up these guards itself.
110
110
 
111
- The verifier waits at most 120 seconds for the real events, checks release/build/side/Debug IDs, and requires original application frames to resolve to TypeScript. The synthetic exception must resolve to the exact source file and line recorded in the archived map. Browser maps give application sources stable `app:///web/src/` and `app:///shared/` paths before upload. Unmapped external SDK dependencies do not invalidate resolved application frames. A successful run writes `.ci/release/verified.json` with event IDs and the tarball SHA-256. The publisher verifies that receipt and hash before publishing that tarball with lifecycle scripts disabled. Missing credentials, failed uploads, mismatched package assets, unmapped application frames, missing receipts, or changed tarballs block publication. Version synchronization to main occurs only after these checks succeed.
111
+ The verifier waits at most 120 seconds for the real events, checks release/build/side/Debug IDs, and requires original application frames to resolve to TypeScript. The synthetic exception must resolve to the exact source file and line recorded in the archived map. Browser maps give application sources stable `app:///src/` and `app:///web/src/` paths before upload. Unmapped external SDK dependencies do not invalidate resolved application frames. A successful run writes `.ci/release/verified.json` with event IDs and the tarball SHA-256. The publisher verifies that receipt and hash before publishing that tarball with lifecycle scripts disabled. Missing credentials, failed uploads, mismatched package assets, unmapped application frames, missing receipts, or changed tarballs block publication. Version synchronization to main occurs only after these checks succeed.
112
112
 
113
113
  For mapping failures, use Sentry's event source-map debugger or its `source-map-debug` API, and inspect matching Debug IDs for application bundles. Old tool-result events without original stacks remain limited even after source maps are uploaded.
114
114
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-webapp",
3
- "version": "0.1.21",
3
+ "version": "0.1.22",
4
4
  "type": "module",
5
5
  "description": "A browser interface for Pi with live chat, workspaces, models, and attachments",
6
6
  "repository": {
@@ -15,7 +15,7 @@
15
15
  "pi-webapp": "./bin/pi-webapp.mjs"
16
16
  },
17
17
  "pi": {
18
- "image": "https://cdn.jsdelivr.net/npm/pi-webapp@0.1.21/assets/cover-webapp.png",
18
+ "image": "https://cdn.jsdelivr.net/npm/pi-webapp@0.1.22/assets/cover-webapp.png",
19
19
  "extensions": [
20
20
  "./dist/extension.js"
21
21
  ]
@@ -39,7 +39,7 @@
39
39
  "status": "node bin/pi-webapp.mjs status",
40
40
  "stop": "node bin/pi-webapp.mjs stop",
41
41
  "check": "tsc --noEmit && tsc -p web/tsconfig.json",
42
- "test": "node --import ./test/setup-env.mjs --experimental-strip-types --test test/*.test.ts && npm run test:desktop",
42
+ "test": "node --import ./test/setup-env.mjs --experimental-strip-types --test --test-concurrency=4 test/*.test.ts && npm run test:desktop",
43
43
  "test:desktop": "node --test desktop/test/*.test.mjs",
44
44
  "desktop:icons": "node scripts/generate-desktop-icons.mjs",
45
45
  "desktop:sync-runtime": "node scripts/sync-desktop-runtime.mjs",
@@ -69,8 +69,8 @@
69
69
  },
70
70
  "devDependencies": {
71
71
  "@chengzhiyi/pi-web-protocol": "0.1.0",
72
- "@earendil-works/pi-ai": "0.87.1",
73
- "@earendil-works/pi-coding-agent": "0.87.1",
72
+ "@earendil-works/pi-ai": "1.3.0",
73
+ "@earendil-works/pi-coding-agent": "1.3.0",
74
74
  "@playwright/test": "1.63.0",
75
75
  "@sentry/esbuild-plugin": "5.4.0",
76
76
  "@sentry/vite-plugin": "5.4.0",
@@ -81,7 +81,7 @@
81
81
  "isDynamicEntry": true
82
82
  },
83
83
  "../../node_modules/@shikijs/langs/dist/elixir.mjs": {
84
- "file": "assets/elixir-DI-tUE_U.js",
84
+ "file": "assets/elixir-R3IvWmT5.js",
85
85
  "name": "elixir",
86
86
  "src": "../../node_modules/@shikijs/langs/dist/elixir.mjs",
87
87
  "isDynamicEntry": true,
@@ -122,13 +122,13 @@
122
122
  "isDynamicEntry": true
123
123
  },
124
124
  "../../node_modules/@shikijs/langs/dist/graphql.mjs": {
125
- "file": "assets/graphql-Bz9lYT3E.js",
125
+ "file": "assets/graphql-DSgZM88T.js",
126
126
  "name": "graphql",
127
127
  "src": "../../node_modules/@shikijs/langs/dist/graphql.mjs",
128
128
  "isDynamicEntry": true,
129
129
  "imports": [
130
130
  "_javascript-D_ijBMSX.js",
131
- "_app-4px1DWHV.js",
131
+ "_app-D54rSb9U.js",
132
132
  "index.html"
133
133
  ]
134
134
  },
@@ -151,7 +151,7 @@
151
151
  "isDynamicEntry": true
152
152
  },
153
153
  "../../node_modules/@shikijs/langs/dist/html.mjs": {
154
- "file": "assets/html-DfmEJESS.js",
154
+ "file": "assets/html-COcRjUs1.js",
155
155
  "name": "html",
156
156
  "src": "../../node_modules/@shikijs/langs/dist/html.mjs",
157
157
  "isDynamicEntry": true,
@@ -161,12 +161,12 @@
161
161
  ]
162
162
  },
163
163
  "../../node_modules/@shikijs/langs/dist/http.mjs": {
164
- "file": "assets/http-oJQxPuUz.js",
164
+ "file": "assets/http-BnatDCTa.js",
165
165
  "name": "http",
166
166
  "src": "../../node_modules/@shikijs/langs/dist/http.mjs",
167
167
  "isDynamicEntry": true,
168
168
  "imports": [
169
- "_app-4px1DWHV.js",
169
+ "_app-D54rSb9U.js",
170
170
  "../../node_modules/@shikijs/langs/dist/xml.mjs",
171
171
  "../../node_modules/@shikijs/langs/dist/graphql.mjs",
172
172
  "index.html",
@@ -187,7 +187,7 @@
187
187
  "isDynamicEntry": true
188
188
  },
189
189
  "../../node_modules/@shikijs/langs/dist/julia.mjs": {
190
- "file": "assets/julia-VEDmabGN.js",
190
+ "file": "assets/julia-yApUWuwQ.js",
191
191
  "name": "julia",
192
192
  "src": "../../node_modules/@shikijs/langs/dist/julia.mjs",
193
193
  "isDynamicEntry": true,
@@ -261,7 +261,7 @@
261
261
  "isDynamicEntry": true
262
262
  },
263
263
  "../../node_modules/@shikijs/langs/dist/perl.mjs": {
264
- "file": "assets/perl-g_tPwekP.js",
264
+ "file": "assets/perl-CpGQZpC_.js",
265
265
  "name": "perl",
266
266
  "src": "../../node_modules/@shikijs/langs/dist/perl.mjs",
267
267
  "isDynamicEntry": true,
@@ -275,7 +275,7 @@
275
275
  ]
276
276
  },
277
277
  "../../node_modules/@shikijs/langs/dist/php.mjs": {
278
- "file": "assets/php-C_eP8QT0.js",
278
+ "file": "assets/php-C7wdcWqa.js",
279
279
  "name": "php",
280
280
  "src": "../../node_modules/@shikijs/langs/dist/php.mjs",
281
281
  "isDynamicEntry": true,
@@ -284,7 +284,7 @@
284
284
  "../../node_modules/@shikijs/langs/dist/xml.mjs",
285
285
  "../../node_modules/@shikijs/langs/dist/sql.mjs",
286
286
  "_javascript-D_ijBMSX.js",
287
- "_app-4px1DWHV.js",
287
+ "_app-D54rSb9U.js",
288
288
  "../../node_modules/@shikijs/langs/dist/css.mjs",
289
289
  "../../node_modules/@shikijs/langs/dist/java.mjs",
290
290
  "index.html"
@@ -315,16 +315,16 @@
315
315
  "isDynamicEntry": true
316
316
  },
317
317
  "../../node_modules/@shikijs/langs/dist/rst.mjs": {
318
- "file": "assets/rst-D71MTZLw.js",
318
+ "file": "assets/rst-DXm1XNUD.js",
319
319
  "name": "rst",
320
320
  "src": "../../node_modules/@shikijs/langs/dist/rst.mjs",
321
321
  "isDynamicEntry": true,
322
322
  "imports": [
323
- "_html-derivative-BaRuZAr6.js",
323
+ "_html-derivative-C2Epw9Yg.js",
324
324
  "../../node_modules/@shikijs/langs/dist/cpp.mjs",
325
325
  "../../node_modules/@shikijs/langs/dist/python.mjs",
326
326
  "_javascript-D_ijBMSX.js",
327
- "_app-4px1DWHV.js",
327
+ "_app-D54rSb9U.js",
328
328
  "../../node_modules/@shikijs/langs/dist/yaml.mjs",
329
329
  "../../node_modules/@shikijs/langs/dist/cmake.mjs",
330
330
  "../../node_modules/@shikijs/langs/dist/ruby.mjs",
@@ -340,7 +340,7 @@
340
340
  ]
341
341
  },
342
342
  "../../node_modules/@shikijs/langs/dist/ruby.mjs": {
343
- "file": "assets/ruby-DVYYFOy_.js",
343
+ "file": "assets/ruby-BM86KL0M.js",
344
344
  "name": "ruby",
345
345
  "src": "../../node_modules/@shikijs/langs/dist/ruby.mjs",
346
346
  "isDynamicEntry": true,
@@ -353,7 +353,7 @@
353
353
  "../../node_modules/@shikijs/langs/dist/graphql.mjs",
354
354
  "../../node_modules/@shikijs/langs/dist/cpp.mjs",
355
355
  "../../node_modules/@shikijs/langs/dist/c.mjs",
356
- "_app-4px1DWHV.js",
356
+ "_app-D54rSb9U.js",
357
357
  "../../node_modules/@shikijs/langs/dist/lua.mjs",
358
358
  "../../node_modules/@shikijs/langs/dist/yaml.mjs",
359
359
  "../../node_modules/@shikijs/langs/dist/java.mjs",
@@ -388,13 +388,13 @@
388
388
  "isDynamicEntry": true
389
389
  },
390
390
  "../../node_modules/@shikijs/langs/dist/svelte.mjs": {
391
- "file": "assets/svelte-uHeUtAW3.js",
391
+ "file": "assets/svelte-Dizghd7i.js",
392
392
  "name": "svelte",
393
393
  "src": "../../node_modules/@shikijs/langs/dist/svelte.mjs",
394
394
  "isDynamicEntry": true,
395
395
  "imports": [
396
396
  "_javascript-D_ijBMSX.js",
397
- "_app-4px1DWHV.js",
397
+ "_app-D54rSb9U.js",
398
398
  "../../node_modules/@shikijs/langs/dist/css.mjs",
399
399
  "index.html"
400
400
  ]
@@ -430,16 +430,16 @@
430
430
  "isDynamicEntry": true
431
431
  },
432
432
  "../../node_modules/@shikijs/langs/dist/vue.mjs": {
433
- "file": "assets/vue-C1Yqc5Ux.js",
433
+ "file": "assets/vue-DJuuwuj_.js",
434
434
  "name": "vue",
435
435
  "src": "../../node_modules/@shikijs/langs/dist/vue.mjs",
436
436
  "isDynamicEntry": true,
437
437
  "imports": [
438
438
  "../../node_modules/@shikijs/langs/dist/css.mjs",
439
439
  "_javascript-D_ijBMSX.js",
440
- "_app-4px1DWHV.js",
440
+ "_app-D54rSb9U.js",
441
441
  "../../node_modules/@shikijs/langs/dist/html.mjs",
442
- "_html-derivative-BaRuZAr6.js",
442
+ "_html-derivative-C2Epw9Yg.js",
443
443
  "index.html"
444
444
  ]
445
445
  },
@@ -694,18 +694,47 @@
694
694
  "file": "assets/KaTeX_Typewriter-Regular.woff2",
695
695
  "src": "../../node_modules/katex/dist/fonts/KaTeX_Typewriter-Regular.woff2"
696
696
  },
697
- "WorkspaceTerminal.tsx": {
698
- "file": "assets/WorkspaceTerminal-DF87HK0D.js",
699
- "name": "WorkspaceTerminal",
700
- "src": "WorkspaceTerminal.tsx",
697
+ "../../src/host/client/telemetry-client.ts": {
698
+ "file": "assets/telemetry-client-CBQBug9X.js",
699
+ "name": "telemetry-client",
700
+ "src": "../../src/host/client/telemetry-client.ts",
701
+ "isDynamicEntry": true,
702
+ "imports": [
703
+ "index.html"
704
+ ]
705
+ },
706
+ "../../src/plugins/builtin/files/client/plugin.tsx": {
707
+ "file": "assets/plugin-DuICpslz.js",
708
+ "name": "plugin",
709
+ "src": "../../src/plugins/builtin/files/client/plugin.tsx",
710
+ "isDynamicEntry": true,
711
+ "imports": [
712
+ "_app-D54rSb9U.js",
713
+ "index.html"
714
+ ]
715
+ },
716
+ "../../src/plugins/builtin/git/client/plugin.tsx": {
717
+ "file": "assets/plugin-U9RqGH7R.js",
718
+ "name": "plugin",
719
+ "src": "../../src/plugins/builtin/git/client/plugin.tsx",
701
720
  "isDynamicEntry": true,
702
721
  "imports": [
703
- "_app-4px1DWHV.js",
722
+ "_app-D54rSb9U.js",
704
723
  "index.html"
705
724
  ]
706
725
  },
707
- "_app-4px1DWHV.js": {
708
- "file": "assets/app-4px1DWHV.js",
726
+ "../../src/plugins/builtin/terminal/client/plugin.tsx": {
727
+ "file": "assets/plugin-CDXXKG8W.js",
728
+ "name": "plugin",
729
+ "src": "../../src/plugins/builtin/terminal/client/plugin.tsx",
730
+ "isDynamicEntry": true,
731
+ "imports": [
732
+ "_app-D54rSb9U.js",
733
+ "index.html"
734
+ ]
735
+ },
736
+ "_app-D54rSb9U.js": {
737
+ "file": "assets/app-D54rSb9U.js",
709
738
  "name": "app",
710
739
  "isDynamicEntry": true,
711
740
  "imports": [
@@ -769,7 +798,9 @@
769
798
  "../../node_modules/@shikijs/langs/dist/make.mjs",
770
799
  "../../node_modules/@shikijs/langs/dist/cmake.mjs",
771
800
  "../../node_modules/@shikijs/langs/dist/groovy.mjs",
772
- "WorkspaceTerminal.tsx"
801
+ "../../src/plugins/builtin/files/client/plugin.tsx",
802
+ "../../src/plugins/builtin/terminal/client/plugin.tsx",
803
+ "../../src/plugins/builtin/git/client/plugin.tsx"
773
804
  ],
774
805
  "assets": [
775
806
  "assets/KaTeX_AMS-Regular.woff2",
@@ -833,8 +864,8 @@
833
864
  "assets/KaTeX_Typewriter-Regular.ttf"
834
865
  ]
835
866
  },
836
- "_html-derivative-BaRuZAr6.js": {
837
- "file": "assets/html-derivative-BaRuZAr6.js",
867
+ "_html-derivative-C2Epw9Yg.js": {
868
+ "file": "assets/html-derivative-C2Epw9Yg.js",
838
869
  "name": "html-derivative",
839
870
  "imports": [
840
871
  "../../node_modules/@shikijs/langs/dist/html.mjs"
@@ -850,21 +881,12 @@
850
881
  "src": "index.html",
851
882
  "isEntry": true,
852
883
  "dynamicImports": [
853
- "telemetry-client.ts",
854
- "_app-4px1DWHV.js"
884
+ "../../src/host/client/telemetry-client.ts",
885
+ "_app-D54rSb9U.js"
855
886
  ]
856
887
  },
857
888
  "style.css": {
858
889
  "file": "assets/style.css",
859
890
  "src": "style.css"
860
- },
861
- "telemetry-client.ts": {
862
- "file": "assets/telemetry-client-CBQBug9X.js",
863
- "name": "telemetry-client",
864
- "src": "telemetry-client.ts",
865
- "isDynamicEntry": true,
866
- "imports": [
867
- "index.html"
868
- ]
869
891
  }
870
892
  }