code-foundry 1.5.2 → 1.5.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.
@@ -210,6 +210,61 @@ jobs:
210
210
  mkdir -p .github/actions
211
211
  mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
212
212
  cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
213
+ - name: Detect audit toolchain
214
+ id: audit-toolchain
215
+ shell: bash
216
+ env:
217
+ REPO_FOUNDRY_LANGUAGE: ${{ matrix.entry.language }}
218
+ run: |
219
+ toolchain=auto
220
+ configured_toolchain=''
221
+ configured_package_manager=''
222
+ if [ -f .github/code-foundry.yml ]; then
223
+ configured_toolchain="$(awk -F': ' '/^toolchain:/ {print $2; exit}' .github/code-foundry.yml)"
224
+ configured_package_manager="$(awk -F': ' '/^package_manager:/ {print $2; exit}' .github/code-foundry.yml)"
225
+ fi
226
+ [ -n "$configured_toolchain" ] && toolchain="$configured_toolchain"
227
+ if [ "$toolchain" = auto ] && [ -f .mise.toml ]; then toolchain=mise; fi
228
+
229
+ package_manager=none
230
+ case "$configured_package_manager" in
231
+ bun|pnpm|yarn|npm|none) package_manager="$configured_package_manager" ;;
232
+ *)
233
+ if [ -f bun.lock ] || [ -f bun.lockb ]; then package_manager=bun
234
+ elif [ -f pnpm-lock.yaml ]; then package_manager=pnpm
235
+ elif [ -f yarn.lock ]; then package_manager=yarn
236
+ elif [ -f package-lock.json ]; then package_manager=npm
237
+ elif [ -f package.json ]; then package_manager=bun
238
+ fi
239
+ ;;
240
+ esac
241
+
242
+ mise_tools=''
243
+ configured_tool() {
244
+ [ -f .mise.toml ] && grep -Eq "^$1[[:space:]]*=" .mise.toml
245
+ }
246
+ add_mise_tool() {
247
+ configured_tool "$1" || return 0
248
+ if [ -n "$mise_tools" ]; then mise_tools="$mise_tools $1"; else mise_tools="$1"; fi
249
+ }
250
+ if [ "$toolchain" = mise ] && [ -f .mise.toml ]; then
251
+ case "$REPO_FOUNDRY_LANGUAGE" in
252
+ javascript)
253
+ add_mise_tool node
254
+ [ "$package_manager" = bun ] && add_mise_tool bun
255
+ ;;
256
+ python)
257
+ add_mise_tool python
258
+ add_mise_tool uv
259
+ add_mise_tool ruff
260
+ ;;
261
+ rust) add_mise_tool rust ;;
262
+ esac
263
+ fi
264
+
265
+ printf 'toolchain_mode=%s\n' "$toolchain" >> "$GITHUB_OUTPUT"
266
+ printf 'package_manager=%s\n' "$package_manager" >> "$GITHUB_OUTPUT"
267
+ printf 'mise_tools=%s\n' "$mise_tools" >> "$GITHUB_OUTPUT"
213
268
  - name: Detect JavaScript
214
269
  id: applicability-javascript
215
270
  if: matrix.entry.language == 'javascript'
@@ -218,17 +273,39 @@ jobs:
218
273
  id: applicability-rust
219
274
  if: matrix.entry.language == 'rust'
220
275
  run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security should_run rust >> "$GITHUB_OUTPUT"
221
- - name: Setup JavaScript
276
+ - name: Setup mise toolchain
277
+ if: steps.audit-toolchain.outputs.mise_tools != ''
278
+ uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4
279
+ with:
280
+ cache: false
281
+ install_args: ${{ steps.audit-toolchain.outputs.mise_tools }}
282
+ - name: Setup Node
222
283
  if: >-
223
284
  matrix.entry.language == 'javascript' &&
224
- steps.applicability-javascript.outputs.applicable == 'true'
225
- uses: ./.github/actions/setup
285
+ steps.applicability-javascript.outputs.applicable == 'true' &&
286
+ steps.audit-toolchain.outputs.toolchain_mode != 'mise' &&
287
+ steps.audit-toolchain.outputs.package_manager != 'bun' &&
288
+ steps.audit-toolchain.outputs.package_manager != 'none'
289
+ uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
226
290
  with:
227
- mise-scope: javascript
228
- # Security runs execute the caller-selected runtime ref. Restore
229
- # caches for speed, but never let that runtime write to a shared
230
- # default-branch cache scope.
231
- cache-save: 'false'
291
+ node-version: 24
292
+ - name: Setup Bun
293
+ if: >-
294
+ matrix.entry.language == 'javascript' &&
295
+ steps.applicability-javascript.outputs.applicable == 'true' &&
296
+ steps.audit-toolchain.outputs.toolchain_mode != 'mise' &&
297
+ steps.audit-toolchain.outputs.package_manager == 'bun'
298
+ uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
299
+ with:
300
+ bun-version: 1.4.0
301
+ - name: Enable Corepack
302
+ if: >-
303
+ matrix.entry.language == 'javascript' &&
304
+ steps.applicability-javascript.outputs.applicable == 'true' &&
305
+ (steps.audit-toolchain.outputs.package_manager == 'pnpm' ||
306
+ steps.audit-toolchain.outputs.package_manager == 'yarn')
307
+ shell: bash
308
+ run: corepack enable
232
309
  - name: Audit JavaScript dependencies
233
310
  if: >-
234
311
  matrix.entry.language == 'javascript' &&
@@ -252,11 +329,9 @@ jobs:
252
329
  if: >-
253
330
  matrix.entry.language == 'rust' &&
254
331
  steps.applicability-rust.outputs.applicable == 'true' &&
332
+ steps.audit-toolchain.outputs.toolchain_mode != 'mise' &&
255
333
  steps.system-rust.outputs.available != 'true'
256
- uses: ./.github/actions/setup
257
- with:
258
- mise-scope: rust
259
- cache-save: 'false'
334
+ uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable
260
335
  - name: Install cargo-audit
261
336
  if: >-
262
337
  matrix.entry.language == 'rust' &&
@@ -270,11 +345,28 @@ jobs:
270
345
  steps.applicability-rust.outputs.applicable == 'true'
271
346
  run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security audit rust
272
347
  - name: Setup Python
348
+ if: >-
349
+ matrix.entry.language == 'python' &&
350
+ steps.audit-toolchain.outputs.toolchain_mode != 'mise'
351
+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
352
+ with:
353
+ python-version: '3.13'
354
+ - name: Check uv
355
+ id: uv
273
356
  if: matrix.entry.language == 'python'
274
- uses: ./.github/actions/setup
357
+ shell: bash
358
+ run: |
359
+ if command -v uv >/dev/null 2>&1; then
360
+ echo 'available=true' >> "$GITHUB_OUTPUT"
361
+ else
362
+ echo 'available=false' >> "$GITHUB_OUTPUT"
363
+ fi
364
+ - name: Setup uv
365
+ if: matrix.entry.language == 'python' && steps.uv.outputs.available != 'true'
366
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
275
367
  with:
276
- mise-scope: python
277
- cache-save: 'false'
368
+ version: 0.11.32
369
+ enable-cache: false
278
370
  - name: Audit Python dependencies
279
371
  if: matrix.entry.language == 'python'
280
372
  run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security audit python
@@ -76,7 +76,10 @@ jobs:
76
76
  with:
77
77
  mode: ${{ needs.mode.outputs.mode }}
78
78
  runtime-repository: 0xPlayerOne/code-foundry
79
- runtime-ref: ${{ github.sha }}
79
+ # Pull requests validate the proposed runtime commit. Scheduled and
80
+ # manually dispatched audits stay on the protected default branch so a
81
+ # selected branch cannot supply privileged runtime code.
82
+ runtime-ref: ${{ github.event_name == 'pull_request' && github.sha || 'main' }}
80
83
  ci-runner: ubuntu-latest
81
84
  test-runner: ubuntu-latest
82
85
  unit-runner: ubuntu-slim
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.5.4](https://github.com/0xPlayerOne/code-foundry/compare/v1.5.3...v1.5.4) (2026-09-08)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **security:** pin scheduled audit runtime ([#491](https://github.com/0xPlayerOne/code-foundry/issues/491)) ([af25ef6](https://github.com/0xPlayerOne/code-foundry/commit/af25ef6137078809f27c316bdde2a9d025ef34af))
9
+
10
+ ## [1.5.3](https://github.com/0xPlayerOne/code-foundry/compare/v1.5.2...v1.5.3) (2026-09-08)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **security:** remove cache-capable setup from audits ([#489](https://github.com/0xPlayerOne/code-foundry/issues/489)) ([47bd1d9](https://github.com/0xPlayerOne/code-foundry/commit/47bd1d9495a02dd2abcb2fee82052136b7a3675d))
16
+
3
17
  ## [1.5.2](https://github.com/0xPlayerOne/code-foundry/compare/v1.5.1...v1.5.2) (2026-09-08)
4
18
 
5
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "homepage": "https://github.com/0xPlayerOne/code-foundry#readme",
6
6
  "bugs": {