@wipcomputer/wip-ai-devops-toolbox 1.9.33 → 1.9.35
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 +34 -0
- package/SKILL.md +1 -1
- package/package.json +1 -1
- package/scripts/deploy-public.sh +42 -2
- package/tools/deploy-public/package.json +1 -1
- package/tools/post-merge-rename/package.json +1 -1
- package/tools/wip-branch-guard/guard.mjs +26 -6
- package/tools/wip-branch-guard/package.json +1 -1
- package/tools/wip-file-guard/package.json +1 -1
- package/tools/wip-license-guard/package.json +1 -1
- package/tools/wip-license-hook/package.json +1 -1
- package/tools/wip-readme-format/package.json +1 -1
- package/tools/wip-release/core.mjs +6 -10
- package/tools/wip-release/package.json +1 -1
- package/tools/wip-repo-init/package.json +1 -1
- package/tools/wip-repo-permissions-hook/package.json +1 -1
- package/tools/wip-repos/package.json +1 -1
- package/tools/wip-universal-installer/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -31,6 +31,40 @@
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
|
|
35
|
+
## 1.9.35 (2026-03-16)
|
|
36
|
+
|
|
37
|
+
# GitHub Packages publish from public repo
|
|
38
|
+
|
|
39
|
+
**Date:** 2026-03-16
|
|
40
|
+
**Closes:** #193
|
|
41
|
+
|
|
42
|
+
## What changed
|
|
43
|
+
|
|
44
|
+
`deploy-public.sh` now publishes to GitHub Packages from the public repo clone after the npm publish step. Previously, GitHub Packages were only published from the private repo during `wip-release`, so they showed on the private repo's Packages tab. Users couldn't see them.
|
|
45
|
+
|
|
46
|
+
Now packages show on the public repo's Packages tab where users expect to find them. Uses `gh auth token` for authentication (already available from the gh CLI).
|
|
47
|
+
|
|
48
|
+
## Why
|
|
49
|
+
|
|
50
|
+
The Packages tab on public repos was empty. Users visiting wipcomputer/wip-ldm-os or wipcomputer/wip-ai-devops-toolbox saw no packages even though they were published. The packages existed but were linked to the private repo.
|
|
51
|
+
|
|
52
|
+
## 1.9.34 (2026-03-16)
|
|
53
|
+
|
|
54
|
+
# GitHub Packages publish from public repo
|
|
55
|
+
|
|
56
|
+
**Date:** 2026-03-16
|
|
57
|
+
**Closes:** #193
|
|
58
|
+
|
|
59
|
+
## What changed
|
|
60
|
+
|
|
61
|
+
`deploy-public.sh` now publishes to GitHub Packages from the public repo clone after the npm publish step. Previously, GitHub Packages were only published from the private repo during `wip-release`, so they showed on the private repo's Packages tab. Users couldn't see them.
|
|
62
|
+
|
|
63
|
+
Now packages show on the public repo's Packages tab where users expect to find them. Uses `gh auth token` for authentication (already available from the gh CLI).
|
|
64
|
+
|
|
65
|
+
## Why
|
|
66
|
+
|
|
67
|
+
The Packages tab on public repos was empty. Users visiting wipcomputer/wip-ldm-os or wipcomputer/wip-ai-devops-toolbox saw no packages even though they were published. The packages existed but were linked to the private repo.
|
|
34
68
|
|
|
35
69
|
## 1.9.33 (2026-03-15)
|
|
36
70
|
|
package/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
interface: [cli, module, mcp, skill, hook, plugin]
|
|
6
6
|
metadata:
|
|
7
7
|
display-name: "WIP AI DevOps Toolbox"
|
|
8
|
-
version: "1.9.
|
|
8
|
+
version: "1.9.35"
|
|
9
9
|
homepage: "https://github.com/wipcomputer/wip-ai-devops-toolbox"
|
|
10
10
|
author: "Parker Todd Brooks"
|
|
11
11
|
category: dev-tools
|
package/package.json
CHANGED
package/scripts/deploy-public.sh
CHANGED
|
@@ -158,7 +158,14 @@ if $DRY_RUN; then
|
|
|
158
158
|
exit 0
|
|
159
159
|
fi
|
|
160
160
|
|
|
161
|
-
git commit -m "$
|
|
161
|
+
git commit -m "$(cat <<COMMITEOF
|
|
162
|
+
$COMMIT_MSG (from $COMMIT_HASH)
|
|
163
|
+
|
|
164
|
+
Co-Authored-By: Parker Todd Brooks <parkertoddbrooks@users.noreply.github.com>
|
|
165
|
+
Co-Authored-By: Lēsa <lesaai@icloud.com>
|
|
166
|
+
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
167
|
+
COMMITEOF
|
|
168
|
+
)"
|
|
162
169
|
|
|
163
170
|
if [[ "$EMPTY_REPO" == "true" ]]; then
|
|
164
171
|
# Empty repo: push directly to main (no base branch to PR against)
|
|
@@ -285,7 +292,40 @@ if [[ -n "${VERSION:-}" ]]; then
|
|
|
285
292
|
done
|
|
286
293
|
fi
|
|
287
294
|
|
|
288
|
-
|
|
295
|
+
# Publish to GitHub Packages from public repo (#193)
|
|
296
|
+
echo "Publishing to GitHub Packages from public repo..."
|
|
297
|
+
GH_TOKEN=$(gh auth token 2>/dev/null || echo "")
|
|
298
|
+
if [[ -n "$GH_TOKEN" ]]; then
|
|
299
|
+
cd "$NPM_TMPDIR/public"
|
|
300
|
+
|
|
301
|
+
# Root package
|
|
302
|
+
if [[ "$IS_PRIVATE" != "true" ]]; then
|
|
303
|
+
echo "//npm.pkg.github.com/:_authToken=${GH_TOKEN}" > .npmrc
|
|
304
|
+
npm publish --registry https://npm.pkg.github.com/ --access public 2>/dev/null && echo " ✓ Published root to GitHub Packages" || echo " ✗ Root GitHub Packages publish failed (non-fatal)"
|
|
305
|
+
rm -f .npmrc
|
|
306
|
+
fi
|
|
307
|
+
|
|
308
|
+
# Sub-tools
|
|
309
|
+
if [[ -d "tools" ]]; then
|
|
310
|
+
for TOOL_DIR in tools/*/; do
|
|
311
|
+
if [[ -f "${TOOL_DIR}package.json" ]]; then
|
|
312
|
+
TOOL_PRIVATE=$(node -p "require('./${TOOL_DIR}package.json').private || false" 2>/dev/null)
|
|
313
|
+
if [[ "$TOOL_PRIVATE" != "true" ]]; then
|
|
314
|
+
TOOL_NAME=$(node -p "require('./${TOOL_DIR}package.json').name" 2>/dev/null)
|
|
315
|
+
echo "//npm.pkg.github.com/:_authToken=${GH_TOKEN}" > "${TOOL_DIR}.npmrc"
|
|
316
|
+
(cd "$TOOL_DIR" && npm publish --registry https://npm.pkg.github.com/ --access public 2>/dev/null) && echo " ✓ Published $TOOL_NAME to GitHub Packages" || echo " ✗ GitHub Packages failed for $TOOL_NAME (non-fatal)"
|
|
317
|
+
rm -f "${TOOL_DIR}.npmrc"
|
|
318
|
+
fi
|
|
319
|
+
fi
|
|
320
|
+
done
|
|
321
|
+
fi
|
|
322
|
+
|
|
323
|
+
cd - > /dev/null
|
|
324
|
+
else
|
|
325
|
+
echo " ! gh auth token not found. Skipping GitHub Packages publish."
|
|
326
|
+
fi
|
|
327
|
+
|
|
328
|
+
cd - > /dev/null 2>/dev/null || true
|
|
289
329
|
else
|
|
290
330
|
echo " ! npm Token not found in 1Password. Skipping npm publish."
|
|
291
331
|
fi
|
|
@@ -205,10 +205,30 @@ async function main() {
|
|
|
205
205
|
repoDir = process.env.CWD || process.cwd();
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
// Check if the target repo is on main
|
|
208
|
+
// Check if the target repo is on main AND if we're in a worktree
|
|
209
209
|
const branch = getCurrentBranch(repoDir);
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
const worktree = isInWorktree(repoDir);
|
|
211
|
+
|
|
212
|
+
if (!branch) {
|
|
213
|
+
// Not in a git repo, allow
|
|
214
|
+
process.exit(0);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (branch !== 'main' && branch !== 'master' && worktree) {
|
|
218
|
+
// On a branch AND in a worktree. Correct workflow. Allow.
|
|
219
|
+
process.exit(0);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (branch !== 'main' && branch !== 'master' && !worktree) {
|
|
223
|
+
// On a branch but NOT in a worktree. Block writes.
|
|
224
|
+
const isWriteOp = WRITE_TOOLS.has(toolName) ||
|
|
225
|
+
(toolName === BASH_TOOL && command &&
|
|
226
|
+
BLOCKED_BASH_PATTERNS.some(p => p.test(command)) &&
|
|
227
|
+
!ALLOWED_BASH_PATTERNS.some(p => p.test(command)));
|
|
228
|
+
if (isWriteOp) {
|
|
229
|
+
deny(`BLOCKED: On branch "${branch}" but not in a worktree. Use: git worktree add ../my-worktree -b ${branch}`);
|
|
230
|
+
process.exit(0);
|
|
231
|
+
}
|
|
212
232
|
process.exit(0);
|
|
213
233
|
}
|
|
214
234
|
|
|
@@ -216,7 +236,7 @@ async function main() {
|
|
|
216
236
|
|
|
217
237
|
// Block Write/Edit tools entirely on main
|
|
218
238
|
if (WRITE_TOOLS.has(toolName)) {
|
|
219
|
-
deny(`BLOCKED: Cannot ${toolName} while on main branch.
|
|
239
|
+
deny(`BLOCKED: Cannot ${toolName} while on main branch. Use a worktree: git worktree add ../my-worktree -b cc-mini/your-feature`);
|
|
220
240
|
process.exit(0);
|
|
221
241
|
}
|
|
222
242
|
|
|
@@ -238,7 +258,7 @@ async function main() {
|
|
|
238
258
|
if (ap.test(command)) { isAllowed = true; break; }
|
|
239
259
|
}
|
|
240
260
|
if (!isAllowed) {
|
|
241
|
-
deny(`BLOCKED: Cannot run "${command.substring(0, 60)}..." on main branch.
|
|
261
|
+
deny(`BLOCKED: Cannot run "${command.substring(0, 60)}..." on main branch. Use a worktree: git worktree add ../my-worktree -b cc-mini/your-feature`);
|
|
242
262
|
process.exit(0);
|
|
243
263
|
}
|
|
244
264
|
}
|
|
@@ -253,7 +273,7 @@ async function main() {
|
|
|
253
273
|
if (ap.test(command)) { isAllowed = true; break; }
|
|
254
274
|
}
|
|
255
275
|
if (!isAllowed) {
|
|
256
|
-
deny(`BLOCKED: Cannot run file-modifying command on main branch.
|
|
276
|
+
deny(`BLOCKED: Cannot run file-modifying command on main branch. Use a worktree: git worktree add ../my-worktree -b cc-mini/your-feature`);
|
|
257
277
|
process.exit(0);
|
|
258
278
|
}
|
|
259
279
|
}
|
|
@@ -941,7 +941,7 @@ export async function release({ repoPath, level, notes, notesSource, dryRun, noP
|
|
|
941
941
|
console.log(` [dry run] Would commit and tag v${newVersion}`);
|
|
942
942
|
if (!noPublish) {
|
|
943
943
|
console.log(` [dry run] Would publish to npm (@wipcomputer scope)`);
|
|
944
|
-
console.log(` [dry run]
|
|
944
|
+
console.log(` [dry run] GitHub Packages: handled by deploy-public.sh`);
|
|
945
945
|
console.log(` [dry run] Would create GitHub release v${newVersion}`);
|
|
946
946
|
if (hasSkill) console.log(` [dry run] Would publish to ClawHub`);
|
|
947
947
|
// Skill-to-website dry run (auto-detects SKILL.md, no config needed)
|
|
@@ -1043,15 +1043,11 @@ export async function release({ repoPath, level, notes, notesSource, dryRun, noP
|
|
|
1043
1043
|
console.log(` ✗ npm publish failed: ${e.message}`);
|
|
1044
1044
|
}
|
|
1045
1045
|
|
|
1046
|
-
// 7. GitHub Packages
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
} catch (e) {
|
|
1052
|
-
distResults.push({ target: 'GitHub Packages', status: 'failed', detail: e.message });
|
|
1053
|
-
console.log(` ✗ GitHub Packages publish failed: ${e.message}`);
|
|
1054
|
-
}
|
|
1046
|
+
// 7. GitHub Packages ... SKIPPED from private repos.
|
|
1047
|
+
// deploy-public.sh publishes to GitHub Packages from the public repo clone.
|
|
1048
|
+
// Publishing from private ties the package to the private repo, making it
|
|
1049
|
+
// invisible on the public repo's Packages tab. (#53)
|
|
1050
|
+
console.log(` - GitHub Packages: handled by deploy-public.sh (from public repo)`);
|
|
1055
1051
|
|
|
1056
1052
|
// 8. GitHub release
|
|
1057
1053
|
try {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wipcomputer/universal-installer",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.35",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The Universal Interface specification for agent-native software. Teaches your AI how to build repos with every interface: CLI, Module, MCP Server, OpenClaw Plugin, Skill, Claude Code Hook.",
|
|
6
6
|
"main": "detect.mjs",
|