workbite 0.1.5 → 0.1.7
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 +16 -9
- 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,13 +3,20 @@
|
|
|
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
|
-
`workbite --frontend rust`
|
|
11
|
-
Either frontend reuses the same owner and
|
|
12
|
-
saved.
|
|
6
|
+
Launcher 0.1.7 (native bundle 0.1.7) is a **Windows x64 only** release. It
|
|
7
|
+
opens the familiar TypeScript Work Stack UI by default, which now 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. The unified Rust UI stays
|
|
10
|
+
an explicit alternative per open: `workbite open --frontend rust` (or bare
|
|
11
|
+
`workbite --frontend rust`). Either frontend reuses the same owner and
|
|
12
|
+
StackBite backend; the choice is not saved. Leaving the view or closing the UI
|
|
13
|
+
keeps the agent running, and Task completion stays an explicit action.
|
|
14
|
+
|
|
15
|
+
Linux x64: keep using `workbite@0.1.6` (native bundle 0.1.6, glibc 2.28+)
|
|
16
|
+
until separate Linux compatibility work for this feature is done; 0.1.7 does
|
|
17
|
+
not install on Linux. Updating from the 0.1.4 native bundle requires an
|
|
18
|
+
operator handover of existing backend processes; the launcher does not stop
|
|
19
|
+
them or clear startup records automatically.
|
|
13
20
|
|
|
14
21
|
```sh
|
|
15
22
|
npm install -g workbite
|
|
@@ -19,7 +26,7 @@ workbite # afterwards (TypeScr
|
|
|
19
26
|
workbite --frontend rust # unified Rust UI with 9 Execution
|
|
20
27
|
```
|
|
21
28
|
|
|
22
|
-
Node.js 20+ on Windows x64
|
|
29
|
+
Node.js 20+ on Windows x64 (Linux x64: `npm install -g workbite@0.1.6`).
|
|
23
30
|
|
|
24
31
|
- `workbite install` downloads the pinned bundle for your platform from
|
|
25
32
|
`github.com/Shinick-Han/WorkBite-releases`, verifies its size and SHA-256 and
|
|
@@ -29,7 +36,7 @@ Node.js 20+ on Windows x64 or Linux x64 (glibc 2.28+).
|
|
|
29
36
|
- `workbite open --workspace ABS [--init] [--no-ui] [--frontend typescript|rust]`
|
|
30
37
|
starts or reuses the workspace's Work Stack owner and a StackBite backend
|
|
31
38
|
(only processes it can prove it started), then runs the TypeScript Work Stack
|
|
32
|
-
UI, or the unified Rust UI with `--frontend rust` (0.1.4 execution bundle
|
|
39
|
+
UI, or the unified Rust UI with `--frontend rust` (0.1.4+ execution bundle
|
|
33
40
|
only; an older bundle refuses it before starting anything). Backends keep
|
|
34
41
|
running after the UI exits.
|
|
35
42
|
- `workbite` (or `workbite open` without `--workspace`) reopens the last
|
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.7",
|
|
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.7",
|
|
5
|
+
"launcherVersion": "0.1.7",
|
|
6
6
|
"repository": "Shinick-Han/WorkBite-releases",
|
|
7
|
-
"tag": "v0.1.
|
|
7
|
+
"tag": "v0.1.7",
|
|
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.4-linux-x64.tar.gz",
|
|
18
|
-
"sha256": "f349f8c0eebbcf171a488bd1108d74b123cb57633ec6fc54c55c79532b47ae12",
|
|
19
|
-
"size": 81647804,
|
|
20
|
-
"bundleSha256": "aa37923f4dd74e8a12ceac09d26cea956a960ea6d34939be1bef303c79042222",
|
|
21
|
-
"url": "https://github.com/Shinick-Han/WorkBite-releases/releases/download/v0.1.4/workbite-0.1.4-linux-x64.tar.gz"
|
|
10
|
+
"asset": "workbite-0.1.7-windows-x64.zip",
|
|
11
|
+
"sha256": "2b560376785c5e1c8cea670b753c779c0e57fd16433f577217f8ca68de9a6aa1",
|
|
12
|
+
"size": 97524335,
|
|
13
|
+
"bundleSha256": "5a6d347f7916695ff7b1f49bc48974e9da4188539e4ad1c81b5b0ef1af4b38ac",
|
|
14
|
+
"url": "https://github.com/Shinick-Han/WorkBite-releases/releases/download/v0.1.7/workbite-0.1.7-windows-x64.zip"
|
|
22
15
|
}
|
|
23
16
|
}
|
|
24
17
|
}
|