code-foundry 1.28.10 → 1.28.12
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/.github/workflows/ci.yml
CHANGED
|
@@ -53,6 +53,7 @@ jobs:
|
|
|
53
53
|
name: Format
|
|
54
54
|
if: vars.CI_BILLING_PAUSED != 'true'
|
|
55
55
|
runs-on: ${{ inputs.runner }}
|
|
56
|
+
timeout-minutes: 30
|
|
56
57
|
steps:
|
|
57
58
|
- name: Checkout
|
|
58
59
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
@@ -112,6 +113,7 @@ jobs:
|
|
|
112
113
|
name: Lint
|
|
113
114
|
if: vars.CI_BILLING_PAUSED != 'true'
|
|
114
115
|
runs-on: ${{ inputs.runner }}
|
|
116
|
+
timeout-minutes: 30
|
|
115
117
|
steps:
|
|
116
118
|
- name: Checkout
|
|
117
119
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
@@ -166,6 +168,7 @@ jobs:
|
|
|
166
168
|
name: Type-Check
|
|
167
169
|
if: vars.CI_BILLING_PAUSED != 'true'
|
|
168
170
|
runs-on: ${{ inputs.runner }}
|
|
171
|
+
timeout-minutes: 30
|
|
169
172
|
steps:
|
|
170
173
|
- name: Checkout
|
|
171
174
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
@@ -220,6 +223,7 @@ jobs:
|
|
|
220
223
|
name: Build
|
|
221
224
|
if: vars.CI_BILLING_PAUSED != 'true'
|
|
222
225
|
runs-on: ${{ inputs.runner }}
|
|
226
|
+
timeout-minutes: 30
|
|
223
227
|
env:
|
|
224
228
|
# Framework builds may validate server-side configuration at build time.
|
|
225
229
|
# Consumers can provide the real value; the fallback is intentionally
|
|
@@ -16,6 +16,7 @@ jobs:
|
|
|
16
16
|
name: OpenCode Security / Detect
|
|
17
17
|
if: vars.CI_BILLING_PAUSED != 'true' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.draft == false))
|
|
18
18
|
runs-on: ubuntu-slim
|
|
19
|
+
timeout-minutes: 10
|
|
19
20
|
outputs:
|
|
20
21
|
enabled: ${{ steps.detect.outputs.enabled }}
|
|
21
22
|
token: ${{ steps.detect.outputs.token }}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.28.12](https://github.com/0xPlayerOne/code-foundry/compare/v1.28.11...v1.28.12) (2026-09-11)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Maintenance
|
|
7
|
+
|
|
8
|
+
* **fleet:** add explicit inventory manifest ([#618](https://github.com/0xPlayerOne/code-foundry/issues/618)) ([0771878](https://github.com/0xPlayerOne/code-foundry/commit/077187817728f3d4eb40333b6e6d07fa533a9780))
|
|
9
|
+
|
|
10
|
+
## [1.28.11](https://github.com/0xPlayerOne/code-foundry/compare/v1.28.10...v1.28.11) (2026-09-11)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **fleet:** bound rendered jobs with timeouts and refresh stale runtime pins ([#616](https://github.com/0xPlayerOne/code-foundry/issues/616)) ([f8d20b4](https://github.com/0xPlayerOne/code-foundry/commit/f8d20b4ad48cddd20630ff9b7c1c21d0c5ac9520))
|
|
16
|
+
|
|
3
17
|
## [1.28.10](https://github.com/0xPlayerOne/code-foundry/compare/v1.28.9...v1.28.10) (2026-09-11)
|
|
4
18
|
|
|
5
19
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-foundry",
|
|
3
|
-
"version": "1.28.
|
|
3
|
+
"version": "1.28.12",
|
|
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": {
|
package/src/commands/sync.mjs
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
chmodSync,
|
|
5
|
+
existsSync,
|
|
6
|
+
mkdirSync,
|
|
7
|
+
readdirSync,
|
|
8
|
+
readFileSync,
|
|
9
|
+
rmSync,
|
|
10
|
+
writeFileSync,
|
|
11
|
+
} from 'node:fs'
|
|
4
12
|
import { dirname, join, resolve } from 'node:path'
|
|
5
13
|
import { spawnSync } from 'node:child_process'
|
|
6
14
|
import {
|
|
@@ -321,6 +329,37 @@ function synchronize(options) {
|
|
|
321
329
|
}
|
|
322
330
|
}
|
|
323
331
|
|
|
332
|
+
// Preserved (repository-owned) workflows may reference the runtime directly,
|
|
333
|
+
// for example a hand-maintained Cloudflare preview caller. Advance their
|
|
334
|
+
// plain semver pins to the synced runtime ref so a stale hand-added pin
|
|
335
|
+
// cannot keep an old runtime alive after a fleet upgrade. Intentional refs
|
|
336
|
+
// (branch names, immutable SHAs) and other repositories' actions are left
|
|
337
|
+
// untouched, mirroring the config pin policy above.
|
|
338
|
+
if (!selfRepository && /^v\d+\.\d+\.\d+$/.test(runtimeRef)) {
|
|
339
|
+
const standard = new Set(standardFiles)
|
|
340
|
+
const workflowsDir = join(target, '.github/workflows')
|
|
341
|
+
if (existsSync(workflowsDir)) {
|
|
342
|
+
const runtimePin = new RegExp(
|
|
343
|
+
`(uses:\\s*${escapeRegExp(runtimeRepository)}/\\.github/(?:workflows|actions)/[^\\s@]+)@v\\d+\\.\\d+\\.\\d+`,
|
|
344
|
+
'g'
|
|
345
|
+
)
|
|
346
|
+
for (const entry of readdirSync(workflowsDir).toSorted()) {
|
|
347
|
+
if (!entry.endsWith('.yml') || standard.has(`.github/workflows/${entry}`)) continue
|
|
348
|
+
const destination = join(workflowsDir, entry)
|
|
349
|
+
const original = readFileSync(destination, 'utf8')
|
|
350
|
+
const updated = original.replace(runtimePin, `$1@${runtimeRef}`)
|
|
351
|
+
if (updated !== original) {
|
|
352
|
+
changed.push(`.github/workflows/${entry}`)
|
|
353
|
+
if (dryRun)
|
|
354
|
+
console.log(
|
|
355
|
+
`Would refresh the runtime pin in .github/workflows/${entry} to ${runtimeRef}.`
|
|
356
|
+
)
|
|
357
|
+
else writeOrReport(destination, updated, dryRun)
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
324
363
|
// A repository that no longer opts into the staging-release topology must
|
|
325
364
|
// not keep a generated staging promotion caller that would otherwise
|
|
326
365
|
// linger dormant (it triggers on pushes to a branch that does not exist).
|