workbite 0.1.6 → 0.1.8

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/README.md CHANGED
@@ -3,19 +3,24 @@
3
3
  WorkBite installs and opens **Work Stack** (organizes the work) and
4
4
  **StackBite** (gets it moving) as one native suite.
5
5
 
6
- Launcher 0.1.6 (native bundle 0.1.6) opens the familiar TypeScript
7
- Work Stack UI by default. The unified Rust UI, where you select a Task, start
8
- its agent and use `9 Execution` to see and control its native terminal in the
9
- same window, is opt-in per open: `workbite open --frontend rust` (or bare
10
- `workbite --frontend rust`). The TypeScript UI does not yet embed `9 Execution`.
11
- Either frontend reuses the same owner and StackBite backend; the choice is not
12
- saved. Task completion stays an explicit action.
6
+ Launcher 0.1.8 (native bundle 0.1.8) is a **Windows x64 only** release. It
7
+ opens the familiar TypeScript Work Stack UI by default, which has
8
+ `9 Execution` in the same window: select a Task, start its agent, and see and
9
+ control its native terminal without leaving the UI. New in 0.1.8: a one-screen
10
+ launch panel (provider/model/effort, work folder with recent folders and an
11
+ optional workspace default), `9` / `a` to show every Run again, `Ctrl+B` to
12
+ hide the side menu in Execution, and typed, retained StackBite launch-refusal
13
+ diagnostics. The unified Rust UI stays
14
+ an explicit alternative per open: `workbite open --frontend rust` (or bare
15
+ `workbite --frontend rust`). Either frontend reuses the same owner and
16
+ StackBite backend; the choice is not saved. Leaving the view or closing the UI
17
+ keeps the agent running, and Task completion stays an explicit action.
13
18
 
14
- 0.1.6 rebuilds the Windows terminal core for baseline x64 CPUs, removing the
15
- previous build machine's AVX-512 requirement, and adds bounded native startup
16
- failure diagnostics. Linux still supports glibc 2.28+. Updating from the 0.1.4
17
- native bundle requires an operator handover of existing backend processes;
18
- the launcher does not stop them or clear startup records automatically.
19
+ Linux x64: keep using `workbite@0.1.6` (native bundle 0.1.6, glibc 2.28+)
20
+ until separate Linux compatibility work for this feature is done; 0.1.8 does
21
+ not install on Linux. Updating from the 0.1.4 native bundle requires an
22
+ operator handover of existing backend processes; the launcher does not stop
23
+ them or clear startup records automatically.
19
24
 
20
25
  ```sh
21
26
  npm install -g workbite
@@ -25,7 +30,7 @@ workbite # afterwards (TypeScr
25
30
  workbite --frontend rust # unified Rust UI with 9 Execution
26
31
  ```
27
32
 
28
- Node.js 20+ on Windows x64 or Linux x64 (glibc 2.28+).
33
+ Node.js 20+ on Windows x64 (Linux x64: `npm install -g workbite@0.1.6`).
29
34
 
30
35
  - `workbite install` downloads the pinned bundle for your platform from
31
36
  `github.com/Shinick-Han/WorkBite-releases`, verifies its size and SHA-256 and
package/lib/cli.js CHANGED
@@ -33,8 +33,9 @@ open:
33
33
  --workspace ABS absolute workspace folder; always wins over the remembered one
34
34
  --init create a new Work Stack workspace in a new or empty folder (needs --workspace)
35
35
  --no-ui start or reuse the backends, print one JSON summary and exit
36
- --frontend NAME typescript (default): the familiar Work Stack UI; rust: the unified UI with
37
- 9 Execution (execution bundles only). Chosen per open, never saved.
36
+ --frontend NAME typescript (default): the familiar Work Stack UI, with same-window 9 Execution
37
+ on execution bundles; rust: the explicit alternative unified UI (execution
38
+ bundles only). Chosen per open, never saved.
38
39
 
39
40
  First time, name the workspace once:
40
41
  workbite open --workspace /abs/path/new-folder --init
package/lib/runtime.js CHANGED
@@ -515,13 +515,25 @@ async function ensureExecutionSettings(file, attempt = 0) {
515
515
  return document.execution_ui.enabled ? 'enabled' : 'disabled';
516
516
  }
517
517
 
518
- function uiEnvironment(base, { executables, layout, endpoint, uid, backendId, execution = null }) {
518
+ // The TypeScript UI's same-window 9 Execution (docs/WORKBITE-TYPESCRIPT-EXECUTION-CONFIG.md): set only by
519
+ // this launcher for a verified v2 bundle whose device opt-in is enabled. The bridge is the bundle's own
520
+ // verified workbite_tui (run by the UI with its fixed --workbite-execution-bridge argv), never a caller,
521
+ // receipt or PATH value; the UI keeps its own WORKSTACK_TUI_SETTINGS, so these names carry the private
522
+ // execution settings and intent paths separately. cleanEnvironment drops any caller WORKBITE_ value first.
523
+ function typescriptExecutionEnvironment(layout, bridge) {
524
+ return { WORKBITE_EXECUTION_UI: '1', WORKBITE_EXECUTION_BRIDGE: bridge,
525
+ WORKBITE_EXECUTION_SETTINGS: layout.tuiSettings, WORKBITE_EXECUTION_INTENT: layout.tuiIntent };
526
+ }
527
+ const verifiedPath = value => typeof value === 'string' && path.isAbsolute(value) && !/[\x00-\x1f]/.test(value);
528
+
529
+ function uiEnvironment(base, { executables, layout, endpoint, uid, backendId, execution = null, bridge = null }) {
519
530
  const home = path.dirname(executables.stackbite);
520
531
  return withPath({ ...base, WORKSTACK_TRANSPORT: 'native', WORKSTACK_NATIVE_CLIENT: executables.workstack_client,
521
532
  WORKSTACK_ENDPOINT: endpoint, WORKSTACK_WORKSPACE_UID: uid, WORKSTACK_STATE_DIR: layout.tuiState,
522
533
  WORKSTACK_EXECUTION_DOCK_CONFIG: layout.dock, WORKSTACK_EXECUTION_DOCK_BACKEND_ID: backendId,
523
534
  WORKSTACK_DEPLOY_JOURNAL_DIR: layout.journal, WORKSTACK_STACKBITE_EXECUTABLE: executables.stackbite,
524
- ...(execution ? { WORKSTACK_TUI_STATE: layout.tuiIntent, WORKSTACK_TUI_SETTINGS: layout.tuiSettings } : {}) }, home);
535
+ ...(execution ? { WORKSTACK_TUI_STATE: layout.tuiIntent, WORKSTACK_TUI_SETTINGS: layout.tuiSettings } : {}),
536
+ ...(bridge ? typescriptExecutionEnvironment(layout, bridge) : {}) }, home);
525
537
  }
526
538
 
527
539
  function runForeground(command, args, environment, { spawnImpl = spawn, signalSource = process } = {}) {
@@ -559,6 +571,11 @@ async function openSuite({ installed, commands, workspace, init = false, stateRo
559
571
  fail(frontend === 'rust' ? 'This WorkBite bundle has no verified execution UI executable; nothing was started.'
560
572
  : 'This WorkBite bundle has no verified TypeScript UI executable; nothing was started.');
561
573
  }
574
+ // A verified v2 bundle always holds the execution bridge; anything else is refused, never probed for.
575
+ const bridge = execution && frontend === 'typescript' ? installed.executables?.workbite_tui : null;
576
+ if (execution && frontend === 'typescript' && !verifiedPath(bridge)) {
577
+ fail('This WorkBite execution bundle has no verified execution bridge executable; nothing was started.');
578
+ }
562
579
  const layout = stateLayout(path.resolve(stateRoot));
563
580
  await prepareState(layout);
564
581
  const base = cleanEnvironment(environment);
@@ -601,9 +618,11 @@ async function openSuite({ installed, commands, workspace, init = false, stateRo
601
618
  return { code: 0, signal: null, summary };
602
619
  }
603
620
  const environmentForUi = uiEnvironment(base, { executables: installed.executables, layout, endpoint: session.engine.endpoint,
604
- uid: session.uid, backendId: session.backendId, execution: frontend === 'rust' ? execution : null });
621
+ uid: session.uid, backendId: session.backendId, execution: frontend === 'rust' ? execution : null,
622
+ bridge: bridge && ['enabled', 'initialized'].includes(session.executionUi) ? bridge : null });
605
623
  // Exactly one foreground child in this terminal (inherited stdio, never detached or a new console).
606
- // The TypeScript UI gets the same environment as on a v1 bundle, so it keeps its own familiar settings file.
624
+ // The TypeScript UI gets the v1 environment (keeping its own familiar settings file) plus, when the
625
+ // v2 opt-in is enabled, only the WORKBITE_EXECUTION_* names above.
607
626
  const result = await runForeground(commands[uiCommand], [], environmentForUi, { spawnImpl });
608
627
  return { ...result, summary };
609
628
  }
package/package.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "workbite",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "WorkBite (Work Stack + StackBite) verified native suite installer and launcher",
5
5
  "license": "UNLICENSED",
6
6
  "engines": {
7
7
  "node": ">=20"
8
8
  },
9
9
  "os": [
10
- "win32",
11
- "linux"
10
+ "win32"
12
11
  ],
13
12
  "cpu": [
14
13
  "x64"
package/release.json CHANGED
@@ -1,24 +1,17 @@
1
1
  {
2
2
  "schema": "workbite.release.v1",
3
3
  "product": "WorkBite",
4
- "version": "0.1.6",
5
- "launcherVersion": "0.1.6",
4
+ "version": "0.1.8",
5
+ "launcherVersion": "0.1.8",
6
6
  "repository": "Shinick-Han/WorkBite-releases",
7
- "tag": "v0.1.6",
7
+ "tag": "v0.1.8",
8
8
  "platforms": {
9
9
  "windows-x64": {
10
- "asset": "workbite-0.1.6-windows-x64.zip",
11
- "sha256": "7a639475361111a5afb8c04ac5d8532a125f57c1de00f9b1a6587356357bbe65",
12
- "size": 97763242,
13
- "bundleSha256": "aadb8ab699423879b6ce56a987ad3e1f2d242764f057fa249d8537f3e3841630",
14
- "url": "https://github.com/Shinick-Han/WorkBite-releases/releases/download/v0.1.6/workbite-0.1.6-windows-x64.zip"
15
- },
16
- "linux-x64": {
17
- "asset": "workbite-0.1.6-linux-x64.tar.gz",
18
- "sha256": "028f237823078d2adfb96d074b62ed1c8538879a46dd55252a49f43a0f2092b7",
19
- "size": 81660896,
20
- "bundleSha256": "3fb3d0b42341df58ee00664342407d00b3251795686300f1000261eb8dffe725",
21
- "url": "https://github.com/Shinick-Han/WorkBite-releases/releases/download/v0.1.6/workbite-0.1.6-linux-x64.tar.gz"
10
+ "asset": "workbite-0.1.8-windows-x64.zip",
11
+ "sha256": "236a80d01b4630f8c70924bb8e56c743b7564fc59c025c5ba88a19635d38a517",
12
+ "size": 97538305,
13
+ "bundleSha256": "9971dc8ff0619f3f5a9cf6e4b3bec60d88da7127d8306f37fa80e5f415d72c61",
14
+ "url": "https://github.com/Shinick-Han/WorkBite-releases/releases/download/v0.1.8/workbite-0.1.8-windows-x64.zip"
22
15
  }
23
16
  }
24
17
  }