create-pmos 0.229.0 → 0.230.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/install.ps1 +41 -4
- package/install.sh +26 -4
- package/package.json +1 -1
- package/payload/KIT-VERSION +1 -1
- package/payload/planning/evals/eval-calibration.md +1 -1
- package/payload/planning/okrs/health-budgets.md +1 -1
- package/payload/state/discoveries.md +1 -1
- package/workspace/package-lock.json +2 -2
- package/workspace/package.json +1 -1
package/install.ps1
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
# 1. Node.js latest LTS from nodejs.org, into %LOCALAPPDATA%\PMOS\node
|
|
7
7
|
# 2. git the official Portable Git, into %LOCALAPPDATA%\PMOS\git (Claude Code needs its bash)
|
|
8
8
|
# 3. Claude Code its own installer, claude.ai/install.ps1
|
|
9
|
-
# 4. the PMOS
|
|
10
|
-
# 5. the PMOS
|
|
9
|
+
# 4. the newest PMOS release that npm can download (a release a few minutes old may not download yet)
|
|
10
|
+
# 5. the PMOS kit in %USERPROFILE%\PMOS (npx create-pmos)
|
|
11
|
+
# 6. the PMOS app (npx create-pmos workspace), which opens in the browser
|
|
11
12
|
# Every step checks first and skips what is already there, so running the line again is safe.
|
|
12
13
|
#
|
|
13
14
|
# Settings (environment variables):
|
|
@@ -23,6 +24,7 @@ $ProgressPreference = 'SilentlyContinue' # Invoke-WebRequest is many times slo
|
|
|
23
24
|
$PmosHome = Join-Path $env:LOCALAPPDATA 'PMOS'
|
|
24
25
|
$PmosDir = if ($env:PMOS_DIR) { $env:PMOS_DIR } else { Join-Path $env:USERPROFILE 'PMOS' }
|
|
25
26
|
$PmosPkg = if ($env:PMOS_PKG) { $env:PMOS_PKG } else { 'create-pmos@latest' }
|
|
27
|
+
$PmosPkgGiven = [bool]$env:PMOS_PKG
|
|
26
28
|
$NodeMin = 18
|
|
27
29
|
|
|
28
30
|
function Say($m) { Write-Host "==> $m" -ForegroundColor Cyan }
|
|
@@ -147,7 +149,42 @@ if ($env:PMOS_SKIP_CLAUDE -eq '1') {
|
|
|
147
149
|
else { Fail 'Claude Code did not install.' 'run: irm https://claude.ai/install.ps1 | iex then paste the line again' }
|
|
148
150
|
}
|
|
149
151
|
|
|
150
|
-
# --- 4. The PMOS
|
|
152
|
+
# --- 4. The PMOS release ---
|
|
153
|
+
# For a few minutes after a release, npm can name it as the newest while its download servers do not
|
|
154
|
+
# have it yet ("No matching version found"). Ask for the newest release first and step back to the ones
|
|
155
|
+
# before it until one downloads, then use that same release for the kit and for the app.
|
|
156
|
+
function Get-PmosRelease($spec) {
|
|
157
|
+
# npm writes its warnings to stderr; with 'Stop', Windows PowerShell would turn them into a thrown error.
|
|
158
|
+
$old = $ErrorActionPreference; $ErrorActionPreference = 'Continue'
|
|
159
|
+
try { $out = (& npx.cmd -y -p $spec create-pmos --version 2>$null) -join "`n"; $code = $LASTEXITCODE }
|
|
160
|
+
catch { $out = ''; $code = 1 }
|
|
161
|
+
finally { $ErrorActionPreference = $old }
|
|
162
|
+
if ($code -eq 0 -and $out -match '(?m)^create-pmos (\d+\.\d+\.\d+)') { return $Matches[1] }
|
|
163
|
+
return $null
|
|
164
|
+
}
|
|
165
|
+
if (-not $PmosPkgGiven) {
|
|
166
|
+
Say 'Finding the newest PMOS release'
|
|
167
|
+
# The three newest published releases, newest first (node reads npm's JSON; it is installed by now).
|
|
168
|
+
$older = ''
|
|
169
|
+
$old = $ErrorActionPreference; $ErrorActionPreference = 'Continue'
|
|
170
|
+
try {
|
|
171
|
+
$json = (& npm.cmd view create-pmos versions --json 2>$null) -join "`n"
|
|
172
|
+
$older = ($json | & node -e "let s='';process.stdin.on('data',(d)=>{s+=d}).on('end',()=>{try{console.log([].concat(JSON.parse(s.replace(/^\uFEFF/,''))).slice(-3).reverse().join(' '))}catch{}})") -join ' '
|
|
173
|
+
} catch { $older = '' }
|
|
174
|
+
finally { $ErrorActionPreference = $old }
|
|
175
|
+
$tries = @('latest') + @($older -split ' ' | Where-Object { $_ })
|
|
176
|
+
$picked = $null
|
|
177
|
+
foreach ($v in $tries) {
|
|
178
|
+
$picked = Get-PmosRelease "create-pmos@$v"
|
|
179
|
+
if ($picked) { break }
|
|
180
|
+
Write-Host " create-pmos@$v does not download yet; trying the release before it"
|
|
181
|
+
}
|
|
182
|
+
if (-not $picked) { Fail 'Could not download PMOS from npm.' 'check the internet connection, then paste the line again' }
|
|
183
|
+
$PmosPkg = "create-pmos@$picked"
|
|
184
|
+
Ok "PMOS $picked"
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
# --- 5. The PMOS folder and kit ---
|
|
151
188
|
Say "Setting up the PMOS folder: $PmosDir"
|
|
152
189
|
New-Item -ItemType Directory -Force -Path $PmosDir | Out-Null
|
|
153
190
|
if (-not (Test-Path (Join-Path $PmosDir '.git'))) {
|
|
@@ -162,7 +199,7 @@ if (Test-Path (Join-Path $PmosDir 'pmos\AGENTS.md')) {
|
|
|
162
199
|
Ok 'PMOS kit added'
|
|
163
200
|
}
|
|
164
201
|
|
|
165
|
-
# ---
|
|
202
|
+
# --- 6. The PMOS app ---
|
|
166
203
|
Say 'Starting the PMOS app'
|
|
167
204
|
& npx.cmd -y -p $PmosPkg create-pmos workspace $PmosDir
|
|
168
205
|
if ($LASTEXITCODE -ne 0) { Fail 'The PMOS app did not start.' 'run: pmos doctor and send what it prints to your PMOS contact' }
|
package/install.sh
CHANGED
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
# 1. Node.js (latest LTS from nodejs.org, into ~/.pmos/node; no Homebrew, no admin)
|
|
8
8
|
# 2. git (macOS: Apple's Command Line Tools, one system dialog; Linux: the package manager)
|
|
9
9
|
# 3. Claude Code (its own installer, claude.ai/install.sh)
|
|
10
|
-
# 4. the PMOS
|
|
11
|
-
# 5. the PMOS
|
|
10
|
+
# 4. the newest PMOS release that npm can download (a release a few minutes old may not download yet)
|
|
11
|
+
# 5. the PMOS kit in ~/PMOS (npx create-pmos)
|
|
12
|
+
# 6. the PMOS app (npx create-pmos workspace), which opens in the browser
|
|
12
13
|
# Every step checks first and skips what is already there, so running the line again is safe.
|
|
13
14
|
#
|
|
14
15
|
# Settings (environment variables):
|
|
@@ -20,6 +21,7 @@ set -euo pipefail
|
|
|
20
21
|
|
|
21
22
|
PMOS_HOME="${PMOS_HOME:-$HOME/.pmos}"
|
|
22
23
|
PMOS_DIR="${PMOS_DIR:-$HOME/PMOS}"
|
|
24
|
+
PMOS_PKG_GIVEN="${PMOS_PKG:-}"
|
|
23
25
|
PMOS_PKG="${PMOS_PKG:-create-pmos@latest}"
|
|
24
26
|
NODE_MIN=18
|
|
25
27
|
MARK="# added by PMOS setup"
|
|
@@ -161,7 +163,27 @@ else
|
|
|
161
163
|
have claude && ok "Claude Code installed" || fail "Claude Code installed, but the claude command is not found." "open a new Terminal window and paste the line again"
|
|
162
164
|
fi
|
|
163
165
|
|
|
164
|
-
# ── 4. The PMOS
|
|
166
|
+
# ── 4. The PMOS release ─────────────────────────────────────────────────────────────────────
|
|
167
|
+
# For a few minutes after a release, npm can name it as the newest while its download servers do not
|
|
168
|
+
# have it yet ("No matching version found"). Ask for the newest release first and step back to the ones
|
|
169
|
+
# before it until one downloads, then use that same release for the kit and for the app.
|
|
170
|
+
if [ -z "$PMOS_PKG_GIVEN" ]; then
|
|
171
|
+
say "Finding the newest PMOS release"
|
|
172
|
+
older="$(npm view create-pmos versions --json 2>/dev/null \
|
|
173
|
+
| node -e 'let s="";process.stdin.on("data",(d)=>{s+=d}).on("end",()=>{try{console.log([].concat(JSON.parse(s)).slice(-3).reverse().join(" "))}catch{}})' || true)"
|
|
174
|
+
picked=""
|
|
175
|
+
for v in latest $older; do
|
|
176
|
+
out="$(npx -y -p "create-pmos@$v" create-pmos --version 2>/dev/null || true)"
|
|
177
|
+
rel="$(printf '%s\n' "$out" | sed -n '/^create-pmos [0-9]/{s/^create-pmos //p;q;}')"
|
|
178
|
+
if [ -n "$rel" ]; then picked="$rel"; break; fi
|
|
179
|
+
echo " create-pmos@$v does not download yet; trying the release before it"
|
|
180
|
+
done
|
|
181
|
+
[ -n "$picked" ] || fail "Could not download PMOS from npm." "check the internet connection, then paste the line again"
|
|
182
|
+
PMOS_PKG="create-pmos@$picked"
|
|
183
|
+
ok "PMOS $picked"
|
|
184
|
+
fi
|
|
185
|
+
|
|
186
|
+
# ── 5. The PMOS folder and kit ──────────────────────────────────────────────────────────────
|
|
165
187
|
say "Setting up the PMOS folder: $PMOS_DIR"
|
|
166
188
|
mkdir -p "$PMOS_DIR"
|
|
167
189
|
if [ ! -d "$PMOS_DIR/.git" ] && ! git -C "$PMOS_DIR" rev-parse --git-dir >/dev/null 2>&1; then
|
|
@@ -175,7 +197,7 @@ else
|
|
|
175
197
|
ok "PMOS kit added"
|
|
176
198
|
fi
|
|
177
199
|
|
|
178
|
-
# ──
|
|
200
|
+
# ── 6. The PMOS app ─────────────────────────────────────────────────────────────────────────
|
|
179
201
|
say "Starting the PMOS app"
|
|
180
202
|
npx -y -p "$PMOS_PKG" create-pmos workspace "$PMOS_DIR" || fail "The PMOS app did not start." "run: pmos doctor, and send what it prints to your PMOS contact"
|
|
181
203
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pmos",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.230.0",
|
|
4
4
|
"description": "Scaffold the PMOS portable kit — run the PMOS product-management workflow (initiative → lane-fit spec → contract → build → three gates, with work-type lanes for features, research, maintenance, incidents, and content) entirely inside your own repo, with all state as git-versioned files. Includes `workflow-sweep`, which audits the state every board derives from and separates real defects from work you simply have not done. `create-pmos workspace` also installs + launches the local Terminal Workspace GUI. No database, no network, no telemetry.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
package/payload/KIT-VERSION
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
type: Reference
|
|
3
3
|
title: "Eval calibration log"
|
|
4
4
|
description: "Append-only record of every PM override of an evaluator verdict."
|
|
5
|
-
generated: {by: process:create-pmos, at: "2026-10-14T07:
|
|
5
|
+
generated: {by: process:create-pmos, at: "2026-10-14T07:57:03Z"}
|
|
6
6
|
status: stable
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
type: Reference
|
|
3
3
|
title: "Health budgets"
|
|
4
4
|
description: "Closed registry of health-budget anchors (D59), edited only by the PM."
|
|
5
|
-
generated: {by: process:create-pmos, at: "2026-10-14T07:
|
|
5
|
+
generated: {by: process:create-pmos, at: "2026-10-14T07:57:03Z"}
|
|
6
6
|
status: stable
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
type: Reference
|
|
3
3
|
title: "Discoveries and friction log"
|
|
4
4
|
description: "Append-only record of what runs discovered and where the process rubbed."
|
|
5
|
-
generated: {by: process:create-pmos, at: "2026-10-14T07:
|
|
5
|
+
generated: {by: process:create-pmos, at: "2026-10-14T07:57:03Z"}
|
|
6
6
|
status: stable
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmos-workspace",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.230.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pmos-workspace",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.230.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@xterm/addon-fit": "^0.11.0",
|
package/workspace/package.json
CHANGED