bigpowers 2.87.6 → 2.87.7
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/.gemini/extensions/bigpowers/gemini-extension.json +1 -1
- package/.pi/package.json +1 -1
- package/CHANGELOG.md +7 -0
- package/docs/templates/AGENTS.md +89 -0
- package/docs/templates/ci/github/test-build-release-go.yml +68 -0
- package/docs/templates/ci/github/test-build-release-node.yml +87 -0
- package/docs/templates/ci/github/test-build-release-python.yml +74 -0
- package/docs/templates/ci/github/test-build-release-rust.yml +67 -0
- package/package.json +1 -1
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/test-install-helpers.js +25 -0
package/.pi/package.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [2.87.7](https://github.com/danielvm-git/bigpowers/compare/v2.87.6...v2.87.7) (2026-09-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **packaging:** ship wire-ci CI templates in the npm tarball ([#115](https://github.com/danielvm-git/bigpowers/issues/115)) ([26df32b](https://github.com/danielvm-git/bigpowers/commit/26df32bc88310950863715dc26ca9c97dcaa4601)), closes [#113](https://github.com/danielvm-git/bigpowers/issues/113)
|
|
7
|
+
|
|
1
8
|
## [2.87.6](https://github.com/danielvm-git/bigpowers/compare/v2.87.5...v2.87.6) (2026-09-01)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# story: e37s01
|
|
2
|
+
# story: e45s21
|
|
3
|
+
# story: e81s01
|
|
4
|
+
# scenario: SC-e37s01-P1-01
|
|
5
|
+
# [Project Name] — AI Agents
|
|
6
|
+
|
|
7
|
+
> **Multi-agent context** — This file is the canonical project context for **Cline**, **Aider**, **OpenCode**, and other AGENTS.md-native tools. Claude Code and Cursor read it via the `CLAUDE.md` symlink.
|
|
8
|
+
|
|
9
|
+
Read CONVENTIONS.md before any GitHub or git operation.
|
|
10
|
+
|
|
11
|
+
<!-- BEGIN bigpowers:context-routing -->
|
|
12
|
+
## Context Routing
|
|
13
|
+
|
|
14
|
+
Load subdirectory context by file glob — see project-specific routing table (seeded by `seed-conventions`).
|
|
15
|
+
<!-- END bigpowers:context-routing -->
|
|
16
|
+
|
|
17
|
+
<!-- BEGIN bigpowers:learned-preferences -->
|
|
18
|
+
## Learned User Preferences
|
|
19
|
+
|
|
20
|
+
- (none yet — updated via `session-state`)
|
|
21
|
+
|
|
22
|
+
## Workspace Facts
|
|
23
|
+
|
|
24
|
+
- (none yet — durable facts discovered across sessions)
|
|
25
|
+
<!-- END bigpowers:learned-preferences -->
|
|
26
|
+
|
|
27
|
+
<!-- BEGIN bigpowers:project -->
|
|
28
|
+
## Project
|
|
29
|
+
|
|
30
|
+
[One sentence. What this codebase does.]
|
|
31
|
+
Stack: [language, framework, runtime]
|
|
32
|
+
|
|
33
|
+
## Commands
|
|
34
|
+
|
|
35
|
+
| Action | Command |
|
|
36
|
+
|--------|---------|
|
|
37
|
+
| Run | `[cmd]` |
|
|
38
|
+
| Test | `[cmd]` or N/A |
|
|
39
|
+
| Build | `[cmd]` |
|
|
40
|
+
| Lint | `[cmd]` |
|
|
41
|
+
| Preflight | `[test && lint && build chain — or user-named full-green cmd]` |
|
|
42
|
+
| CI | `gh pr checks` (when a PR is open) |
|
|
43
|
+
|
|
44
|
+
## Test
|
|
45
|
+
|
|
46
|
+
`[cmd]` or N/A
|
|
47
|
+
|
|
48
|
+
## Lint
|
|
49
|
+
|
|
50
|
+
`[cmd]` or N/A
|
|
51
|
+
|
|
52
|
+
## Build
|
|
53
|
+
|
|
54
|
+
`[cmd]` or N/A
|
|
55
|
+
|
|
56
|
+
## Architecture
|
|
57
|
+
|
|
58
|
+
[1–2 sentences. Key modules and their relationships.]
|
|
59
|
+
|
|
60
|
+
## Conventions
|
|
61
|
+
|
|
62
|
+
- [e.g. Named exports only]
|
|
63
|
+
- [e.g. All queries go through the repository layer]
|
|
64
|
+
|
|
65
|
+
## Never
|
|
66
|
+
|
|
67
|
+
- Never dismiss reproducible gate failures as pre-existing or out of scope
|
|
68
|
+
- Never proceed on red Preflight or red CI — invoke quick-fix or fix-bug first
|
|
69
|
+
- [Hard stop — e.g. Never touch legacy/]
|
|
70
|
+
|
|
71
|
+
## Agent Rules
|
|
72
|
+
|
|
73
|
+
- **Workflow Mandate:** Use bigpowers skills (e.g. `plan-work`, `develop-tdd`) for structured work.
|
|
74
|
+
- **Always Green:** Preflight and CI must be green before forward work.
|
|
75
|
+
- Read specs/ and CONVENTIONS.md before writing code.
|
|
76
|
+
- Write the minimum code that solves the stated problem.
|
|
77
|
+
- Run tests after every change. Show evidence before declaring done.
|
|
78
|
+
- All planning output goes in specs/.
|
|
79
|
+
|
|
80
|
+
## Token Economy — Minimal Footprint
|
|
81
|
+
|
|
82
|
+
> Production-safe subset of the 8-rule AGENTS.md pattern (Vercel engineer, ~60B tokens).
|
|
83
|
+
> Rule 1 ("no backward compatibility") is excluded deliberately: it risks data loss in production.
|
|
84
|
+
|
|
85
|
+
1. **Check existing dependencies first.** DO inspect what your current dependencies already do before adding a package or writing your own code.
|
|
86
|
+
2. **Prefer mature, maintained libraries.** DO NOT rewrite a capability a maintained library provides without a documented reason.
|
|
87
|
+
3. **Copy validated patterns.** DO study how established products solve the same problem before inventing a new approach.
|
|
88
|
+
4. **Keep the simplest working implementation.** DO write the least code that satisfies the stated requirement. NEVER add preventive abstraction or unused config layers.
|
|
89
|
+
<!-- END bigpowers:project -->
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Bundled bigpowers CI template — Go. See test-build-release-node.yml for
|
|
2
|
+
# the override mechanism (BIGPOWERS_CI_TEMPLATES). GH #104.
|
|
3
|
+
name: Test Build Release
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [main]
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
lint:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
# Read the version from go.mod so `go vet` cannot drift from the module.
|
|
20
|
+
- uses: actions/setup-go@v5
|
|
21
|
+
with:
|
|
22
|
+
go-version-file: go.mod
|
|
23
|
+
cache: true
|
|
24
|
+
- run: go vet ./...
|
|
25
|
+
|
|
26
|
+
test:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
needs: lint
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v6
|
|
31
|
+
- uses: actions/setup-go@v5
|
|
32
|
+
with:
|
|
33
|
+
go-version-file: go.mod
|
|
34
|
+
cache: true
|
|
35
|
+
- run: go test ./... -race
|
|
36
|
+
|
|
37
|
+
build:
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
needs: test
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v6
|
|
42
|
+
- uses: actions/setup-go@v5
|
|
43
|
+
with:
|
|
44
|
+
go-version-file: go.mod
|
|
45
|
+
cache: true
|
|
46
|
+
- run: go build ./...
|
|
47
|
+
- uses: actions/upload-artifact@v4
|
|
48
|
+
with:
|
|
49
|
+
name: dist
|
|
50
|
+
path: bin/
|
|
51
|
+
if-no-files-found: ignore
|
|
52
|
+
|
|
53
|
+
release:
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
needs: build
|
|
56
|
+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
|
57
|
+
permissions:
|
|
58
|
+
contents: write
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@v6
|
|
61
|
+
with:
|
|
62
|
+
fetch-depth: 0
|
|
63
|
+
- uses: actions/download-artifact@v4
|
|
64
|
+
with:
|
|
65
|
+
name: dist
|
|
66
|
+
path: bin/
|
|
67
|
+
continue-on-error: true
|
|
68
|
+
- run: echo "Add your release step (goreleaser, gh release create, ...) here"
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Bundled bigpowers CI template — Node.
|
|
2
|
+
# Ships inside the npm package so `wire-ci` has no network dependency on any
|
|
3
|
+
# third party's repository (GH #104). Override the source with
|
|
4
|
+
# BIGPOWERS_CI_TEMPLATES=/path/to/your/templates to use your own org templates.
|
|
5
|
+
#
|
|
6
|
+
# Keep `name:` as "Test Build Release" — deploy.yml listens for it via workflow_run.
|
|
7
|
+
name: Test Build Release
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
push:
|
|
11
|
+
branches: [main]
|
|
12
|
+
pull_request:
|
|
13
|
+
branches: [main]
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
lint:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
- uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version-file: .nvmrc
|
|
26
|
+
cache: npm
|
|
27
|
+
- run: npm ci
|
|
28
|
+
- run: npm run lint --if-present
|
|
29
|
+
|
|
30
|
+
test:
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
needs: lint
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v6
|
|
35
|
+
- uses: actions/setup-node@v4
|
|
36
|
+
with:
|
|
37
|
+
node-version-file: .nvmrc
|
|
38
|
+
cache: npm
|
|
39
|
+
- run: npm ci
|
|
40
|
+
- run: npm test
|
|
41
|
+
|
|
42
|
+
build:
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: test
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@v6
|
|
47
|
+
- uses: actions/setup-node@v4
|
|
48
|
+
with:
|
|
49
|
+
node-version-file: .nvmrc
|
|
50
|
+
cache: npm
|
|
51
|
+
- run: npm ci
|
|
52
|
+
- run: npm run build --if-present
|
|
53
|
+
- uses: actions/upload-artifact@v4
|
|
54
|
+
with:
|
|
55
|
+
name: dist
|
|
56
|
+
path: dist/
|
|
57
|
+
if-no-files-found: ignore
|
|
58
|
+
|
|
59
|
+
release:
|
|
60
|
+
runs-on: ubuntu-latest
|
|
61
|
+
needs: build
|
|
62
|
+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
|
63
|
+
permissions:
|
|
64
|
+
contents: write
|
|
65
|
+
issues: write
|
|
66
|
+
pull-requests: write
|
|
67
|
+
id-token: write
|
|
68
|
+
steps:
|
|
69
|
+
- uses: actions/checkout@v6
|
|
70
|
+
with:
|
|
71
|
+
fetch-depth: 0
|
|
72
|
+
- uses: actions/setup-node@v4
|
|
73
|
+
with:
|
|
74
|
+
node-version-file: .nvmrc
|
|
75
|
+
cache: npm
|
|
76
|
+
- run: npm ci
|
|
77
|
+
# Reuse the build output rather than rebuilding — a rebuilt binary is not
|
|
78
|
+
# the artifact that was tested.
|
|
79
|
+
- uses: actions/download-artifact@v4
|
|
80
|
+
with:
|
|
81
|
+
name: dist
|
|
82
|
+
path: dist/
|
|
83
|
+
continue-on-error: true
|
|
84
|
+
- run: npx semantic-release
|
|
85
|
+
env:
|
|
86
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
87
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Bundled bigpowers CI template — Python. See test-build-release-node.yml for
|
|
2
|
+
# the override mechanism (BIGPOWERS_CI_TEMPLATES). GH #104.
|
|
3
|
+
name: Test Build Release
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [main]
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
env:
|
|
15
|
+
PYTHON_VERSION: '3.12'
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
lint:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v6
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
25
|
+
cache: pip
|
|
26
|
+
- run: pip install -r requirements.txt
|
|
27
|
+
- run: ruff check .
|
|
28
|
+
|
|
29
|
+
test:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
needs: lint
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v6
|
|
34
|
+
- uses: actions/setup-python@v5
|
|
35
|
+
with:
|
|
36
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
37
|
+
cache: pip
|
|
38
|
+
- run: pip install -r requirements.txt
|
|
39
|
+
- run: pytest
|
|
40
|
+
|
|
41
|
+
build:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
needs: test
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v6
|
|
46
|
+
- uses: actions/setup-python@v5
|
|
47
|
+
with:
|
|
48
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
49
|
+
- run: pip install build
|
|
50
|
+
- run: python -m build
|
|
51
|
+
- uses: actions/upload-artifact@v4
|
|
52
|
+
with:
|
|
53
|
+
name: dist
|
|
54
|
+
path: dist/
|
|
55
|
+
if-no-files-found: ignore
|
|
56
|
+
|
|
57
|
+
release:
|
|
58
|
+
runs-on: ubuntu-latest
|
|
59
|
+
needs: build
|
|
60
|
+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
|
61
|
+
permissions:
|
|
62
|
+
contents: write
|
|
63
|
+
id-token: write
|
|
64
|
+
steps:
|
|
65
|
+
- uses: actions/checkout@v6
|
|
66
|
+
with:
|
|
67
|
+
fetch-depth: 0
|
|
68
|
+
- uses: actions/download-artifact@v4
|
|
69
|
+
with:
|
|
70
|
+
name: dist
|
|
71
|
+
path: dist/
|
|
72
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
73
|
+
with:
|
|
74
|
+
skip-existing: true
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Bundled bigpowers CI template — Rust. See test-build-release-node.yml for
|
|
2
|
+
# the override mechanism (BIGPOWERS_CI_TEMPLATES). GH #104.
|
|
3
|
+
name: Test Build Release
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [main]
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
env:
|
|
15
|
+
CARGO_TERM_COLOR: always
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
lint:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v6
|
|
22
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
23
|
+
with:
|
|
24
|
+
components: clippy, rustfmt
|
|
25
|
+
- uses: Swatinem/rust-cache@v2
|
|
26
|
+
- run: cargo fmt --check
|
|
27
|
+
# Pin clippy to the stable toolchain above: new nightly lints otherwise
|
|
28
|
+
# break CI on days nobody changed the code.
|
|
29
|
+
- run: cargo clippy --all-targets -- -D warnings
|
|
30
|
+
|
|
31
|
+
test:
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
needs: lint
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v6
|
|
36
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
37
|
+
- uses: Swatinem/rust-cache@v2
|
|
38
|
+
- run: cargo test --all
|
|
39
|
+
|
|
40
|
+
build:
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
needs: test
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v6
|
|
45
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
46
|
+
- uses: Swatinem/rust-cache@v2
|
|
47
|
+
- run: cargo build --release
|
|
48
|
+
- uses: actions/upload-artifact@v4
|
|
49
|
+
with:
|
|
50
|
+
name: dist
|
|
51
|
+
path: target/release/
|
|
52
|
+
if-no-files-found: ignore
|
|
53
|
+
|
|
54
|
+
release:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
needs: build
|
|
57
|
+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
|
58
|
+
permissions:
|
|
59
|
+
contents: write
|
|
60
|
+
steps:
|
|
61
|
+
- uses: actions/checkout@v6
|
|
62
|
+
with:
|
|
63
|
+
fetch-depth: 0
|
|
64
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
65
|
+
- run: cargo publish --no-verify
|
|
66
|
+
env:
|
|
67
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -230,6 +230,7 @@ try {
|
|
|
230
230
|
'.cursor/rules',
|
|
231
231
|
'.pi/skills',
|
|
232
232
|
'skills/audit-code/SKILL.md',
|
|
233
|
+
'docs/templates/ci/github/test-build-release-node.yml',
|
|
233
234
|
];
|
|
234
235
|
const isIgnored = (p) =>
|
|
235
236
|
npmignore.some((pat) => {
|
|
@@ -244,6 +245,30 @@ try {
|
|
|
244
245
|
}
|
|
245
246
|
}
|
|
246
247
|
|
|
248
|
+
// story: #113 — wire-ci templates must actually ship in the npm tarball.
|
|
249
|
+
// The .npmignore pattern check above is necessary but not sufficient (it
|
|
250
|
+
// cannot model gitignore negation); prove it with a real pack listing.
|
|
251
|
+
{
|
|
252
|
+
const { execSync } = require('child_process');
|
|
253
|
+
const packOut = execSync('npm pack --dry-run 2>&1', {
|
|
254
|
+
cwd: ROOT,
|
|
255
|
+
encoding: 'utf8',
|
|
256
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
257
|
+
});
|
|
258
|
+
for (const tpl of [
|
|
259
|
+
'docs/templates/ci/github/test-build-release-node.yml',
|
|
260
|
+
'docs/templates/ci/github/test-build-release-rust.yml',
|
|
261
|
+
'docs/templates/ci/github/test-build-release-python.yml',
|
|
262
|
+
'docs/templates/ci/github/test-build-release-go.yml',
|
|
263
|
+
'docs/templates/AGENTS.md',
|
|
264
|
+
]) {
|
|
265
|
+
assert.ok(
|
|
266
|
+
packOut.includes(tpl),
|
|
267
|
+
`npm tarball must include ${tpl} (wire-ci templates, #113)`
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
247
272
|
console.log('test-install-helpers: ALL PASS');
|
|
248
273
|
} finally {
|
|
249
274
|
rmSync(tmpHome, { recursive: true, force: true });
|