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 +18 -13
- package/lib/cli.js +3 -2
- package/lib/runtime.js +23 -4
- package/package.json +2 -3
- package/release.json +8 -15
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.
|
|
7
|
-
Work Stack UI by default
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
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
|
|
37
|
-
|
|
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
|
-
|
|
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 } : {})
|
|
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
|
|
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.
|
|
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.
|
|
5
|
-
"launcherVersion": "0.1.
|
|
4
|
+
"version": "0.1.8",
|
|
5
|
+
"launcherVersion": "0.1.8",
|
|
6
6
|
"repository": "Shinick-Han/WorkBite-releases",
|
|
7
|
-
"tag": "v0.1.
|
|
7
|
+
"tag": "v0.1.8",
|
|
8
8
|
"platforms": {
|
|
9
9
|
"windows-x64": {
|
|
10
|
-
"asset": "workbite-0.1.
|
|
11
|
-
"sha256": "
|
|
12
|
-
"size":
|
|
13
|
-
"bundleSha256": "
|
|
14
|
-
"url": "https://github.com/Shinick-Han/WorkBite-releases/releases/download/v0.1.
|
|
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
|
}
|