code-foundry 1.31.0 → 1.33.1

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.
@@ -33,6 +33,7 @@ permissions:
33
33
  contents: read
34
34
 
35
35
  env:
36
+ TURBO_API: ${{ vars.TURBO_API }}
36
37
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
37
38
  TURBO_TEAM: ${{ vars.TURBO_TEAM }}
38
39
  REPO_FOUNDRY_PROFILE: ${{ vars.REPO_FOUNDRY_PROFILE }}
@@ -57,6 +57,9 @@ on:
57
57
  required: true
58
58
  CLOUDFLARE_ACCOUNT_ID:
59
59
  required: true
60
+ TURBO_TOKEN:
61
+ description: 'Optional turborepo remote cache token; when set, the Build Worker step authenticates to TURBO_API so deploy builds save to and hit the remote cache.'
62
+ required: false
60
63
  outputs:
61
64
  url:
62
65
  value: ${{ jobs.deploy.outputs.url }}
@@ -264,6 +267,9 @@ jobs:
264
267
  working-directory: ${{ inputs.working-directory }}
265
268
  env:
266
269
  BUILD_SCRIPT: ${{ inputs.build-script }}
270
+ TURBO_API: ${{ vars.TURBO_API }}
271
+ TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
272
+ TURBO_TEAM: ${{ vars.TURBO_TEAM }}
267
273
  run: bun run "$BUILD_SCRIPT"
268
274
  - name: Deploy to Cloudflare
269
275
  id: deploy
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.33.1](https://github.com/0xPlayerOne/code-foundry/compare/v1.33.0...v1.33.1) (2026-09-25)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **security:** stop a clean pip-audit result from failing the audit gate ([#643](https://github.com/0xPlayerOne/code-foundry/issues/643)) ([7260291](https://github.com/0xPlayerOne/code-foundry/commit/7260291fc24e851678ddbf9cc9dfcf99bea48f59))
9
+
10
+
11
+ ### Maintenance
12
+
13
+ * **perf:** recalibrate the packed artifact budget ([#645](https://github.com/0xPlayerOne/code-foundry/issues/645)) ([64b6504](https://github.com/0xPlayerOne/code-foundry/commit/64b65049ba313f01f6989bf52a83efe31d2b91dd))
14
+
15
+ ## [1.33.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.32.0...v1.33.0) (2026-09-22)
16
+
17
+
18
+ ### Features
19
+
20
+ * **cloudflare-deploy:** accept optional TURBO_TOKEN secret for remote-cached deploy builds ([#640](https://github.com/0xPlayerOne/code-foundry/issues/640)) ([091bfd1](https://github.com/0xPlayerOne/code-foundry/commit/091bfd12b6bbca0e9289a74827713dc50bcb4193))
21
+
22
+ ## [1.32.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.31.0...v1.32.0) (2026-09-21)
23
+
24
+
25
+ ### Features
26
+
27
+ * forward TURBO_API to validation and cloudflare deploy builds ([#638](https://github.com/0xPlayerOne/code-foundry/issues/638)) ([55347f6](https://github.com/0xPlayerOne/code-foundry/commit/55347f6fd3bea41f11aa936650222cd73cfd8026))
28
+
3
29
  ## [1.31.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.30.2...v1.31.0) (2026-09-21)
4
30
 
5
31
 
package/docs/WORKFLOWS.md CHANGED
@@ -282,6 +282,10 @@ The repository's format and lint jobs are ordinary CI checks. Set `codeql:
282
282
  false` or `dependency_review: false` when a public repository also needs those
283
283
  checks disabled.
284
284
 
285
+ The Python audit fails only on a reported advisory: `pip-audit` can report a
286
+ clean result with a non-zero status, so the runtime decides from the report,
287
+ replays it to the job log, and emits a `::warning::` when it downgrades.
288
+
285
289
  ## Branch protection
286
290
 
287
291
  Use repository rulesets (or legacy branch protection settings) to mirror the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.31.0",
3
+ "version": "1.33.1",
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": {
@@ -432,6 +432,25 @@ function run(command, args = [], options = {}) {
432
432
  if (result.status !== 0) process.exit(result.status ?? 1)
433
433
  }
434
434
 
435
+ // pip-audit can report its clean result with a non-zero status when the
436
+ // inspected environment hits a resolution problem, so decide from the report.
437
+ const CLEAN_AUDIT = 'No known vulnerabilities found'
438
+ const ADVISORY = /\b(?:PYSEC|GHSA|CVE|OSV)-[A-Za-z0-9._-]+/
439
+
440
+ /** @param {string} command @param {string[]} [args] */
441
+ function runAudited(command, args = []) {
442
+ const result = spawnSync(command, args, { cwd: root, encoding: 'utf8', env: process.env })
443
+ if (result.error) throw result.error
444
+ const stdout = result.stdout ?? ''
445
+ const stderr = result.stderr ?? ''
446
+ if (stdout) process.stdout.write(stdout)
447
+ if (stderr) process.stderr.write(stderr)
448
+ if (result.status === 0) return
449
+ const report = `${stdout}\n${stderr}`
450
+ if (!report.includes(CLEAN_AUDIT) || ADVISORY.test(report)) process.exit(result.status ?? 1)
451
+ console.warn(`::warning::${command} exited ${result.status} with no known vulnerabilities`)
452
+ }
453
+
435
454
  /** @param {string} command @param {string[]} [args] */
436
455
  function capture(command, args = []) {
437
456
  const result = spawnSync(command, args, { cwd: root, encoding: 'utf8', env: process.env })
@@ -879,10 +898,10 @@ function security(task, ecosystem) {
879
898
  const auditArgs =
880
899
  requirement && !['project', 'none'].includes(requirement) ? ['-r', requirement] : []
881
900
  if (commandExists('uv'))
882
- run('uv', ['tool', 'run', '--from', 'pip-audit==2.10.1', 'pip-audit', ...auditArgs])
901
+ runAudited('uv', ['tool', 'run', '--from', 'pip-audit==2.10.1', 'pip-audit', ...auditArgs])
883
902
  else {
884
903
  run('python', ['-m', 'pip', 'install', '--quiet', 'pip-audit==2.10.1'])
885
- run('python', ['-m', 'pip_audit', ...auditArgs])
904
+ runAudited('python', ['-m', 'pip_audit', ...auditArgs])
886
905
  }
887
906
  }
888
907
  }