@mutmutco/pi-plugin 4.6.31 → 4.6.33
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/package.json
CHANGED
package/skills/board/SKILL.md
CHANGED
|
@@ -13,17 +13,23 @@ permission to take anything.
|
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
mkdir -p .jerv/tmp
|
|
16
|
-
mmi-cli oracle board read --json --out .jerv/tmp/board.json
|
|
16
|
+
mmi-cli oracle board read --json --flat --out .jerv/tmp/board.json
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
One call;
|
|
20
|
-
|
|
19
|
+
One call; `--flat` gives one array of rows to iterate. A routine read already excludes Done and closed
|
|
20
|
+
items, so no status post-filter is needed. The detailed form (`--json` without `--flat`) carries `viewer`,
|
|
21
|
+
`repo` and the project title; use its `primary` for this repo and `secondary` for other repos on the
|
|
22
|
+
Project. Without `--flat`, `board read --json` returns an object
|
|
21
23
|
`{project, viewer, repo, primary, secondary, warnings, partial}` whose `primary` and `secondary` are bucket
|
|
22
24
|
objects `{userOwned, claimable, taken, unownedInFlight}` of item arrays (no top-level `items` array), so filter
|
|
23
|
-
a bucket (e.g. `report.primary.claimable`) or pass `--json --flat`, never `(j.items||j).filter`.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
a bucket (e.g. `report.primary.claimable`) or pass `--json --flat`, never `(j.items||j).filter`. Never sniff
|
|
26
|
+
for the list (`j.items ?? j.rows ?? j`, `Object.values`, any generic "find the list" wrapper): it throws
|
|
27
|
+
`items is not iterable` before any row is read. For a number|status|claim|title projection across non-Done
|
|
28
|
+
rows, run `mmi-cli oracle board read --json --flat --out .jerv/tmp/board.json` and filter that array locally.
|
|
29
|
+
`--flat` rows are `{ref,number,title,status,assignees,labels,bucket,claim,openPullRequests}` (`claim` is the
|
|
30
|
+
parsed mmi-claim evidence object, null when unclaimed; `openPullRequests` lists the OPEN PRs whose
|
|
31
|
+
closing-issue body links name the item — on the full JSON object that list lives at `report.pullRequests`,
|
|
32
|
+
never `openPullRequests`). Partial reads
|
|
27
33
|
exit nonzero; `--allow-partial` only when the dev accepts an incomplete board. The CLI partitions rows into
|
|
28
34
|
**Yours**, **Free to claim** and **Taken**; stale stamps (4 hours without work) hold nothing. Recovery
|
|
29
35
|
moves: a zero-byte or empty `.jerv/tmp/*.json` (`Unexpected end of JSON input`) means a shell-redirected
|
|
@@ -33,7 +39,7 @@ item is `mmi-cli oracle board move <status> <ref>`, never a hand-written `gh api
|
|
|
33
39
|
lookup. Partition rules,
|
|
34
40
|
stamp details and `--out` rationale: [reference.md](reference.md).
|
|
35
41
|
|
|
36
|
-
**Under the App pool, never type raw `gh` for a read** (`gh issue list/view --jq`, `gh run list --event`/`--jq`, `gh run view --jq`, `gh api -q` all bounce). Use `MMI_ACTOR=app mmi-cli devops read issue view <n> --repo <owner/repo> --json <fields>` (or `issue list`, `pr view`, `run view`, `run list --event <event>`, or `MMI_ACTOR=app mmi-cli devops api get "repos/<owner>/<repo>/actions/runs?event=<event>&per_page=<n>"`); `--jq '<expr>'` on that typed read filters locally. A single issue or PR item (`repos/<owner>/<repo>/issues/<n>` and `pulls/<n>`) has no `devops api get` route — `MMI_ACTOR=app mmi-cli devops read issue view <n> --repo <owner>/<repo> --json <fields>` (and `pr view`) is the only read. Those typed reads take **one** number per call, exactly like native gh: a second number is refused as `too many arguments`, so read several issues by repeating the typed read once per number (one `--jq` each, joined `&&`). Filter in a pipe or save output (
|
|
42
|
+
**Under the App pool, never type raw `gh` for a read** (`gh issue list/view --jq`, `gh run list --event`/`--jq`, `gh run view --jq`, `gh api -q` all bounce). Use `MMI_ACTOR=app mmi-cli devops read issue view <n> --repo <owner/repo> --json <fields>` (or `issue list`, `pr view`, `run view`, `run list --event <event>`, or `MMI_ACTOR=app mmi-cli devops api get "repos/<owner>/<repo>/actions/runs?event=<event>&per_page=<n>"`); `--jq '<expr>'` on that typed read filters locally. A single issue or PR item (`repos/<owner>/<repo>/issues/<n>` and `pulls/<n>`) has no `devops api get` route — `MMI_ACTOR=app mmi-cli devops read issue view <n> --repo <owner>/<repo> --json <fields>` (and `pr view`) is the only read. Those typed reads take **one** number per call, exactly like native gh: a second number is refused as `too many arguments`, so read several issues by repeating the typed read once per number (one `--jq` each, joined `&&`). Filter in a pipe or save output (`--out`, or `>`; never `2>&1` into a JSON parser) under this worktree's `.jerv/tmp/` (`mkdir -p .jerv/tmp` first), never `../` or a sibling path: the workspace output guard refuses those. Body edits are read-then-edit: `MMI_ACTOR=app mmi-cli devops read issue view <n> --repo <owner/repo> --json body > .jerv/tmp/issue-body.json`, append or filter the JSON locally (`node -e`; the typed read's own `--jq` also filters locally), then write back with `mmi-cli oracle issue edit <ref> --body-file .jerv/tmp/issue-body.md`. When `node -e` reads saved JSON, pass an absolute path or use `JSON.parse(require('fs').readFileSync(process.argv[1],'utf8'))`: `require()` of a relative path (e.g. `tmp\board.json` from `cygpath -w`) throws MODULE_NOT_FOUND.
|
|
37
43
|
|
|
38
44
|
## Step 2 — render it
|
|
39
45
|
|
|
@@ -15,7 +15,10 @@ the gate again.
|
|
|
15
15
|
Prefer `--out` for a shell-independent UTF-8 receipt. Windows PowerShell 5.1's `>` writes
|
|
16
16
|
UTF-16LE with a BOM (#5802); Bash redirects preserve the CLI's UTF-8 output.
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
The canonical read is `mmi-cli oracle board read --json --flat --out .jerv/tmp/board.json`: one array of
|
|
19
|
+
rows to iterate. A routine read already excludes Done and closed items, so no status post-filter is needed.
|
|
20
|
+
|
|
21
|
+
One call. The detailed form (`--json` without `--flat`) carries `viewer`, `repo` and the project title — do not spend extra calls on
|
|
19
22
|
`gh api user` or `gh repo view`. Use `primary` for this repo and `secondary` for other repos on the same
|
|
20
23
|
Project. Without `--flat`, `board read --json` returns an object
|
|
21
24
|
`{project, viewer, repo, primary, secondary, warnings, partial}` whose `primary` and `secondary` are bucket
|
|
@@ -55,6 +55,8 @@ mmi-cli devops bootstrap apply "$OWNER/$REPO" --class deployable \
|
|
|
55
55
|
|
|
56
56
|
`tenant-container` repos need a `docker-compose.yml` and Dockerfile building from the shipped source archive (no prebuilt `dist/`); bootstrap seeds both from `skills/bootstrap/seeds/`. The seeded compose is fileless: label `mmi.runtime-env: "true"`, no `env_file`, loopback-only port; deploy injects the stage's vault values (`DEPLOY#<stage>.noEnvFile: true`), so the app reads plain env vars, never self-loads SSM, never ships a `.env`. For an MM-Work module or non-suite web-app with OAuth META, read [reference.md](reference.md) before the first CI/deploy or OAuth provisioning.
|
|
57
57
|
|
|
58
|
+
`bootstrap apply --execute` also asks Jerv-Hub for this repo's coding-agent memory bank, by filing one `bank-request: coding-agent::<RepoName>` issue (label `bank-request`) there; if it reports that step SKIPPED with a manual next step, the MMI App could not file it — file that issue by hand at https://github.com/mutmutco/Jerv-Hub/issues/new and carry on.
|
|
59
|
+
|
|
58
60
|
**Stage port block:** `tenant-container` and `solo-container` need Hub registry `portRange` (`bootstrap verify` fails without it). `bootstrap apply --execute` assigns it; for older META run `mmi-cli stage port-range <Repo>` (idempotent).
|
|
59
61
|
|
|
60
62
|
## Step 7 — org-managed .gitignore block
|