@mutmutco/codex-plugin 4.3.2 → 4.3.4

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mmi",
3
- "version": "4.3.2",
3
+ "version": "4.3.4",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.3.2",
3
+ "version": "4.3.4",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -525,8 +525,29 @@ For `tenant-container` repos, publish the GitHub Release and dispatch the centra
525
525
  gh release create "vX.Y.0" --target main --generate-notes --latest
526
526
  gh workflow run tenant-deploy.yml --repo mutmutco/MMI-Hub \
527
527
  -f slug={slug} -f repo={owner}/{repo} -f ref=main -f stage=main
528
- gh run watch "$(gh run list --workflow tenant-deploy.yml --limit 1 --json databaseId -q '.[0].databaseId')" \
529
- --exit-status # the central prod-deploy run — run this in the BACKGROUND (Bash run_in_background)
528
+ ```
529
+
530
+ On PowerShell, read the run as a structured receipt and filter it natively; do not nest a
531
+ `gh run list` query inside `gh run watch`:
532
+ ```powershell
533
+ $runs = gh run list --workflow tenant-deploy.yml --limit 10 --json databaseId,createdAt,url,status,conclusion | ConvertFrom-Json
534
+ $run = $runs |
535
+ Where-Object { $_.databaseId -and $_.createdAt } |
536
+ Sort-Object { [DateTimeOffset]$_.createdAt } -Descending |
537
+ Select-Object -First 1
538
+ if (-not $run) { throw 'tenant-deploy workflow run was not found' }
539
+ $run | Select-Object databaseId,createdAt,url,status,conclusion | ConvertTo-Json -Compress
540
+ # Run this in the BACKGROUND (PowerShell Start-Job / task runner).
541
+ gh run watch $run.databaseId --exit-status
542
+ ```
543
+
544
+ When several run receipts need collecting, assign the loop output before serializing it; a top-level
545
+ `foreach (...) { ... } | ConvertTo-Json` is a PowerShell parser trap:
546
+ ```powershell
547
+ $out = foreach ($run in $runs) {
548
+ gh run view $run.databaseId --json databaseId,url,status,conclusion,createdAt | ConvertFrom-Json
549
+ }
550
+ $out | ConvertTo-Json -Compress
530
551
  ```
531
552
 
532
553
  For `hub-serverless` (MMI-Hub), publish the GitHub Release but do **not** dispatch `tenant-deploy.yml`:
@@ -731,6 +752,12 @@ gh api repos/{owner}/{repo}/releases/latest --jq '{tagName:.tag_name,targetCommi
731
752
  Require its `tagName` to equal the expected `$TAG`; a mismatch means Latest does not identify this
732
753
  release and is unverified.
733
754
 
755
+ **`gh release view` has no `isLatest` field (#6019).** Never request Latest status through
756
+ `gh release view`: the field is not in its JSON schema, so gh rejects the whole read and lists its
757
+ supported fields — the check errors instead of answering, and Latest stays unverified. This bounded
758
+ read is the supported Latest probe; `gh release list --json <fields>,isLatest` is the supported form
759
+ only when a list receipt is genuinely the right shape.
760
+
734
761
  Collect the backgrounded prod-deploy watch from Step 4 (it has typically finished by now). Confirm prod is
735
762
  healthy (the central deploy workflow smoke step / a health check); **red** → report the failure prominently and flag
736
763
  that the release shipped on a failed deploy (re-run just the deploy — `main` is already correct).
@@ -750,9 +777,17 @@ verify`: use their own release-workflow evidence and the publish-visibility cont
750
777
  Hub releases always carry a distribution bump (the Step 1b fold), so the **publish workflow**
751
778
  (`publish.yml`) ships every registry-declared public npm artifact on the GitHub Release from Step 4 —
752
779
  don't publish by hand.
753
- Watch it, then confirm npm caught up:
754
- ```bash
755
- gh run watch "$(gh run list --workflow publish.yml --event release --limit 1 --json databaseId -q '.[0].databaseId')" --exit-status
780
+ Watch the release-triggered `publish.yml` receipt with the same structured PowerShell probe above
781
+ (`--workflow publish.yml --event release`), then confirm npm caught up:
782
+ ```powershell
783
+ $runs = gh run list --workflow publish.yml --event release --limit 10 --json databaseId,createdAt,url,status,conclusion | ConvertFrom-Json
784
+ $run = $runs |
785
+ Where-Object { $_.databaseId -and $_.createdAt } |
786
+ Sort-Object { [DateTimeOffset]$_.createdAt } -Descending |
787
+ Select-Object -First 1
788
+ if (-not $run) { throw 'release-triggered publish workflow run was not found' }
789
+ $run | Select-Object databaseId,createdAt,url,status,conclusion | ConvertTo-Json -Compress
790
+ gh run watch $run.databaseId --exit-status
756
791
  node scripts/release-distribution.mjs verify "X.Y.0" # bare semver — asserts registry versions, BOM identities, and published npm artifacts
757
792
  ```
758
793
  **verify takes bare semver (#5379).** Pass `X.Y.Z`, not the git-tag form `vX.Y.Z`. Checkout still
@@ -86,6 +86,15 @@ mmi-cli vault secrets rm SCRAPER_API_KEY
86
86
  **Never** pass a value as an argument (`secrets set KEY thevalue` is wrong — there is no value arg). The
87
87
  confirmation prints the **name and tier only**, never the value.
88
88
 
89
+ **Windows: a multiline wrapped command must be file-backed (#6048).** `cmd.exe` truncates at the first
90
+ newline, so an inline `node -e "<multiline script>"` after `--` reaches the child truncated and fails
91
+ before your code runs. Write the script to a **project-local ignored file** (e.g. `tmp/fetch-models.mjs`
92
+ — git-ignored, never tracked) and wrap the file instead; the key is still injected into the child's env:
93
+
94
+ ```bash
95
+ mmi-cli vault secrets use GEMINI_API_KEY -- node tmp/fetch-models.mjs
96
+ ```
97
+
89
98
  ## Rotation checklist
90
99
 
91
100
  Before rotating, enumerate every copy of the key so no tier stays stale: