@bongos/core 1.19.436 → 1.19.437
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/.bongos-core.json +10 -10
- package/docs/module-api-changelog.md +2 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/stop_refcheck.mjs +56 -0
package/.bongos-core.json
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.437",
|
|
6
|
+
"core_contract": "1.19.437",
|
|
7
|
+
"source_commit": "a19cfca1c4490ec543603d83defdefb98de8da80",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-30T03:08:23.716Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 369,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 2135,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "a3d39a99e32c492d5ae17ae906d89add5544bc902225fa056e0c6c8f9f4110ca",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -1997,7 +1997,7 @@
|
|
|
1997
1997
|
{
|
|
1998
1998
|
"path": "docs/module-api-changelog.md",
|
|
1999
1999
|
"mode": "0000644",
|
|
2000
|
-
"sha256": "
|
|
2000
|
+
"sha256": "eb14f5a0f47e80dfc687ef5193e73de5da6d937a90e88ad71bb4e2e6d70c2ad3"
|
|
2001
2001
|
},
|
|
2002
2002
|
{
|
|
2003
2003
|
"path": "docs/modules-contract.md",
|
|
@@ -5607,12 +5607,12 @@
|
|
|
5607
5607
|
{
|
|
5608
5608
|
"path": "package-lock.json",
|
|
5609
5609
|
"mode": "0000644",
|
|
5610
|
-
"sha256": "
|
|
5610
|
+
"sha256": "38ae27226a931dea4012fd645931624e0592a047c14350cfd0c5252b2230c0d6"
|
|
5611
5611
|
},
|
|
5612
5612
|
{
|
|
5613
5613
|
"path": "package.json",
|
|
5614
5614
|
"mode": "0000644",
|
|
5615
|
-
"sha256": "
|
|
5615
|
+
"sha256": "54a547f0c6490348fe2695d83d7a0639fd9c583a0472bc3974db590ee23e1434"
|
|
5616
5616
|
},
|
|
5617
5617
|
{
|
|
5618
5618
|
"path": "public-docs/index.html",
|
|
@@ -7747,7 +7747,7 @@
|
|
|
7747
7747
|
{
|
|
7748
7748
|
"path": "src/module-api.js",
|
|
7749
7749
|
"mode": "0000644",
|
|
7750
|
-
"sha256": "
|
|
7750
|
+
"sha256": "0537028fe74fccf01b238c487a133a416cedfcdceba1d212c4259f50101c6014"
|
|
7751
7751
|
},
|
|
7752
7752
|
{
|
|
7753
7753
|
"path": "src/module-loader/catalog.js",
|
|
@@ -10472,7 +10472,7 @@
|
|
|
10472
10472
|
{
|
|
10473
10473
|
"path": "tests/stop_refcheck.mjs",
|
|
10474
10474
|
"mode": "0000644",
|
|
10475
|
-
"sha256": "
|
|
10475
|
+
"sha256": "a95e75e1cd3fe6cb6d48a8a082a8d2339eaae8589e5091fe83d88e6f106cc717"
|
|
10476
10476
|
},
|
|
10477
10477
|
{
|
|
10478
10478
|
"path": "tests/strand_watch.mjs",
|
|
@@ -1309,5 +1309,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1309
1309
|
landed since 1.19.434 with no explicit bump. run 33286790214. (task 1002620)
|
|
1310
1310
|
1.19.436 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1311
1311
|
landed since 1.19.435 with no explicit bump. run 33288364716. (task 1002620)
|
|
1312
|
+
1.19.437 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1313
|
+
landed since 1.19.436 with no explicit bump. run 33289560561. (task 1002620)
|
|
1312
1314
|
---------------------------------------------------------------------------
|
|
1313
1315
|
```
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.437",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.437",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.437",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
package/src/module-api.js
CHANGED
|
@@ -33,7 +33,7 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
33
33
|
// there. scripts/gds/bump-version.js still rewrites the literal below; it appends
|
|
34
34
|
// the entry to that file. Look for a version's history there, not here.
|
|
35
35
|
// ---------------------------------------------------------------------------
|
|
36
|
-
const CORE_VERSION = '1.19.
|
|
36
|
+
const CORE_VERSION = '1.19.437'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
37
37
|
|
|
38
38
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
39
39
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
package/tests/stop_refcheck.mjs
CHANGED
|
@@ -141,5 +141,61 @@ t('lastAssistantText returns the final assistant text, skipping tool_use blocks'
|
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
143
|
|
|
144
|
+
// ---- the process contract, spawned like the harness does (task 1003432) ----
|
|
145
|
+
// The hook used to abort on Windows at turn end (libuv UV_HANDLE_CLOSING) because
|
|
146
|
+
// process.exit() raced fetch()'s socket teardown. These run the real file: exit
|
|
147
|
+
// code + stdout are the interface, and each case also proves the process ended on
|
|
148
|
+
// its own (no signal / no timeout) — a hang or an abort is the regression.
|
|
149
|
+
// Offline: OTB_REFIDS supplies the allow-list, so no network, no cache.
|
|
150
|
+
import { spawnSync } from 'node:child_process';
|
|
151
|
+
const HOOK = require.resolve('../.claude/hooks/stop-refcheck.js'); // same file the guard above required
|
|
152
|
+
const SPAWN_DIR = fs.mkdtempSync(path.join(os.tmpdir(), 'refcheck-spawn-'));
|
|
153
|
+
function spawnTranscript(text) {
|
|
154
|
+
const p = path.join(SPAWN_DIR, `t-${Math.random().toString(36).slice(2)}.jsonl`);
|
|
155
|
+
fs.writeFileSync(p, JSON.stringify({ type: 'assistant', message: { content: [{ type: 'text', text }] } }) + '\n');
|
|
156
|
+
return p;
|
|
157
|
+
}
|
|
158
|
+
function spawnHook(payload) {
|
|
159
|
+
const r = spawnSync(process.execPath, [HOOK], {
|
|
160
|
+
input: typeof payload === 'string' ? payload : JSON.stringify(payload),
|
|
161
|
+
encoding: 'utf8',
|
|
162
|
+
timeout: 8000,
|
|
163
|
+
env: { ...process.env, OTB_REFIDS: '1,2,3' },
|
|
164
|
+
});
|
|
165
|
+
assert.equal(r.signal, null, `hook must exit on its own, not be killed: ${r.stderr}`);
|
|
166
|
+
assert.ok(!/Assertion failed/.test(r.stderr || ''), `no libuv abort on teardown: ${r.stderr}`);
|
|
167
|
+
return r;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
t('spawned: no bare ref → exit 0, no output, clean teardown', () => {
|
|
171
|
+
const r = spawnHook({ transcript_path: spawnTranscript('shipped task 1003365 cleanly'), stop_hook_active: false });
|
|
172
|
+
assert.equal(r.status, 0);
|
|
173
|
+
assert.equal(r.stdout.trim(), '');
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
t('spawned: an allow-listed bare ref → the block decision on stdout, exit 0', () => {
|
|
177
|
+
const r = spawnHook({ transcript_path: spawnTranscript('see #2 for details'), stop_hook_active: false });
|
|
178
|
+
assert.equal(r.status, 0);
|
|
179
|
+
const out = JSON.parse(r.stdout);
|
|
180
|
+
assert.equal(out.decision, 'block');
|
|
181
|
+
assert.ok(out.reason.includes('#2'));
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
t('spawned: stop_hook_active → exit 0 (never loops the re-emit)', () => {
|
|
185
|
+
const r = spawnHook({ transcript_path: spawnTranscript('see #2'), stop_hook_active: true });
|
|
186
|
+
assert.equal(r.status, 0);
|
|
187
|
+
assert.equal(r.stdout.trim(), '');
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
t('spawned: malformed / empty stdin or a missing transcript → exit 0 (fail open)', () => {
|
|
191
|
+
for (const payload of ['', '{not json', JSON.stringify({ transcript_path: path.join(SPAWN_DIR, 'nope.jsonl') })]) {
|
|
192
|
+
const r = spawnHook(payload);
|
|
193
|
+
assert.equal(r.status, 0, `payload ${JSON.stringify(payload)}`);
|
|
194
|
+
assert.equal(r.stdout.trim(), '');
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
fs.rmSync(SPAWN_DIR, { recursive: true, force: true });
|
|
199
|
+
|
|
144
200
|
console.log(`\nstop_refcheck: ${passed} passed, ${failed} failed`);
|
|
145
201
|
process.exit(failed ? 1 : 0);
|