@ckanner/flywheel 0.31.0 → 0.31.1
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/CHANGELOG.md +48 -5
- package/CONTRIBUTING.md +19 -0
- package/LICENSE +21 -0
- package/README.en.md +4 -171
- package/README.md +152 -269
- package/README.zh-CN.md +116 -0
- package/bin/flywheel-claude-code-pro-worker.js +1 -1
- package/bin/flywheel-codex-pro-worker.js +1 -1
- package/bin/flywheel-dsh-worker.js +1 -1
- package/bin/flywheel.js +1 -1
- package/bin/runtime.js +1 -1
- package/docs/README.md +84 -0
- package/docs/README.zh-CN.md +64 -0
- package/docs/archive/README.md +13 -0
- package/docs/archive/codex-pro-adapter-handoff.md +197 -0
- package/docs/archive/design-v0.24.md +540 -0
- package/docs/design.md +681 -0
- package/docs/en/claude-code-pro.md +25 -16
- package/docs/en/configuration.md +306 -141
- package/docs/en/contributing.md +303 -0
- package/docs/en/flow-console.md +67 -13
- package/docs/en/getting-started.md +232 -126
- package/docs/en/investigation.md +219 -0
- package/docs/en/jev-shadow.md +67 -0
- package/docs/en/model-policy.md +147 -62
- package/docs/en/releasing.md +207 -0
- package/docs/en/session-evaluation.md +4 -2
- package/docs/en/session-recovery.md +49 -6
- package/docs/en/workflow.md +222 -114
- package/docs/evaluation/README.md +12 -0
- package/docs/evaluation/jev-historical-provisional.json +138 -0
- package/docs/evaluation/jev-historical-result-2026-11-10.json +174 -0
- package/docs/plans/2026-11-01-dsh-integration.md +67 -0
- package/docs/plans/2026-11-01-model-profiles-preflight.md +29 -0
- package/docs/plans/2026-11-01-npm-installation.md +19 -0
- package/docs/plans/2026-11-03-codex-pro-default.md +28 -0
- package/docs/plans/2026-11-06-adaptive-workflow.md +365 -0
- package/docs/plans/2026-11-07-session-lifecycle.en.md +424 -0
- package/docs/plans/2026-11-07-session-lifecycle.md +337 -0
- package/docs/plans/2026-11-08-flow-console.md +271 -0
- package/docs/plans/2026-11-10-jev-shadow.md +32 -0
- package/docs/plans/2026-11-10-task-discovery.md +17 -0
- package/docs/plans/2026-11-10-workbench-redesign.md +19 -0
- package/docs/plans/2026-11-12-feedback-driven-workflows.md +739 -0
- package/docs/plans/README.md +22 -0
- package/docs/reviews/2026-08-24-v0.18-review-fixplan.md +265 -0
- package/docs/reviews/2026-09-12-pr4-pr5-review.md +70 -0
- package/docs/reviews/README.md +12 -0
- package/docs/validation/2026-11-01-npm-installation.md +105 -0
- package/docs/validation/2026-11-01-profiles-preflight.md +67 -0
- package/docs/validation/2026-11-01-results.md +114 -0
- package/docs/validation/2026-11-03-codex-pro-default.md +90 -0
- package/docs/validation/2026-11-04-dsh-native-view.md +85 -0
- package/docs/validation/2026-11-04-release-0.28.1.md +33 -0
- package/docs/validation/2026-11-04-release-0.28.2.md +35 -0
- package/docs/validation/2026-11-05-dsh-0.2.2-compatibility.md +26 -0
- package/docs/validation/2026-11-05-registry-smoke-recovery.md +26 -0
- package/docs/validation/2026-11-05-release-0.28.3.md +32 -0
- package/docs/validation/2026-11-05-subscription-model-access.md +60 -0
- package/docs/validation/2026-11-05-view-order.md +14 -0
- package/docs/validation/2026-11-07-adaptive-workflow.md +79 -0
- package/docs/validation/2026-11-07-claude-code-pro.md +144 -0
- package/docs/validation/2026-11-07-session-lifecycle.md +136 -0
- package/docs/validation/2026-11-08-session-p3-p4.md +99 -0
- package/docs/validation/2026-11-09-flow-console.md +81 -0
- package/docs/validation/2026-11-10-jev-shadow.md +50 -0
- package/docs/validation/2026-11-10-task-discovery.md +45 -0
- package/docs/validation/2026-11-10-workbench-redesign.md +54 -0
- package/docs/validation/2026-11-11-release-0.30.2.md +65 -0
- package/docs/validation/2026-11-11-release-0.31.0.md +46 -0
- package/docs/validation/2026-11-12-dsh-0.2.2-rc.2.md +58 -0
- package/docs/validation/2026-11-12-feedback-driven-workflows.md +187 -0
- package/docs/validation/README.md +41 -0
- package/docs/validation/evidence/2026-11-08-session-p3-p4.json +5430 -0
- package/docs/validation/evidence/claude-node-bridges.txt +118 -0
- package/docs/validation/evidence/claude-npm-build.txt +15 -0
- package/docs/validation/evidence/claude-npm-candidate.json +54 -0
- package/docs/validation/evidence/claude-npm-install.txt +21 -0
- package/docs/validation/evidence/claude-npm-tests.txt +145 -0
- package/docs/validation/evidence/claude-plugin-tests.txt +205 -0
- package/docs/validation/evidence/claude-quality-gate.txt +29 -0
- package/docs/validation/evidence/claude-race.txt +7 -0
- package/docs/validation/evidence/codex-pro-070-probes.txt +4 -0
- package/docs/validation/evidence/dsh-bridge.txt +4 -0
- package/docs/validation/evidence/dsh-native-view-bridge-tests.txt +1 -0
- package/docs/validation/evidence/dsh-native-view-build.txt +15 -0
- package/docs/validation/evidence/dsh-native-view-candidate.json +54 -0
- package/docs/validation/evidence/dsh-native-view-inspect.txt +27 -0
- package/docs/validation/evidence/dsh-native-view-install-tests.txt +19 -0
- package/docs/validation/evidence/dsh-native-view-npm-tests.txt +143 -0
- package/docs/validation/evidence/dsh-native-view-plugin-tests.txt +99 -0
- package/docs/validation/evidence/dsh-native-view-quality-gate.txt +29 -0
- package/docs/validation/evidence/dsh-plugin-tests.txt +48 -0
- package/docs/validation/evidence/function-coverage.txt +378 -0
- package/docs/validation/evidence/npm-build.txt +13 -0
- package/docs/validation/evidence/npm-contract-tests.txt +65 -0
- package/docs/validation/evidence/npm-dsh-bridge.txt +18 -0
- package/docs/validation/evidence/npm-dsh-plugin-tests.txt +62 -0
- package/docs/validation/evidence/npm-function-coverage.txt +420 -0
- package/docs/validation/evidence/npm-install-tests.txt +20 -0
- package/docs/validation/evidence/npm-quality-gate.txt +29 -0
- package/docs/validation/evidence/npm-race.txt +7 -0
- package/docs/validation/evidence/pr-dsh-bridge.txt +4 -0
- package/docs/validation/evidence/pr-dsh-plugin-tests.txt +48 -0
- package/docs/validation/evidence/pr-function-coverage.txt +379 -0
- package/docs/validation/evidence/pr-quality-gate.txt +28 -0
- package/docs/validation/evidence/pr-race.txt +6 -0
- package/docs/validation/evidence/profiles-control-smoke.json +1 -0
- package/docs/validation/evidence/profiles-dsh-bridge.txt +18 -0
- package/docs/validation/evidence/profiles-dsh-plugin-tests.txt +59 -0
- package/docs/validation/evidence/profiles-function-coverage.txt +411 -0
- package/docs/validation/evidence/profiles-quality-gate.txt +29 -0
- package/docs/validation/evidence/profiles-race.txt +7 -0
- package/docs/validation/evidence/quality-gate.txt +28 -0
- package/docs/validation/evidence/race.txt +6 -0
- package/docs/validation/evidence/watchdog-startup-after.txt +2 -0
- package/docs/validation/evidence/watchdog-startup-before.txt +6 -0
- package/docs/validation/evidence/watchdog-startup-quality-gate.txt +29 -0
- package/docs/validation/evidence/watchdog-startup-race.txt +7 -0
- package/docs/{claude-code-pro.md → zh-CN/claude-code-pro.md} +23 -17
- package/docs/{configuration.md → zh-CN/configuration.md} +323 -139
- package/docs/zh-CN/contributing.md +240 -0
- package/docs/{flow-console.md → zh-CN/flow-console.md} +55 -12
- package/docs/zh-CN/getting-started.md +352 -0
- package/docs/zh-CN/investigation.md +182 -0
- package/docs/zh-CN/jev-shadow.md +79 -0
- package/docs/zh-CN/model-policy.md +123 -0
- package/docs/zh-CN/releasing.md +120 -0
- package/docs/{session-evaluation.md → zh-CN/session-evaluation.md} +4 -2
- package/docs/{session-recovery.md → zh-CN/session-recovery.md} +46 -12
- package/docs/zh-CN/workflow.md +270 -0
- package/npm/install.js +1 -1
- package/package.json +12 -25
- package/docs/getting-started.md +0 -418
- package/docs/model-policy.md +0 -65
- package/docs/workflow.md +0 -314
|
@@ -1,67 +1,89 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Getting started
|
|
2
2
|
|
|
3
|
-
[
|
|
3
|
+
[Documentation](../README.md) · English · [简体中文](../zh-CN/getting-started.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Install Flywheel, connect the backends you intend to use, then run a small task.
|
|
6
|
+
This guide follows the current repository. Check the installed version and the npm
|
|
7
|
+
version you choose; a merged change does not update an existing installation.
|
|
8
|
+
Keep the CLI, platform packages, and DSH plugin at one version.
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
**Adaptive workflow in current source:** `/flywheel-task`, `control launch`, Auto/Quick/Full, and automatic DSH task association require a CLI, plugin, and skills containing this implementation. Check `flywheel control launch --help`; the earlier 0.28.5 version label alone does not establish that these additions are installed.
|
|
10
|
-
|
|
11
|
-
The top-level **Flywheel conversation view** below is available from `0.28.1`. Version `0.28.0` uses the composer popup; upgrade the CLI and desktop plugin to the same new version. Merging source or reloading the old version does not change that layout. CLI and task-directory interfaces remain the same.
|
|
12
|
-
|
|
13
|
-
Subscription preset migration and `permissions.mode` are available from **0.28.2**. Upgrades preserve existing configuration; preview `flywheel config migrate --preset subscriptions`, review the model bindings and full-access policy, then explicitly apply it with `--apply` and a backup.
|
|
14
|
-
|
|
15
|
-
**Ordering from 0.28.5:** the external Flywheel conversation view follows the built-in Statistics view. DSH still owns view selection and overflow navigation.
|
|
16
|
-
|
|
17
|
-
**Fixes in 0.28.3:** the `deepseek-account` default and the current session directory when the project path is omitted. Version 0.28.2 still uses `deepseek-official` and the original directory. Check the registry version before installing. Upgrades preserve configuration; adopting the account preset requires explicit migration.
|
|
18
|
-
|
|
19
|
-
**Optional Claude backend:** the default installation does not require Claude. Selecting `claude-code-pro` requires the companion 0.4.0 plugin in the worker's dependency tree and an installed/authenticated Claude CLI. See [Claude Code Pro](claude-code-pro.md) for configuration and source-candidate boundaries.
|
|
20
|
-
|
|
21
|
-
The reviewed Codex Pro 0.9.0 source package is bundled with this Flywheel candidate; installation does not assume an unpublished registry version exists. See [provenance](../../plugins/dsh/vendor/README.md), [recovery](session-recovery.md), and [paired evaluation](session-evaluation.md).
|
|
10
|
+
For the complete path through task branches and PR review, see [Workflow](workflow.md).
|
|
22
11
|
|
|
23
12
|
## 1. Prepare the environment
|
|
24
13
|
|
|
25
|
-
| Requirement |
|
|
14
|
+
| Requirement | Purpose |
|
|
26
15
|
|---|---|
|
|
27
|
-
| Git with
|
|
16
|
+
| Git with a configured commit identity | Worktrees and local delivery commits |
|
|
28
17
|
| Node.js 22.18.0 or later and npm | Installer, launchers, and JavaScript workers |
|
|
29
18
|
| DSH Mac and its desktop-supplied `dsh` command | Desktop plugin management and DSH SDK execution |
|
|
30
|
-
| Authenticated Kimi CLI | Default Plan, frontend execution, and optional Garden |
|
|
31
|
-
| Codex executable and existing login | The hard route
|
|
19
|
+
| Authenticated Kimi CLI | Default Full Plan, frontend execution, and optional Garden |
|
|
20
|
+
| Codex executable and existing login | The hard execution route uses Codex Pro and Codex app-server |
|
|
32
21
|
| DeepSeek and ChatGPT providers in the DSH SDK profile | Default execution, independent Review, and Judge |
|
|
33
|
-
| Go 1.27 or later | Only the Go example
|
|
22
|
+
| Go 1.27 or later | Only the disposable Go example and source builds; not npm binary installation |
|
|
23
|
+
|
|
24
|
+
The plugin declares DSH `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.2` compatibility. DSH 0.2.2 has
|
|
25
|
+
its own Node 24.9 minimum; use the official desktop-supplied CLI. Check actual command
|
|
26
|
+
locations and versions before setup:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
git --version
|
|
30
|
+
node --version
|
|
31
|
+
npm --version
|
|
32
|
+
command -v dsh
|
|
33
|
+
dsh --version
|
|
34
|
+
kimi --version
|
|
35
|
+
codex --version
|
|
36
|
+
```
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
Use each backend's normal installation and login flow. Flywheel does not sign in,
|
|
39
|
+
copy credentials, or replace the desktop application. Full needs its configured
|
|
40
|
+
Plan/Execute/Review/Judge backends. A qualified Quick task needs its actual execution
|
|
41
|
+
route and independent final Review; an upgrade to Full requires the additional stages.
|
|
42
|
+
Unused execution routes do not become task runtime requirements.
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
Claude is optional. Selecting `claude-code-pro` additionally requires the matching
|
|
45
|
+
0.4.0 companion package in the worker's dependency tree and an installed,
|
|
46
|
+
authenticated Claude CLI. See [Claude Code Pro](claude-code-pro.md).
|
|
38
47
|
|
|
39
48
|
## 2. Install
|
|
40
49
|
|
|
41
50
|
From a terminal that can find the desktop's `dsh` command:
|
|
42
51
|
|
|
43
52
|
```sh
|
|
53
|
+
npm view @ckanner/flywheel version
|
|
44
54
|
npx -y @ckanner/flywheel@latest install
|
|
55
|
+
flywheel version
|
|
45
56
|
```
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
Use a published exact version in place of `@latest` when pinning an installation.
|
|
59
|
+
Add `--json` to the install command when an agent needs one structured result.
|
|
60
|
+
The installer:
|
|
61
|
+
|
|
62
|
+
1. Installs its exact version globally and resolves the matching platform binary and workers.
|
|
63
|
+
2. Installs the bundled skills and creates global configuration only when absent.
|
|
64
|
+
3. Records an absolute GUI launcher and the installation-time tool paths.
|
|
65
|
+
4. Registers the same Flywheel plugin version with the selected DSH profile.
|
|
66
|
+
5. Runs local diagnostics and reports completed steps and blockers.
|
|
48
67
|
|
|
49
|
-
`ok:true` means
|
|
68
|
+
`ok:true` means installation completed; `ready:true` means that local diagnostics
|
|
69
|
+
found no blocker. Missing tools can produce `ok:true, ready:false`; inspect
|
|
70
|
+
`diagnostic.checks`. Neither value proves account access or real model inference.
|
|
71
|
+
An installation failure preserves partial results for diagnosis and retry.
|
|
50
72
|
|
|
51
|
-
###
|
|
73
|
+
### Installation options
|
|
52
74
|
|
|
53
75
|
| Option | Effect |
|
|
54
76
|
|---|---|
|
|
55
77
|
| `--prefix PATH` | Choose the npm global prefix |
|
|
56
|
-
| `--project PATH` | Install skills
|
|
57
|
-
| `--dsh-bin PATH` |
|
|
58
|
-
| `--profile NAME` | Desktop plugin target profile, default `desktop`;
|
|
78
|
+
| `--project PATH` | Install project skills in `.agents/skills` and diagnose that existing project; CLI installation remains global |
|
|
79
|
+
| `--dsh-bin PATH` | Select the verified desktop DSH command |
|
|
80
|
+
| `--profile NAME` | Desktop plugin target profile, default `desktop`; separate from the worker's SDK profile |
|
|
59
81
|
| `--no-dsh` | Skip desktop plugin registration |
|
|
60
|
-
| `--no-global` | Set up
|
|
61
|
-
| `--timeout-ms N` |
|
|
82
|
+
| `--no-global` | Set up an existing persistent installation without another global install |
|
|
83
|
+
| `--timeout-ms N` | Per-step timeout, default 600000 ms, range 100–1800000 |
|
|
62
84
|
| `--json` | Emit one structured installation result |
|
|
63
85
|
|
|
64
|
-
For a user-owned
|
|
86
|
+
For a user-owned prefix:
|
|
65
87
|
|
|
66
88
|
```sh
|
|
67
89
|
npx -y @ckanner/flywheel@latest install --prefix "$HOME/.local"
|
|
@@ -69,53 +91,70 @@ export PATH="$HOME/.local/bin:$PATH"
|
|
|
69
91
|
flywheel version
|
|
70
92
|
```
|
|
71
93
|
|
|
72
|
-
|
|
94
|
+
Keep the actual prefix's `bin` in your shell configuration. If needed, pass
|
|
95
|
+
`--dsh-bin /absolute/path/to/dsh`; verify that path rather than guessing an app-bundle
|
|
96
|
+
location. Plain `npm install --global @ckanner/flywheel` only places files. Complete
|
|
97
|
+
setup explicitly afterward with `flywheel setup --no-global`. Do not use
|
|
98
|
+
`--no-global` to make a temporary npx cache the permanent GUI entry.
|
|
73
99
|
|
|
74
|
-
|
|
100
|
+
## 3. Connect desktop and SDK backends
|
|
75
101
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
102
|
+
Reload the desktop as directed by DSH, open an existing conversation, and select
|
|
103
|
+
**Flywheel** beside the built-in views. It follows Statistics; check the overflow
|
|
104
|
+
menu if necessary. The blank new-session landing page does not show conversation
|
|
105
|
+
views. The console provides a canvas, configuration, and run history while DSH keeps
|
|
106
|
+
its conversation, trajectory, composer, and sidebar.
|
|
79
107
|
|
|
80
|
-
|
|
108
|
+
Desktop plugin registration uses the desktop-supplied command and the `desktop`
|
|
109
|
+
profile by default. An independent npm DSH CLI cannot manage that reserved profile.
|
|
110
|
+
The worker normally runs in a separate **`sdk` profile** and does not inherit the
|
|
111
|
+
conversation's selected model or every desktop plugin.
|
|
81
112
|
|
|
82
|
-
|
|
113
|
+
### Account selection
|
|
83
114
|
|
|
84
|
-
The
|
|
115
|
+
The default DeepSeek route explicitly selects `deepseek-account` / `deepseek-flash`.
|
|
116
|
+
The standard SDK `base` profile includes the account adapter. With the same
|
|
117
|
+
`DSH_HOME`, standard desktop and SDK setups share the existing account credential
|
|
118
|
+
store. Custom homes, profiles, or credential stores need separate checking.
|
|
119
|
+
`deepseek-official` is an explicitly configured API-key alternative, with no automatic
|
|
120
|
+
paid fallback from the account preset.
|
|
85
121
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
This is the command shape used internally, not a placeholder to paste literally. An independent npm DSH CLI cannot manage the reserved `desktop` profile. Reload according to the host's instructions and select **Flywheel** in the native view bar alongside Chat and Trajectory. Check that bar's More menu if the entry is not directly visible.
|
|
91
|
-
|
|
92
|
-
This view controls and observes an already prepared task: progress, intervention, effective models, environment checks, and explicit start/refresh/stop. DSH keeps its chat, trajectory, composer, model selector, and right sidebar. Discuss requirements and prepare contracts through the original chat and skills. A launch or start through the DSH tools associates the exact task with that conversation. The view does not scan for tasks started elsewhere; select the same task directory to observe one.
|
|
93
|
-
|
|
94
|
-
The worker defaults to a separate **`sdk` profile**. The standard SDK layers on `base`, which already includes DeepSeek's account and API adapters. Current source explicitly selects `provider: "deepseek-account"` and `model: "deepseek-flash"` to reuse the signed-in, funded account. `deepseek-official` is only for an explicitly chosen API-key configuration; there is no automatic paid-channel fallback.
|
|
95
|
-
|
|
96
|
-
With the same `DSH_HOME`, the standard desktop and SDK can share the existing login in the default `<DSH_HOME>/.credentials.yaml`, independently of the profile. No token copying or switch to the `desktop` profile is needed. Check custom home, profile, or credential-store choices separately. The SDK does not inherit the desktop's selected conversation model; Flywheel uses its own effective bindings, visible through `config inspect` or the view's model-configuration action. Native GPT routing needs the ChatGPT adapter in the SDK profile. The checked adapter baseline can be installed with:
|
|
122
|
+
Native GPT Review/Judge need the ChatGPT adapter in the SDK profile. The repository's
|
|
123
|
+
checked adapter baseline can be installed with:
|
|
97
124
|
|
|
98
125
|
```sh
|
|
99
126
|
dsh plugin --profile sdk add dsh-plugin-chatgpt@0.1.17
|
|
100
127
|
```
|
|
101
128
|
|
|
102
|
-
|
|
129
|
+
This is a compatibility baseline, not a latest-version claim. Follow that adapter's
|
|
130
|
+
normal authorization flow; keep `DSH_HOME` consistent and credentials out of task
|
|
131
|
+
files and Git.
|
|
103
132
|
|
|
104
|
-
The
|
|
133
|
+
The hard route directly imports the pinned Codex Pro 0.9.0 public machine API.
|
|
134
|
+
It needs the local Codex command/login, not a parent model delegating through the
|
|
135
|
+
`subagent_codex_pro` tool. Optional Claude has its own dependency and login.
|
|
105
136
|
|
|
106
|
-
The
|
|
137
|
+
The DSH worker's child-only policy disables delegation, auxiliary model compaction,
|
|
138
|
+
and the current web tool. A native conversation view does not restore those worker
|
|
139
|
+
capabilities or merge full worker histories into the parent trajectory. See the
|
|
140
|
+
[plugin documentation](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/README.md) for lifecycle and capability boundaries.
|
|
107
141
|
|
|
108
142
|
### Desktop launcher
|
|
109
143
|
|
|
110
|
-
Setup
|
|
144
|
+
Setup writes `~/.config/flywheel/npm-launcher` and an installation record containing
|
|
145
|
+
absolute Node/CLI paths and the checked DSH entry. An explicit `flywheelBinary`
|
|
146
|
+
overrides the managed launcher. Missing records can use legacy PATH lookup;
|
|
147
|
+
invalid records or modified launchers fail visibly.
|
|
111
148
|
|
|
112
|
-
After moving Node
|
|
149
|
+
After moving Node/the npm prefix or installing missing tools, rerun
|
|
150
|
+
`flywheel setup --no-global` from a terminal that can find them, preserving original
|
|
151
|
+
options. Save custom launcher changes before resolving a conflict. A terminal export
|
|
152
|
+
does not update an already running desktop process.
|
|
113
153
|
|
|
114
154
|
## 4. Select configuration and skills
|
|
115
155
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
Configuration precedence is task directory, project root, global file, then embedded defaults. The first complete file wins; files do not merge. Existing configuration is preserved during upgrades. Inspect the actual source:
|
|
156
|
+
Configuration discovery selects the first complete file in this order: task,
|
|
157
|
+
project, global, embedded defaults. Files do not merge. Inspect the selected source:
|
|
119
158
|
|
|
120
159
|
```sh
|
|
121
160
|
flywheel config inspect --cwd /absolute/path/to/repo --json
|
|
@@ -123,9 +162,23 @@ flywheel template flywheel.config.example.json
|
|
|
123
162
|
flywheel template flywheel.profiles.example.json
|
|
124
163
|
```
|
|
125
164
|
|
|
126
|
-
|
|
165
|
+
Upgrades preserve existing configuration, including old model, permission, history,
|
|
166
|
+
and scheduling choices. To adopt the subscription model preset, preview first and
|
|
167
|
+
then apply if it matches the intended accounts and full-access policy:
|
|
127
168
|
|
|
128
|
-
|
|
169
|
+
```sh
|
|
170
|
+
flywheel config migrate --preset subscriptions --cwd /absolute/path/to/repo --json
|
|
171
|
+
flywheel config migrate --preset subscriptions --cwd /absolute/path/to/repo --apply --json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Add `--task-dir` for a task-level override. Migration backs up the selected file and
|
|
175
|
+
preserves unrelated settings. It does not automatically opt an old configuration
|
|
176
|
+
into scoped history or parallel scheduling. To adopt a full installed template, use
|
|
177
|
+
the console's global/project configuration editor, load defaults, review, and save.
|
|
178
|
+
[Configuration](configuration.md) explains precedence, permissions, and migration.
|
|
179
|
+
|
|
180
|
+
The current source bundles eleven skills. They are optional host entry points; the
|
|
181
|
+
CLI and console work independently. Inspect or install project skills with:
|
|
129
182
|
|
|
130
183
|
```sh
|
|
131
184
|
flywheel skills list
|
|
@@ -133,9 +186,10 @@ flywheel skills read flywheel-task
|
|
|
133
186
|
flywheel install-skills --project /absolute/path/to/repo --json
|
|
134
187
|
```
|
|
135
188
|
|
|
136
|
-
Follow the host's
|
|
137
|
-
|
|
138
|
-
|
|
189
|
+
Follow the host's discovery rules. Installer-owned unchanged snapshots can update;
|
|
190
|
+
modified or unowned files are preserved and reported as conflicts. In DSH, use
|
|
191
|
+
`/flywheel-task <goal>` to prepare and launch, `/flywheel-new <goal>` for a proposal,
|
|
192
|
+
and `/flywheel-run <task-path>` for an existing task. Kimi uses the `/skill:` prefix.
|
|
139
193
|
|
|
140
194
|
## 5. Run preflight without inference
|
|
141
195
|
|
|
@@ -146,39 +200,57 @@ flywheel doctor --cwd "$PWD" --json
|
|
|
146
200
|
flywheel doctor --cwd "$PWD" --probe --json
|
|
147
201
|
```
|
|
148
202
|
|
|
149
|
-
Local checks cover configuration, directories,
|
|
150
|
-
|
|
151
|
-
|
|
203
|
+
Local checks cover configuration, directories, commands/versions, and declared
|
|
204
|
+
environment variables. `--probe` initializes DSH SDK sessions and checks accepted
|
|
205
|
+
configuration, directories, permissions, and shutdown. It sends no inference prompt
|
|
206
|
+
and runs no acceptance command. Provider initialization may query catalogs or write
|
|
207
|
+
caches; probe sessions use temporary persistence rather than the user session list.
|
|
152
208
|
|
|
153
|
-
|
|
209
|
+
Codex Pro diagnostics import the pinned API and check its lifecycle/recovery exports
|
|
210
|
+
and local commands. They do not prove model entitlement, a particular saved thread's
|
|
211
|
+
recovery, or effective reasoning effort. Runtime Codex calls separately validate the
|
|
212
|
+
full policy at `thread-ready` before Go acknowledges dispatch. This does not turn a
|
|
213
|
+
no-inference diagnostic into real account validation.
|
|
154
214
|
|
|
155
|
-
|
|
215
|
+
Results are `pass`, `fail`, `warn`, `unknown`, or `skipped`; a fail gives exit code 1.
|
|
216
|
+
A task-specific preflight checks the Spec or persisted policy and only applicable
|
|
217
|
+
bindings. It does not apply a later runtime `--mode` override:
|
|
156
218
|
|
|
157
219
|
```sh
|
|
158
220
|
flywheel doctor --cwd "$PWD" --task-dir "$PWD/docs/my-feature" --probe --json
|
|
159
221
|
```
|
|
160
222
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
The view's optional configuration and troubleshooting section offers “Inspect model configuration,” “Check installation and configuration,” and “Check DSH integration.” Use these for setup, configuration changes, or troubleshooting; they are not buttons that must be pressed for every task. Neither diagnostic performs model inference.
|
|
223
|
+
No preflight creates Flywheel state or worktrees. Recheck from the desktop if its
|
|
224
|
+
PATH/profile/environment differs. Diagnostics are useful after setup or changes;
|
|
225
|
+
they are not a mandatory sequence of buttons for every task.
|
|
166
226
|
|
|
167
227
|
## 6. Prepare a task
|
|
168
228
|
|
|
169
229
|
### Existing repository
|
|
170
230
|
|
|
171
|
-
|
|
231
|
+
In DSH Chat:
|
|
172
232
|
|
|
173
|
-
|
|
233
|
+
```text
|
|
234
|
+
/flywheel-task Fix the identified issue, add regression coverage, and verify the result. mode=auto
|
|
235
|
+
```
|
|
174
236
|
|
|
175
|
-
|
|
237
|
+
The assistant researches the repository, chooses or reuses the task integration
|
|
238
|
+
directory under the effective worktree policy, prepares contracts and baseline
|
|
239
|
+
evidence, then launches within the authorized scope. Use `/flywheel-new` to stop at
|
|
240
|
+
preparation. No initial console form is required.
|
|
176
241
|
|
|
177
|
-
|
|
242
|
+
Keep the **project workspace**, **task execution root**, and **task files directory**
|
|
243
|
+
separate. The project is the stable repository identity; task execution may use a
|
|
244
|
+
linked worktree, with its contracts at `docs/<slug>`. Preparation reports actual
|
|
245
|
+
paths. The engine later manages or registers packet execution directories, and owns
|
|
246
|
+
`state.json`. See [Workflow](workflow.md#2-choose-the-task-execution-directory).
|
|
178
247
|
|
|
179
|
-
|
|
248
|
+
### Disposable first-run example
|
|
180
249
|
|
|
181
|
-
The scaffold
|
|
250
|
+
The packaged scaffold creates a separate Go addition task with an intentionally
|
|
251
|
+
wrong implementation and protected acceptance test. It needs Go 1.27 or later and
|
|
252
|
+
an unused destination. Its contracts have no workflow assessment and therefore use
|
|
253
|
+
Full; a mode flag alone does not qualify them for Quick.
|
|
182
254
|
|
|
183
255
|
```sh
|
|
184
256
|
FLYWHEEL_PACKAGE="$(npm root --global)/@ckanner/flywheel"
|
|
@@ -187,9 +259,12 @@ cd "$HOME/flywheel-demo"
|
|
|
187
259
|
git init -b main
|
|
188
260
|
```
|
|
189
261
|
|
|
190
|
-
For a custom prefix, resolve the package
|
|
262
|
+
For a custom prefix, resolve the package using `npm root --global --prefix
|
|
263
|
+
"$HOME/.local"`. If the CLI is not on PATH, set `FLYWHEEL_BIN` to its absolute path
|
|
264
|
+
when running the scaffold. It writes files and reads templates; it does not call
|
|
265
|
+
models or commit.
|
|
191
266
|
|
|
192
|
-
|
|
267
|
+
Run every acceptance command from the generated packet. The supplied checks are:
|
|
193
268
|
|
|
194
269
|
```sh
|
|
195
270
|
go test ./...
|
|
@@ -198,7 +273,8 @@ go test -coverprofile=coverage.out . &&
|
|
|
198
273
|
awk '$NF != "100.0%" && $NF != "100%" { bad=1 } END { exit bad }'
|
|
199
274
|
```
|
|
200
275
|
|
|
201
|
-
|
|
276
|
+
Initial failures are expected. Record actual results in the Spec, review the frozen
|
|
277
|
+
boundaries, then commit the scaffold and create the task branch:
|
|
202
278
|
|
|
203
279
|
```sh
|
|
204
280
|
git add go.mod sum.go acceptance .gitignore flywheel.config.json docs/add
|
|
@@ -208,11 +284,13 @@ git worktree add -b task/add ../flywheel-demo-add
|
|
|
208
284
|
cd ../flywheel-demo-add
|
|
209
285
|
```
|
|
210
286
|
|
|
211
|
-
This
|
|
287
|
+
This demonstration generates contracts before creating its task worktree. In an
|
|
288
|
+
existing repository, follow the preparation order in [Workflow](workflow.md).
|
|
212
289
|
|
|
213
290
|
## 7. Start, observe, stop, and recover
|
|
214
291
|
|
|
215
|
-
|
|
292
|
+
These commands invoke the configured real backends. Run them from the demo task
|
|
293
|
+
checkout, or substitute your actual task name:
|
|
216
294
|
|
|
217
295
|
```sh
|
|
218
296
|
flywheel config inspect --cwd "$PWD" --task-dir "$PWD/docs/add" --json
|
|
@@ -221,71 +299,99 @@ flywheel control start --cwd "$PWD" --task-dir "$PWD/docs/add"
|
|
|
221
299
|
flywheel control status --cwd "$PWD" --task-dir "$PWD/docs/add"
|
|
222
300
|
```
|
|
223
301
|
|
|
224
|
-
In DSH
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
302
|
+
In DSH, `/flywheel-run <absolute-task-path>` and `/flywheel-status <same-path>` are
|
|
303
|
+
equivalent entry points. Launch/start and read-only status association make the task
|
|
304
|
+
selectable in the console. It reads registered tasks rather than scanning folders;
|
|
305
|
+
known project/execution/file locations are read-only details. One current-session
|
|
306
|
+
task can open automatically; multiple or unassociated tasks require selection.
|
|
229
307
|
|
|
230
|
-
|
|
308
|
+
The UI distinguishes this stage's result from overall delivery. Running state and
|
|
309
|
+
registered discovery refresh automatically. A timeout or disconnect can leave an
|
|
310
|
+
operation unconfirmed: keep its original paths and reconcile that task before
|
|
311
|
+
another mutation. Old snapshots, page closure, or session switching cannot prove
|
|
312
|
+
it stopped. Structured host evidence of rejection before control-process start is
|
|
313
|
+
different from an unknown outcome.
|
|
231
314
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
For a foreground run that pauses before Review, use this instead of background start:
|
|
315
|
+
For a foreground run that pauses before Review, use this **instead of** background
|
|
316
|
+
start:
|
|
235
317
|
|
|
236
318
|
```sh
|
|
237
319
|
flywheel run docs/add --pause-before review
|
|
238
320
|
```
|
|
239
321
|
|
|
240
|
-
`control launch
|
|
322
|
+
`control launch`/`start` do not accept `--pause-before`, which also cannot combine
|
|
323
|
+
with `--only`. Partial-loop commands do not imply whole-task completion; see
|
|
324
|
+
[Partial stages](workflow.md#partial-stages-and-permissions).
|
|
241
325
|
|
|
242
|
-
Inspect
|
|
326
|
+
Inspect and stop with:
|
|
243
327
|
|
|
244
328
|
```sh
|
|
245
329
|
flywheel status docs/add
|
|
246
330
|
tail -n 80 docs/add/orchestrator.log
|
|
247
|
-
git log -5 --oneline
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
Stop with:
|
|
251
|
-
|
|
252
|
-
```sh
|
|
253
331
|
flywheel control stop --cwd "$PWD" --task-dir "$PWD/docs/add"
|
|
254
332
|
```
|
|
255
333
|
|
|
256
|
-
|
|
334
|
+
Resume from the same paths only after reconciling the previous run and addressing
|
|
335
|
+
the actual failure. Keep state, reports, and worktrees. Unknown dispatch, outcome,
|
|
336
|
+
or cleanup cannot be bypassed by switching to fresh history or another backend.
|
|
337
|
+
See [Recovery](session-recovery.md).
|
|
257
338
|
|
|
258
|
-
For the first real run,
|
|
339
|
+
For the first real run, inspect `completed`, requirement coverage, unchanged frozen
|
|
340
|
+
acceptance, independent review, reports, and local Git delivery. Real model identity,
|
|
341
|
+
latency, and usage are separate observations from preflight. PR creation/merge is a
|
|
342
|
+
separately authorized [console operation](flow-console.md#pr-and-merge).
|
|
259
343
|
|
|
260
|
-
## 8. Upgrade
|
|
344
|
+
## 8. Upgrade, troubleshoot, or uninstall
|
|
261
345
|
|
|
262
|
-
|
|
346
|
+
### Upgrade and repair
|
|
263
347
|
|
|
264
|
-
|
|
348
|
+
Stop active tasks and reconcile their state. Preserve configuration/customizations,
|
|
349
|
+
then repeat installation with the original prefix/project/DSH options. Confirm
|
|
350
|
+
`flywheel version`, the installation report, and the desktop plugin version, then
|
|
351
|
+
reload DSH as directed. `flywheel setup --no-global` repairs the installed version.
|
|
265
352
|
|
|
266
|
-
|
|
353
|
+
Run npx installation outside Flywheel's own source checkout so npm does not satisfy
|
|
354
|
+
the request with that local package. If needed, explicitly install the chosen
|
|
355
|
+
published version globally, then run setup from that exact prefix. Existing
|
|
356
|
+
configuration stays in place; inspect higher-priority task files before assuming a
|
|
357
|
+
project/global edit took effect.
|
|
267
358
|
|
|
268
|
-
|
|
359
|
+
### Troubleshooting
|
|
269
360
|
|
|
270
361
|
| Symptom | First check |
|
|
271
362
|
|---|---|
|
|
272
|
-
|
|
|
273
|
-
|
|
|
274
|
-
|
|
|
275
|
-
|
|
|
276
|
-
|
|
|
277
|
-
|
|
|
278
|
-
|
|
|
279
|
-
|
|
|
280
|
-
|
|
|
281
|
-
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
363
|
+
| A command or new layout is missing | Installed CLI/plugin versions, PATH, and explicit `flywheelBinary` overrides |
|
|
364
|
+
| Flywheel is absent from the view bar | Existing conversation, overflow menu, plugin enablement, and host reload |
|
|
365
|
+
| `ok:true`, `ready:false` after install | Specific blockers in `diagnostic.checks` |
|
|
366
|
+
| Global prefix is unwritable | Use a user-owned `--prefix` and its `bin` directory |
|
|
367
|
+
| The desktop profile is rejected | Use the desktop-supplied DSH command, not an independent npm CLI |
|
|
368
|
+
| Terminal works but desktop does not | Managed launcher, tool paths, SDK profile, and `DSH_HOME`; rerun setup after tool changes |
|
|
369
|
+
| Provider is unregistered or unauthorized | The worker's SDK profile and that provider's normal login flow |
|
|
370
|
+
| Model changes have no effect | Effective configuration source and engine restart |
|
|
371
|
+
| A channel rename does not change accounts | Channel is a configuration/accounting label; actual authorization belongs to the backend |
|
|
372
|
+
| Doctor shows unknown or skipped | Read the individual reason; neither means real inference passed |
|
|
373
|
+
| Cost is missing | Usage/cost was not reported; unknown is not zero |
|
|
374
|
+
| Acceptance fails despite exit 0 | Candidate drift, timeout, cancellation, truncation, or cleanup failure |
|
|
375
|
+
| Isolation is unavailable | Recorded execution mode; parallel automatic worktree management fails instead of falling back |
|
|
376
|
+
| Start/stop or cleanup is unconfirmed | Original task status, logs, owned processes, and trusted receipts before retrying |
|
|
377
|
+
| Git delivery fails | Preserved worktree, hooks, and diff; resolve the cause without forced cleanup |
|
|
378
|
+
| Skill or launcher ownership conflicts | Back up the specific customization and compare it; do not rewrite integrity manifests |
|
|
379
|
+
|
|
380
|
+
Install is not one atomic transaction across npm, DSH, and skills. Correct the
|
|
381
|
+
reported cause and retry without deleting unrelated user files. Acceptance commands
|
|
382
|
+
may need additional named variables in `verify.env-allowlist`; do not inject all
|
|
383
|
+
model credentials into tests.
|
|
384
|
+
|
|
385
|
+
### Uninstall
|
|
386
|
+
|
|
387
|
+
Stop and reconcile active tasks, remove the desktop Flywheel plugin through DSH's
|
|
388
|
+
supported plugin manager, then uninstall the global CLI using the same prefix:
|
|
286
389
|
|
|
287
390
|
```sh
|
|
288
391
|
npm uninstall --global @ckanner/flywheel
|
|
289
392
|
```
|
|
290
393
|
|
|
291
|
-
Configuration, task ledgers,
|
|
394
|
+
Configuration, task ledgers, skills, installation records, and worktrees are retained
|
|
395
|
+
for deliberate separate handling. This does not uninstall DSH/Kimi/Codex or remove
|
|
396
|
+
account credentials. Source builds and contribution checks are in
|
|
397
|
+
[Contributing](contributing.md); maintainer publication is in [Releasing](releasing.md).
|