@nanobpm/nano-workforce 0.151.1 → 0.153.0
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/.github/workflows/ci.yml +23 -0
- package/CHANGELOG.md +12 -0
- package/README.md +56 -0
- package/install.sh +1221 -0
- package/package.json +1 -1
- package/test/install-smoke.sh +337 -0
package/.github/workflows/ci.yml
CHANGED
|
@@ -92,6 +92,29 @@ jobs:
|
|
|
92
92
|
# blocker, and a self-proving canary asserts the oracle's red path genuinely fires so the gate can
|
|
93
93
|
# never rot into a vacuous green while the corpus is parked. Hermetic (in-process wasm engine, no
|
|
94
94
|
# sockets), so it runs on every PR/push as its own job.
|
|
95
|
+
# install.sh onboarding script (issues #576 + #583): POSIX-sh cleanliness + a
|
|
96
|
+
# hermetic smoke test asserting the emitted command sequence (phase 1) and the
|
|
97
|
+
# phase-2 console call flow (dry-run + a stubbed-console live run). The script
|
|
98
|
+
# is served from `main` for `curl … | sh`, so a broken change is live the
|
|
99
|
+
# instant it merges — this gate keeps that surface honest.
|
|
100
|
+
install-script:
|
|
101
|
+
name: install.sh (shellcheck + dry-run smoke)
|
|
102
|
+
runs-on: ubuntu-latest
|
|
103
|
+
steps:
|
|
104
|
+
- name: Checkout
|
|
105
|
+
uses: actions/checkout@v4
|
|
106
|
+
|
|
107
|
+
- name: Setup Node.js
|
|
108
|
+
uses: actions/setup-node@v4
|
|
109
|
+
with:
|
|
110
|
+
node-version: "24"
|
|
111
|
+
|
|
112
|
+
- name: shellcheck (POSIX sh)
|
|
113
|
+
run: shellcheck -s sh install.sh test/install-smoke.sh
|
|
114
|
+
|
|
115
|
+
- name: Smoke test (dry-run sequence + stubbed-console phase 2)
|
|
116
|
+
run: sh test/install-smoke.sh
|
|
117
|
+
|
|
95
118
|
derivation-parity:
|
|
96
119
|
name: derivation parity (nwf corpus regression guard)
|
|
97
120
|
runs-on: ubuntu-latest
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [0.153.0](https://github.com/nanobpm/nano-workforce/compare/v0.152.0...v0.153.0) (2026-08-29)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **onboarding:** install-script phase 2 — install, scaffold, configure & run the Workforce app ([#598](https://github.com/nanobpm/nano-workforce/issues/598)) ([e86f9ca](https://github.com/nanobpm/nano-workforce/commit/e86f9ca292998481e1fd194859832e9040bf0b51)), closes [nanobpm/nano-workforce#583](https://github.com/nanobpm/nano-workforce/issues/583) [Magikcraft/nano-bpm#1036](https://github.com/Magikcraft/nano-bpm/issues/1036) [#583](https://github.com/nanobpm/nano-workforce/issues/583)
|
|
6
|
+
|
|
7
|
+
## [0.152.0](https://github.com/nanobpm/nano-workforce/compare/v0.151.1...v0.152.0) (2026-08-28)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **onboarding:** one-command install script — hire your coding harnesses and bring up a Nano workforce ([#597](https://github.com/nanobpm/nano-workforce/issues/597)) ([73b840b](https://github.com/nanobpm/nano-workforce/commit/73b840bbb3c602e83d4cac6990e69d0b77ed0344)), closes [jwulf/c8ctl-plugin-nano#117](https://github.com/jwulf/c8ctl-plugin-nano/issues/117) [#576](https://github.com/nanobpm/nano-workforce/issues/576)
|
|
12
|
+
|
|
1
13
|
## [0.151.1](https://github.com/nanobpm/nano-workforce/compare/v0.151.0...v0.151.1) (2026-08-28)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -79,6 +79,62 @@ You can also run Nano Workforce directly, outside Studio, against a running Nano
|
|
|
79
79
|
engine. This is the second-class path — no left-rail integration or update UI — but
|
|
80
80
|
it's the same app and the same behaviour.
|
|
81
81
|
|
|
82
|
+
### Install with one command
|
|
83
|
+
|
|
84
|
+
If you already have one or more coding-agent CLIs installed (`kimi`, `qwen`,
|
|
85
|
+
`copilot`, `claude`, `pi`), one command takes you from there to a **running Nano
|
|
86
|
+
Workforce**: engine, a supervised workforce of hired agents, **and the Nano
|
|
87
|
+
Workforce app itself, installed, configured, and running**:
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
curl -fsSL https://raw.githubusercontent.com/nanobpm/nano-workforce/main/install.sh | sh
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Phase 1 — engine + workforce.** It installs `@camunda8/cli` and the
|
|
94
|
+
`c8ctl-plugin-nano` plugin, installs shell completion, detects which of your
|
|
95
|
+
harnesses are installed, lets you multi-select which to hire (with a model and an
|
|
96
|
+
instance count each), hires each with `--rank senior --protocol acp --permission
|
|
97
|
+
yolo`, composes a declarative **workforce manifest** (`c8 nano workforce add`),
|
|
98
|
+
and brings it up (`c8 nano start` then `c8 nano workforce start`).
|
|
99
|
+
|
|
100
|
+
**Phase 2 — the app.** It then talks to the nano console the engine brought up to
|
|
101
|
+
install the `@nanobpm/nano-workforce` extension, scaffold a **Workforce** project
|
|
102
|
+
from the `nano-workforce` template, write its `ProjectConfig.env` (including
|
|
103
|
+
`NANO_WORKFORCE_BASE_URL` set to the console origin + `/console/app-view/Workforce`
|
|
104
|
+
so the fleet's hooks resolve through the proxy — see [Fleet
|
|
105
|
+
networking](#fleet-networking-remote-workers)), and run it. It confirms readiness
|
|
106
|
+
by polling the app's own `GET /app/api/version` through the proxy, then prints the
|
|
107
|
+
cockpit URL, the Tasks inbox, the Delivery Graphs page, and the `/app/api/agent` +
|
|
108
|
+
`/app/mcp` pointers. Pass `--skip-app` to stop after phase 1.
|
|
109
|
+
|
|
110
|
+
> ⚠️ The hired agents run **unattended** with `--permission yolo` — full tool
|
|
111
|
+
> access (shell, file writes, network) as your user on this host. The script shows
|
|
112
|
+
> a confirmation summary before it hires anything (and before it installs the app);
|
|
113
|
+
> pass `--yes` to skip both.
|
|
114
|
+
|
|
115
|
+
Prompts read from `/dev/tty`, so the `curl … | sh` pipe works interactively. It is
|
|
116
|
+
also fully scriptable and safe to re-run (it converges rather than duplicating — an
|
|
117
|
+
existing project is configured and run, never re-scaffolded):
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
# Non-interactive (CI / re-provisioning); repeatable --harness <name>[:<model>][:<instances>]
|
|
121
|
+
curl -fsSL https://raw.githubusercontent.com/nanobpm/nano-workforce/main/install.sh | sh -s -- --harness copilot:gpt-5.4:5 --harness claude:opus:1 --yes
|
|
122
|
+
|
|
123
|
+
# Name the app's project, or stop after phase 1 (engine + workforce only)
|
|
124
|
+
curl -fsSL .../install.sh | sh -s -- --harness copilot:gpt-5.4:5 --yes --project-name Workforce
|
|
125
|
+
curl -fsSL .../install.sh | sh -s -- --harness copilot:gpt-5.4:5 --yes --skip-app
|
|
126
|
+
|
|
127
|
+
# Preview every command (including the console API calls) without changing anything
|
|
128
|
+
curl -fsSL https://raw.githubusercontent.com/nanobpm/nano-workforce/main/install.sh | sh -s -- --harness copilot:gpt-5.4:1 --dry-run
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`qwen` must always be given an explicit model (it stalls without one). With no
|
|
132
|
+
controlling terminal and no `--harness`, the script exits with usage rather than
|
|
133
|
+
hanging. Phase 2 needs the engine's console reachable (the default `c8 nano start`
|
|
134
|
+
`studio` mode); an unreachable console is reported as an early failure that changes
|
|
135
|
+
nothing. Because it is served from `main`, a merged change to `install.sh` is live
|
|
136
|
+
immediately.
|
|
137
|
+
|
|
82
138
|
### Prerequisites
|
|
83
139
|
|
|
84
140
|
- A running **Nano gateway/engine** (default `http://localhost:8080`) — what the app
|