code-foundry 1.36.1 → 1.36.3

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.
@@ -17,7 +17,7 @@ updates:
17
17
  github-actions:
18
18
  applies-to: version-updates
19
19
  patterns: ['*']
20
- - package-ecosystem: npm
20
+ - package-ecosystem: bun
21
21
  directory: /
22
22
  target-branch: staging
23
23
  schedule:
@@ -25,7 +25,7 @@ updates:
25
25
  day: sunday
26
26
  open-pull-requests-limit: 99
27
27
  groups:
28
- npm-dependencies:
28
+ bun-dependencies:
29
29
  applies-to: version-updates
30
30
  patterns: ['*']
31
31
  ignore:
@@ -283,19 +283,30 @@ jobs:
283
283
  # cf path: refresh the Build Output with the project's own
284
284
  # cf-wrangler delegate, then deploy/preview it with the cf CLI.
285
285
  # Both CLIs come from the app's devDependencies installed by the
286
- # build step; the Node launcher avoids the Bun-runtime trap.
287
- cfbin=(npx --no-install)
288
- "${cfbin[@]}" cf-wrangler build
286
+ # build step. Resolve their bins by walking up from the working
287
+ # directory: bun hoists workspace bins to arbitrary levels, and
288
+ # npx's local resolution misses them (then hits the registry,
289
+ # where cf-wrangler does not exist).
290
+ binpath="$PWD"
291
+ while [ "$binpath" != / ]; do
292
+ [ -d "$binpath/node_modules/.bin" ] && PATH="$binpath/node_modules/.bin:$PATH"
293
+ binpath=$(dirname "$binpath")
294
+ done
295
+ export PATH
296
+ command -v cf-wrangler >/dev/null || {
297
+ echo 'cf-wrangler not found: declare cf and wrangler as devDependencies of the deployed package' >&2
298
+ exit 1
299
+ }
289
300
  if [ "$MODE" = production ]; then
290
- out="$("${cfbin[@]}" cf deploy --prebuilt)"
301
+ out="$(cf deploy --prebuilt)"
291
302
  printf '%s\n' "$out"
292
303
  version_id="$(printf '%s\n' "$out" | sed -n 's/.*Current Version ID: *//p' | head -1 | tr -d '[:space:]')"
293
304
  value="${DEPLOYMENT_URL:-$(printf '%s\n' "$out" | grep -o 'https://[^[:space:]]*' | head -1)}"
294
305
  else
295
306
  # Previews refuse a production Build Output; rebuild flagged as
296
307
  # a preview build first.
297
- CLOUDFLARE_PREVIEW_BUILD=true "${cfbin[@]}" cf-wrangler build --mode preview
298
- "${cfbin[@]}" cf previews deploy "$PREVIEW_NAME" > "$RUNNER_TEMP/cf-preview.json"
308
+ CLOUDFLARE_PREVIEW_BUILD=true cf-wrangler build --mode preview
309
+ cf previews deploy "$PREVIEW_NAME" > "$RUNNER_TEMP/cf-preview.json"
299
310
  value="$(jq -r '.preview_urls[0] // empty' "$RUNNER_TEMP/cf-preview.json")"
300
311
  version_id="$(jq -r '.deployment_id // empty' "$RUNNER_TEMP/cf-preview.json")"
301
312
  fi
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.36.3](https://github.com/0xPlayerOne/code-foundry/compare/v1.36.2...v1.36.3) (2026-09-29)
4
+
5
+
6
+ ### Maintenance
7
+
8
+ * track the JavaScript Dependabot ecosystem as bun by default ([#648](https://github.com/0xPlayerOne/code-foundry/issues/648)) ([6aa9712](https://github.com/0xPlayerOne/code-foundry/commit/6aa9712904340a7e4783f697a0e02d2be6ab1dce))
9
+
10
+ ## [1.36.2](https://github.com/0xPlayerOne/code-foundry/compare/v1.36.1...v1.36.2) (2026-09-29)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **cloudflare:** resolve cf bins by walking up node_modules/.bin ([#662](https://github.com/0xPlayerOne/code-foundry/issues/662)) ([e82bbe0](https://github.com/0xPlayerOne/code-foundry/commit/e82bbe0a1687b5cc8bf939769e15639f25199969))
16
+
3
17
  ## [1.36.1](https://github.com/0xPlayerOne/code-foundry/compare/v1.36.0...v1.36.1) (2026-09-29)
4
18
 
5
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.36.1",
3
+ "version": "1.36.3",
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": {
@@ -818,11 +818,13 @@ function removeWorkflowBlock(content, blockId) {
818
818
 
819
819
  /**
820
820
  * Dependabot updates land on the repository's integration branch. Direct
821
- * repositories have no staging branch, so every update targets main. Cargo,
822
- * npm, and pip updates are emitted only when Rust, TypeScript, or Python is
823
- * part of the configured language set, respectively; weekly updater runs
824
- * fail when an ecosystem has no manifests to read, so unconfigured
825
- * ecosystems are dropped instead of left to error.
821
+ * repositories have no staging branch, so every update targets main. The
822
+ * JavaScript ecosystem block ships as `bun` (the fleet default) and is
823
+ * retargeted to `npm` for consumers whose `package_manager` is npm; Cargo,
824
+ * the JavaScript block, and pip updates are emitted only when Rust,
825
+ * TypeScript, or Python is part of the configured language set,
826
+ * respectively; weekly updater runs fail when an ecosystem has no manifests
827
+ * to read, so unconfigured ecosystems are dropped instead of left to error.
826
828
  *
827
829
  * The billing pause must also cover Dependabot: its update runs execute as
828
830
  * Actions workflows under the `dynamic` event, so the `CI_BILLING_PAUSED`
@@ -843,11 +845,20 @@ export function renderDependabot(content, config, languages) {
843
845
  rendered = stripDependabotEcosystem(rendered, 'cargo')
844
846
  }
845
847
  if (!includesValue(languages, 'typescript')) {
846
- rendered = stripDependabotEcosystem(rendered, 'npm')
848
+ rendered = stripDependabotEcosystem(rendered, 'bun')
847
849
  }
848
850
  if (!includesValue(languages, 'python')) {
849
851
  rendered = stripDependabotEcosystem(rendered, 'pip')
850
852
  }
853
+ if (
854
+ includesValue(languages, 'typescript') &&
855
+ configured(config.package_manager, 'bun') === 'npm'
856
+ ) {
857
+ // The template tracks the fleet's bun majority; an npm-locked consumer
858
+ // needs the npm ecosystem or Dependabot fails with misconfigured_tooling
859
+ // (it cannot read bun.lock).
860
+ rendered = swapBunEcosystemForNpm(rendered)
861
+ }
851
862
  if (configured(config.billing_paused, 'false') === 'true') {
852
863
  rendered = pauseDependabot(rendered)
853
864
  }
@@ -855,6 +866,19 @@ export function renderDependabot(content, config, languages) {
855
866
  return rendered.replaceAll('target-branch: staging', 'target-branch: main')
856
867
  }
857
868
 
869
+ /**
870
+ * Retarget the JavaScript ecosystem block to npm for npm-locked consumers.
871
+ * Exact-string based so template drift fails loudly at Dependabot time
872
+ * instead of silently scanning the wrong lockfile.
873
+ * @param {string} content
874
+ * @returns {string}
875
+ */
876
+ function swapBunEcosystemForNpm(content) {
877
+ return content
878
+ .replace(' - package-ecosystem: bun\n', ' - package-ecosystem: npm\n')
879
+ .replace(' bun-dependencies:\n', ' npm-dependencies:\n')
880
+ }
881
+
858
882
  /**
859
883
  * Disable Dependabot version updates for every remaining ecosystem. The
860
884
  * transformations are regex-based so they hold for any ecosystem count and