openplanr 2.2640.2 → 2.2640.3
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 +5 -0
- package/dist/cli/commands/runtime-output.d.ts +11 -0
- package/dist/cli/commands/runtime-output.d.ts.map +1 -0
- package/dist/cli/commands/runtime-output.js +26 -0
- package/dist/cli/commands/runtime-output.js.map +1 -0
- package/dist/cli/commands/runtime.d.ts.map +1 -1
- package/dist/cli/commands/runtime.js +30 -17
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +2 -3
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +1 -1
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +23 -54
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-9DLb9EO5.js → index-CaX9EJp4.js} +2 -2
- package/dist/dashboard/assets/{index-9DLb9EO5.js.map → index-CaX9EJp4.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +13 -13
- package/dist/dashboard/index.html +1 -1
- package/dist/services/runtime-change-summary.d.ts +33 -0
- package/dist/services/runtime-change-summary.d.ts.map +1 -0
- package/dist/services/runtime-change-summary.js +88 -0
- package/dist/services/runtime-change-summary.js.map +1 -0
- package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
- package/dist/services/runtime-manager/inventory.js +8 -1
- package/dist/services/runtime-manager/inventory.js.map +1 -1
- package/dist/services/runtime-manager-service.d.ts +6 -0
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +28 -0
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/dist/services/upgrade-offer-service.d.ts.map +1 -1
- package/dist/services/upgrade-offer-service.js +6 -30
- package/dist/services/upgrade-offer-service.js.map +1 -1
- package/dist/services/upgrade-report.d.ts +13 -0
- package/dist/services/upgrade-report.d.ts.map +1 -0
- package/dist/services/upgrade-report.js +90 -0
- package/dist/services/upgrade-report.js.map +1 -0
- package/dist/services/upgrade-service.d.ts +48 -29
- package/dist/services/upgrade-service.d.ts.map +1 -1
- package/dist/services/upgrade-service.js +236 -48
- package/dist/services/upgrade-service.js.map +1 -1
- package/docs/CLI.md +7 -2
- package/docs/CROSS_RUNTIME_SETUP.md +2 -2
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +1 -1
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +8 -8
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +61 -63
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +7 -7
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +61 -63
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +7 -7
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +61 -63
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/package.json +2 -2
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
# Driving an OpenPlanr upgrade
|
|
2
2
|
|
|
3
3
|
`planr doctor` diagnoses; this reference is how to *act* once the tuple has
|
|
4
|
-
drifted. An OpenPlanr install has two
|
|
5
|
-
|
|
6
|
-
`planr
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
them inside the host and confirms the result.
|
|
4
|
+
drifted. An OpenPlanr install has two parts: the npm CLI, and what `planr setup`
|
|
5
|
+
installed into each coding agent from that CLI — the `planr@openplanr-local`
|
|
6
|
+
Claude Code plugin, Codex skills, Cursor rules. `planr upgrade apply` moves the
|
|
7
|
+
npm CLI itself and never changes a coding agent; the upgraded CLI then hands back
|
|
8
|
+
one command per installed agent, and this skill runs them and confirms the result.
|
|
10
9
|
|
|
11
10
|
The cardinal rule: **name the actions, let the engine own the list.** Every
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
come from the CLI.
|
|
11
|
+
command you run comes from the CLI's own output. The skill never carries its own
|
|
12
|
+
copy of those commands — the moment it did, it would drift from the CLI the first
|
|
13
|
+
time the integration changed. The upgraded CLI plans them with the same preview
|
|
14
|
+
`planr runtime update` and `planr setup` apply, so they cannot diverge. A retired
|
|
15
|
+
remote plugin (`openplanr@openplanr`, `planr-pipeline@openplanr`) only ever leaves
|
|
16
|
+
through the `planr setup … --replace-managed` command the list carries; an
|
|
17
|
+
instruction to install one did not come from the CLI.
|
|
19
18
|
|
|
20
19
|
## 1. Decide whether to act
|
|
21
20
|
|
|
@@ -36,7 +35,8 @@ Shape (the fields this skill reads):
|
|
|
36
35
|
"pipeline": { "version": "0.52.1" }
|
|
37
36
|
},
|
|
38
37
|
"legacyPlugins": [],
|
|
39
|
-
"ecosystemSource": "network"
|
|
38
|
+
"ecosystemSource": "network",
|
|
39
|
+
"nextSteps": []
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -44,71 +44,69 @@ Shape (the fields this skill reads):
|
|
|
44
44
|
means Claude Code was not detected or `planr setup` has not installed the
|
|
45
45
|
plugin. `installed.pipeline` is always `null` — the pipeline ships inside the
|
|
46
46
|
CLI, and `bundledPipeline` reports it.
|
|
47
|
-
- `
|
|
48
|
-
the
|
|
47
|
+
- `nextSteps` lists what each coding agent needs to match the installed CLI,
|
|
48
|
+
in the shape step 2 describes.
|
|
49
|
+
- `aligned` or `unknown` with empty `nextSteps` → nothing to drive. Report and
|
|
50
|
+
stop. (`unknown` means the published manifest was unreachable — say so; do not
|
|
51
|
+
guess.)
|
|
49
52
|
- `upgrade-available` or `incompatible` → act. First **record the `installed`
|
|
50
|
-
block as the before state** — the honest diff at the end depends on it.
|
|
53
|
+
block as the before state** — the honest diff at the end depends on it. When
|
|
54
|
+
only `nextSteps` is non-empty, skip to step 3.
|
|
51
55
|
|
|
52
|
-
## 2.
|
|
56
|
+
## 2. Upgrade the CLI and obtain the next steps
|
|
53
57
|
|
|
54
|
-
|
|
55
|
-
operation list, so they always match what `planr setup` would really run. Confirm
|
|
56
|
-
with the user first (this upgrades the npm CLI), then:
|
|
58
|
+
Confirm with the user first (this upgrades the npm CLI), then:
|
|
57
59
|
|
|
58
60
|
```bash
|
|
59
61
|
planr upgrade apply --yes --json
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
On success the output carries the
|
|
64
|
+
On success the output carries `nextSteps`, planned by the newly installed CLI:
|
|
63
65
|
|
|
64
66
|
```json
|
|
65
67
|
{
|
|
66
68
|
"ok": true,
|
|
67
69
|
"cliUpgraded": true,
|
|
70
|
+
"previousVersion": "2.2638.0",
|
|
68
71
|
"installedVersion": "2.2639.1",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
"releaseNotes": [{ "version": "2.2639.1", "entries": ["…"] }],
|
|
73
|
+
"nextSteps": [
|
|
74
|
+
{
|
|
75
|
+
"runtime": "claude-code",
|
|
76
|
+
"host": "Claude Code",
|
|
77
|
+
"command": "<one planr command>",
|
|
78
|
+
"detail": "<what it changes>"
|
|
79
|
+
}
|
|
74
80
|
]
|
|
75
81
|
}
|
|
76
82
|
```
|
|
77
83
|
|
|
78
|
-
The
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- An empty array:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
refuses that removal without the flag): the bundled marketplace was never
|
|
90
|
-
registered on this machine, and setup is the only command that registers it and
|
|
91
|
-
records the installation. In a non-interactive shell it stops with
|
|
92
|
-
`E_CONFIRMATION_REQUIRED`; show the user the preview (the same command with
|
|
93
|
-
`--dry-run`) and rerun it with `--yes` only after they confirm.
|
|
84
|
+
The `command` values above are shown as placeholders on purpose: **run whatever
|
|
85
|
+
the array actually contains, in the order it gives — never a command typed into
|
|
86
|
+
this file.** Other shapes:
|
|
87
|
+
|
|
88
|
+
- An empty array: every installed coding agent already matches the new CLI.
|
|
89
|
+
- `nextStepsError` instead of steps: the upgraded CLI could not be asked. Run
|
|
90
|
+
`planr upgrade status --json` and use its `nextSteps`.
|
|
91
|
+
- A `planr doctor` command: planning that agent's update failed, and `detail`
|
|
92
|
+
says why. Relay it and run `planr doctor --json`.
|
|
93
|
+
|
|
94
|
+
`pluginHalfCommands` repeats the commands for older readers; read `nextSteps`.
|
|
94
95
|
|
|
95
96
|
If `apply` reports `ok: false`, stop and surface its `failure.message`; the CLI
|
|
96
97
|
restores the previous version on a bad install, so report what it says was
|
|
97
|
-
restored rather than continuing to the
|
|
98
|
+
restored rather than continuing to the coding agents.
|
|
98
99
|
|
|
99
|
-
## 3.
|
|
100
|
+
## 3. Run the next steps
|
|
100
101
|
|
|
101
|
-
Run each
|
|
102
|
-
|
|
102
|
+
Run each `command` of `nextSteps` verbatim, top to bottom, with your shell tool.
|
|
103
|
+
Each one refreshes the bundled `openplanr-local` marketplace before it updates the
|
|
104
|
+
plugin, so **do not reorder, drop, merge, or hand-edit a command**. If one fails,
|
|
105
|
+
stop and report the failure and every agent still on the old version — a partial
|
|
106
|
+
upgrade that reports success is the one outcome to avoid.
|
|
103
107
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
now bundles. Without it, the installer reinstalls the cached, stale version and
|
|
107
|
-
the user is told they upgraded when nothing moved. The CLI sorts it to position
|
|
108
|
-
0 for exactly this reason; preserve that order.
|
|
109
|
-
- **No substitutions.** Do not reorder, drop, merge, or hand-edit a command. If
|
|
110
|
-
an entry fails, stop and report the failure and everything still on the stale
|
|
111
|
-
version — a partial upgrade that reports success is the one outcome to avoid.
|
|
108
|
+
Then tell the user to restart each `host` the steps named; a running coding agent
|
|
109
|
+
keeps the old plugin and skills until it restarts.
|
|
112
110
|
|
|
113
111
|
## 4. Verify, then report what actually changed
|
|
114
112
|
|
|
@@ -125,14 +123,14 @@ CLI 2.2638.0 → 2.2639.1 moved
|
|
|
125
123
|
planr@openplanr-local 2.2638.0 → 2.2639.1 moved
|
|
126
124
|
```
|
|
127
125
|
|
|
128
|
-
`planr doctor` adds what `upgrade status` does
|
|
129
|
-
`runtime-claude-duplicate-plugin` warning means a second `planr`
|
|
130
|
-
`planr@openplanr`, installed from the public marketplace) sits
|
|
131
|
-
setup-managed one, and both expose the same `/planr` commands. Its `fix`
|
|
132
|
-
the exact `claude plugin uninstall` command: relay it, and run it only
|
|
133
|
-
user asks — nothing removes a duplicate automatically.
|
|
126
|
+
`nextSteps` should now be empty. `planr doctor` adds what `upgrade status` does
|
|
127
|
+
not judge. A `runtime-claude-duplicate-plugin` warning means a second `planr`
|
|
128
|
+
plugin (usually `planr@openplanr`, installed from the public marketplace) sits
|
|
129
|
+
beside the setup-managed one, and both expose the same `/planr` commands. Its `fix`
|
|
130
|
+
carries the exact `claude plugin uninstall` command: relay it, and run it only
|
|
131
|
+
when the user asks — nothing removes a duplicate automatically.
|
|
134
132
|
|
|
135
133
|
State the outcome from this second reading, never from the commands you ran. If
|
|
136
134
|
a component did not move, say so plainly and name the likely cause (most often a
|
|
137
|
-
|
|
138
|
-
state — earn it with the re-check.
|
|
135
|
+
command that failed or a coding agent that was not restarted). "Upgraded" is a
|
|
136
|
+
claim about the after state — earn it with the re-check.
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
"name": "OpenPlanr"
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
|
-
"version": "2.2640.
|
|
7
|
+
"version": "2.2640.3",
|
|
8
8
|
"description": "Generated local OpenPlanr package."
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "planr",
|
|
13
13
|
"source": "./openplanr",
|
|
14
|
-
"version": "2.2640.
|
|
14
|
+
"version": "2.2640.3",
|
|
15
15
|
"description": "Close the loop from intent to delivery. Plan, design, build, review, and operate from durable context in your repository.",
|
|
16
16
|
"strict": true
|
|
17
17
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": ".codex-plugin/plugin.json",
|
|
11
|
-
"digest": "sha256:
|
|
11
|
+
"digest": "sha256:ea83220e864463636d46980c966cd739ce594e150a36700a554f7fe659132e21"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "skills/artifact/agents/openai.yaml",
|
|
@@ -400,7 +400,7 @@
|
|
|
400
400
|
},
|
|
401
401
|
{
|
|
402
402
|
"path": "skills/design-loop/scripts/runtime/packages/protocol/package.json",
|
|
403
|
-
"digest": "sha256:
|
|
403
|
+
"digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
|
|
404
404
|
},
|
|
405
405
|
{
|
|
406
406
|
"path": "skills/design-loop/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -616,7 +616,7 @@
|
|
|
616
616
|
},
|
|
617
617
|
{
|
|
618
618
|
"path": "skills/design-review/scripts/runtime/packages/protocol/package.json",
|
|
619
|
-
"digest": "sha256:
|
|
619
|
+
"digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
|
|
620
620
|
},
|
|
621
621
|
{
|
|
622
622
|
"path": "skills/design-review/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -832,7 +832,7 @@
|
|
|
832
832
|
},
|
|
833
833
|
{
|
|
834
834
|
"path": "skills/design/scripts/runtime/packages/protocol/package.json",
|
|
835
|
-
"digest": "sha256:
|
|
835
|
+
"digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
|
|
836
836
|
},
|
|
837
837
|
{
|
|
838
838
|
"path": "skills/design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -952,7 +952,7 @@
|
|
|
952
952
|
},
|
|
953
953
|
{
|
|
954
954
|
"path": "skills/doctor/references/upgrade.md",
|
|
955
|
-
"digest": "sha256:
|
|
955
|
+
"digest": "sha256:415456942ec2c3f13a71ba9ea44e07533a7871acf072d677b59d410ab5704ad8"
|
|
956
956
|
},
|
|
957
957
|
{
|
|
958
958
|
"path": "skills/doctor/SKILL.md",
|
|
@@ -1140,7 +1140,7 @@
|
|
|
1140
1140
|
},
|
|
1141
1141
|
{
|
|
1142
1142
|
"path": "skills/plan/scripts/runtime/packages/protocol/package.json",
|
|
1143
|
-
"digest": "sha256:
|
|
1143
|
+
"digest": "sha256:bb969da90f0482f19b3afc21b4b35e4c00efff42c69ec61d9c5c07395e2bfd69"
|
|
1144
1144
|
},
|
|
1145
1145
|
{
|
|
1146
1146
|
"path": "skills/plan/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -1355,5 +1355,5 @@
|
|
|
1355
1355
|
"digest": "sha256:06048f24128098919931db60272e0e14fe51bcbeba4b499db587e3b89d7bb3b9"
|
|
1356
1356
|
}
|
|
1357
1357
|
],
|
|
1358
|
-
"contentDigest": "sha256:
|
|
1358
|
+
"contentDigest": "sha256:d0db0f58a2795daac47409b796c89ff4eb00e30e1e70f83b9b227ba668915775"
|
|
1359
1359
|
}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
# Driving an OpenPlanr upgrade
|
|
2
2
|
|
|
3
3
|
`planr doctor` diagnoses; this reference is how to *act* once the tuple has
|
|
4
|
-
drifted. An OpenPlanr install has two
|
|
5
|
-
|
|
6
|
-
`planr
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
them inside the host and confirms the result.
|
|
4
|
+
drifted. An OpenPlanr install has two parts: the npm CLI, and what `planr setup`
|
|
5
|
+
installed into each coding agent from that CLI — the `planr@openplanr-local`
|
|
6
|
+
Claude Code plugin, Codex skills, Cursor rules. `planr upgrade apply` moves the
|
|
7
|
+
npm CLI itself and never changes a coding agent; the upgraded CLI then hands back
|
|
8
|
+
one command per installed agent, and this skill runs them and confirms the result.
|
|
10
9
|
|
|
11
10
|
The cardinal rule: **name the actions, let the engine own the list.** Every
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
come from the CLI.
|
|
11
|
+
command you run comes from the CLI's own output. The skill never carries its own
|
|
12
|
+
copy of those commands — the moment it did, it would drift from the CLI the first
|
|
13
|
+
time the integration changed. The upgraded CLI plans them with the same preview
|
|
14
|
+
`planr runtime update` and `planr setup` apply, so they cannot diverge. A retired
|
|
15
|
+
remote plugin (`openplanr@openplanr`, `planr-pipeline@openplanr`) only ever leaves
|
|
16
|
+
through the `planr setup … --replace-managed` command the list carries; an
|
|
17
|
+
instruction to install one did not come from the CLI.
|
|
19
18
|
|
|
20
19
|
## 1. Decide whether to act
|
|
21
20
|
|
|
@@ -36,7 +35,8 @@ Shape (the fields this skill reads):
|
|
|
36
35
|
"pipeline": { "version": "0.52.1" }
|
|
37
36
|
},
|
|
38
37
|
"legacyPlugins": [],
|
|
39
|
-
"ecosystemSource": "network"
|
|
38
|
+
"ecosystemSource": "network",
|
|
39
|
+
"nextSteps": []
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -44,71 +44,69 @@ Shape (the fields this skill reads):
|
|
|
44
44
|
means Claude Code was not detected or `planr setup` has not installed the
|
|
45
45
|
plugin. `installed.pipeline` is always `null` — the pipeline ships inside the
|
|
46
46
|
CLI, and `bundledPipeline` reports it.
|
|
47
|
-
- `
|
|
48
|
-
the
|
|
47
|
+
- `nextSteps` lists what each coding agent needs to match the installed CLI,
|
|
48
|
+
in the shape step 2 describes.
|
|
49
|
+
- `aligned` or `unknown` with empty `nextSteps` → nothing to drive. Report and
|
|
50
|
+
stop. (`unknown` means the published manifest was unreachable — say so; do not
|
|
51
|
+
guess.)
|
|
49
52
|
- `upgrade-available` or `incompatible` → act. First **record the `installed`
|
|
50
|
-
block as the before state** — the honest diff at the end depends on it.
|
|
53
|
+
block as the before state** — the honest diff at the end depends on it. When
|
|
54
|
+
only `nextSteps` is non-empty, skip to step 3.
|
|
51
55
|
|
|
52
|
-
## 2.
|
|
56
|
+
## 2. Upgrade the CLI and obtain the next steps
|
|
53
57
|
|
|
54
|
-
|
|
55
|
-
operation list, so they always match what `planr setup` would really run. Confirm
|
|
56
|
-
with the user first (this upgrades the npm CLI), then:
|
|
58
|
+
Confirm with the user first (this upgrades the npm CLI), then:
|
|
57
59
|
|
|
58
60
|
```bash
|
|
59
61
|
planr upgrade apply --yes --json
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
On success the output carries the
|
|
64
|
+
On success the output carries `nextSteps`, planned by the newly installed CLI:
|
|
63
65
|
|
|
64
66
|
```json
|
|
65
67
|
{
|
|
66
68
|
"ok": true,
|
|
67
69
|
"cliUpgraded": true,
|
|
70
|
+
"previousVersion": "2.2638.0",
|
|
68
71
|
"installedVersion": "2.2639.1",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
"releaseNotes": [{ "version": "2.2639.1", "entries": ["…"] }],
|
|
73
|
+
"nextSteps": [
|
|
74
|
+
{
|
|
75
|
+
"runtime": "claude-code",
|
|
76
|
+
"host": "Claude Code",
|
|
77
|
+
"command": "<one planr command>",
|
|
78
|
+
"detail": "<what it changes>"
|
|
79
|
+
}
|
|
74
80
|
]
|
|
75
81
|
}
|
|
76
82
|
```
|
|
77
83
|
|
|
78
|
-
The
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- An empty array:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
refuses that removal without the flag): the bundled marketplace was never
|
|
90
|
-
registered on this machine, and setup is the only command that registers it and
|
|
91
|
-
records the installation. In a non-interactive shell it stops with
|
|
92
|
-
`E_CONFIRMATION_REQUIRED`; show the user the preview (the same command with
|
|
93
|
-
`--dry-run`) and rerun it with `--yes` only after they confirm.
|
|
84
|
+
The `command` values above are shown as placeholders on purpose: **run whatever
|
|
85
|
+
the array actually contains, in the order it gives — never a command typed into
|
|
86
|
+
this file.** Other shapes:
|
|
87
|
+
|
|
88
|
+
- An empty array: every installed coding agent already matches the new CLI.
|
|
89
|
+
- `nextStepsError` instead of steps: the upgraded CLI could not be asked. Run
|
|
90
|
+
`planr upgrade status --json` and use its `nextSteps`.
|
|
91
|
+
- A `planr doctor` command: planning that agent's update failed, and `detail`
|
|
92
|
+
says why. Relay it and run `planr doctor --json`.
|
|
93
|
+
|
|
94
|
+
`pluginHalfCommands` repeats the commands for older readers; read `nextSteps`.
|
|
94
95
|
|
|
95
96
|
If `apply` reports `ok: false`, stop and surface its `failure.message`; the CLI
|
|
96
97
|
restores the previous version on a bad install, so report what it says was
|
|
97
|
-
restored rather than continuing to the
|
|
98
|
+
restored rather than continuing to the coding agents.
|
|
98
99
|
|
|
99
|
-
## 3.
|
|
100
|
+
## 3. Run the next steps
|
|
100
101
|
|
|
101
|
-
Run each
|
|
102
|
-
|
|
102
|
+
Run each `command` of `nextSteps` verbatim, top to bottom, with your shell tool.
|
|
103
|
+
Each one refreshes the bundled `openplanr-local` marketplace before it updates the
|
|
104
|
+
plugin, so **do not reorder, drop, merge, or hand-edit a command**. If one fails,
|
|
105
|
+
stop and report the failure and every agent still on the old version — a partial
|
|
106
|
+
upgrade that reports success is the one outcome to avoid.
|
|
103
107
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
now bundles. Without it, the installer reinstalls the cached, stale version and
|
|
107
|
-
the user is told they upgraded when nothing moved. The CLI sorts it to position
|
|
108
|
-
0 for exactly this reason; preserve that order.
|
|
109
|
-
- **No substitutions.** Do not reorder, drop, merge, or hand-edit a command. If
|
|
110
|
-
an entry fails, stop and report the failure and everything still on the stale
|
|
111
|
-
version — a partial upgrade that reports success is the one outcome to avoid.
|
|
108
|
+
Then tell the user to restart each `host` the steps named; a running coding agent
|
|
109
|
+
keeps the old plugin and skills until it restarts.
|
|
112
110
|
|
|
113
111
|
## 4. Verify, then report what actually changed
|
|
114
112
|
|
|
@@ -125,14 +123,14 @@ CLI 2.2638.0 → 2.2639.1 moved
|
|
|
125
123
|
planr@openplanr-local 2.2638.0 → 2.2639.1 moved
|
|
126
124
|
```
|
|
127
125
|
|
|
128
|
-
`planr doctor` adds what `upgrade status` does
|
|
129
|
-
`runtime-claude-duplicate-plugin` warning means a second `planr`
|
|
130
|
-
`planr@openplanr`, installed from the public marketplace) sits
|
|
131
|
-
setup-managed one, and both expose the same `/planr` commands. Its `fix`
|
|
132
|
-
the exact `claude plugin uninstall` command: relay it, and run it only
|
|
133
|
-
user asks — nothing removes a duplicate automatically.
|
|
126
|
+
`nextSteps` should now be empty. `planr doctor` adds what `upgrade status` does
|
|
127
|
+
not judge. A `runtime-claude-duplicate-plugin` warning means a second `planr`
|
|
128
|
+
plugin (usually `planr@openplanr`, installed from the public marketplace) sits
|
|
129
|
+
beside the setup-managed one, and both expose the same `/planr` commands. Its `fix`
|
|
130
|
+
carries the exact `claude plugin uninstall` command: relay it, and run it only
|
|
131
|
+
when the user asks — nothing removes a duplicate automatically.
|
|
134
132
|
|
|
135
133
|
State the outcome from this second reading, never from the commands you ran. If
|
|
136
134
|
a component did not move, say so plainly and name the likely cause (most often a
|
|
137
|
-
|
|
138
|
-
state — earn it with the re-check.
|
|
135
|
+
command that failed or a coding agent that was not restarted). "Upgraded" is a
|
|
136
|
+
claim about the after state — earn it with the re-check.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openplanr",
|
|
3
|
-
"version": "2.2640.
|
|
3
|
+
"version": "2.2640.3",
|
|
4
4
|
"description": "Deterministic OpenPlanr utilities for planning storage, validation, rendering, setup, diagnostics, and GitHub/Linear synchronization",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli/index.js",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"zod": "^4.3.6"
|
|
115
115
|
},
|
|
116
116
|
"optionalDependencies": {
|
|
117
|
-
"planr-pipeline": "0.55.
|
|
117
|
+
"planr-pipeline": "0.55.4"
|
|
118
118
|
},
|
|
119
119
|
"devDependencies": {
|
|
120
120
|
"@biomejs/biome": "^2.4.9",
|