@bongos/core 1.19.202 → 1.19.203
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 +16 -11
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/capture.js +15 -1
- package/src/module-api.js +3 -1
- package/tests/capture_error_format.mjs +40 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
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.203",
|
|
6
|
+
"core_contract": "1.19.203",
|
|
7
|
+
"source_commit": "3596d383ae4955438fc6ab7f9599e680ddafb570",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-17T19:
|
|
9
|
+
"built_at": "2026-08-17T19:20:16.116Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 310,
|
|
13
13
|
"agent_docs_stubbed": 21,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1295,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1626,
|
|
20
|
+
"tree_sha256": "d4a2fd8d4540f54177859f2312a5a48c6539b34b12e1e61757d0b242f92be615",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -4272,12 +4272,12 @@
|
|
|
4272
4272
|
{
|
|
4273
4273
|
"path": "package-lock.json",
|
|
4274
4274
|
"mode": "0000644",
|
|
4275
|
-
"sha256": "
|
|
4275
|
+
"sha256": "30f113e605eea7d404a3393045402c6234a6822724656d0830a5a553a6215fac"
|
|
4276
4276
|
},
|
|
4277
4277
|
{
|
|
4278
4278
|
"path": "package.json",
|
|
4279
4279
|
"mode": "0000644",
|
|
4280
|
-
"sha256": "
|
|
4280
|
+
"sha256": "fa8341a0a90d43e710d3f9e04589ce7f055c8f180cf915f28fa074b0b9206977"
|
|
4281
4281
|
},
|
|
4282
4282
|
{
|
|
4283
4283
|
"path": "public-docs/index.html",
|
|
@@ -4727,7 +4727,7 @@
|
|
|
4727
4727
|
{
|
|
4728
4728
|
"path": "scripts/gds/capture.js",
|
|
4729
4729
|
"mode": "0000644",
|
|
4730
|
-
"sha256": "
|
|
4730
|
+
"sha256": "208bfd6c6a73f4234c06bb26e3319ec43ecf865927333bc810ca99efa9745e90"
|
|
4731
4731
|
},
|
|
4732
4732
|
{
|
|
4733
4733
|
"path": "scripts/gds/cf-tunnel.js",
|
|
@@ -5887,7 +5887,7 @@
|
|
|
5887
5887
|
{
|
|
5888
5888
|
"path": "src/module-api.js",
|
|
5889
5889
|
"mode": "0000644",
|
|
5890
|
-
"sha256": "
|
|
5890
|
+
"sha256": "f5b425d9be5b552f40d72f31cd96dbcb901b15478ed7a60a35221aaeb09b4fb7"
|
|
5891
5891
|
},
|
|
5892
5892
|
{
|
|
5893
5893
|
"path": "src/module-loader/catalog.js",
|
|
@@ -6289,6 +6289,11 @@
|
|
|
6289
6289
|
"mode": "0000644",
|
|
6290
6290
|
"sha256": "5cd314c415b3e4e0b89a762cd622d9b0eb58e3659df76e78c816ca501368febf"
|
|
6291
6291
|
},
|
|
6292
|
+
{
|
|
6293
|
+
"path": "tests/capture_error_format.mjs",
|
|
6294
|
+
"mode": "0000644",
|
|
6295
|
+
"sha256": "bf8b5407d5e1234a74399f3a1e80acc44f9fabdfcfbccc3d64ca57d66f8e3085"
|
|
6296
|
+
},
|
|
6292
6297
|
{
|
|
6293
6298
|
"path": "tests/cascade-dispatch.mjs",
|
|
6294
6299
|
"mode": "0000644",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.203",
|
|
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.203",
|
|
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.203",
|
|
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/scripts/gds/capture.js
CHANGED
|
@@ -47,6 +47,18 @@ async function resolveDefaultVersion() {
|
|
|
47
47
|
return building[0].id;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
// Full JSON, not console.error's depth-2 inspect — a validation 400's nested
|
|
51
|
+
// details otherwise print as "[ [Object] ]" and hide which field failed.
|
|
52
|
+
function formatCaptureFailure(status, data) {
|
|
53
|
+
let rendered;
|
|
54
|
+
try {
|
|
55
|
+
rendered = JSON.stringify(data, null, 2);
|
|
56
|
+
} catch {
|
|
57
|
+
rendered = String(data);
|
|
58
|
+
}
|
|
59
|
+
return `capture failed (${status}): ${rendered}`;
|
|
60
|
+
}
|
|
61
|
+
|
|
50
62
|
async function main() {
|
|
51
63
|
await requireSession();
|
|
52
64
|
const args = process.argv.slice(2);
|
|
@@ -94,7 +106,7 @@ async function main() {
|
|
|
94
106
|
const api = await cliClient();
|
|
95
107
|
const r = await api.inbox.postInbox({ body: payload });
|
|
96
108
|
if (!r.ok) {
|
|
97
|
-
console.error(
|
|
109
|
+
console.error(formatCaptureFailure(r.status, r.data));
|
|
98
110
|
process.exit(1);
|
|
99
111
|
}
|
|
100
112
|
|
|
@@ -115,6 +127,8 @@ async function main() {
|
|
|
115
127
|
// referred to; promotion to a task re-runs the detection automatically.
|
|
116
128
|
}
|
|
117
129
|
|
|
130
|
+
module.exports = { resolveDefaultVersion, formatCaptureFailure };
|
|
131
|
+
|
|
118
132
|
if (require.main === module) {
|
|
119
133
|
main().catch((err) => {
|
|
120
134
|
console.error('fatal:', err);
|
package/src/module-api.js
CHANGED
|
@@ -831,8 +831,10 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
831
831
|
// landed since 1.19.200 with no explicit bump. run 32058666256. (task 1002620)
|
|
832
832
|
// 1.19.202 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
833
833
|
// landed since 1.19.201 with no explicit bump. run 32059276345. (task 1002620)
|
|
834
|
+
// 1.19.203 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
835
|
+
// landed since 1.19.202 with no explicit bump. run 32059705946. (task 1002620)
|
|
834
836
|
// ---------------------------------------------------------------------------
|
|
835
|
-
const CORE_VERSION = '1.19.
|
|
837
|
+
const CORE_VERSION = '1.19.203'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
836
838
|
|
|
837
839
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
838
840
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// capture.js error formatting (task 1003056, idea 1000780): a 400 from POST
|
|
2
|
+
// /inbox must print the nested validation details, not util.inspect's
|
|
3
|
+
// depth-clipped "[ [Object] ]" — the caller needs to see WHICH field failed.
|
|
4
|
+
import assert from 'node:assert/strict';
|
|
5
|
+
import { createRequire } from 'node:module';
|
|
6
|
+
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const { formatCaptureFailure } = require('../scripts/gds/capture.js');
|
|
9
|
+
|
|
10
|
+
let passed = 0;
|
|
11
|
+
let failed = 0;
|
|
12
|
+
async function test(name, fn) {
|
|
13
|
+
try { await fn(); passed++; console.log(` ok ${name}`); }
|
|
14
|
+
catch (err) { failed++; console.log(` FAIL ${name}`); console.log(` ${err.stack || err.message}`); }
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
await test('nested validation details are fully rendered, never [Object]', () => {
|
|
18
|
+
const out = formatCaptureFailure(400, {
|
|
19
|
+
error: {
|
|
20
|
+
code: 'validation_failed',
|
|
21
|
+
message: 'validation_failed',
|
|
22
|
+
details: [{ field: 'title', reason: 'exceeds max length 200' }],
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
assert.match(out, /capture failed \(400\)/);
|
|
26
|
+
assert.match(out, /exceeds max length 200/);
|
|
27
|
+
assert.match(out, /"field": "title"/);
|
|
28
|
+
assert.doesNotMatch(out, /\[Object\]/);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
await test('non-JSON-serializable data still produces a printable line', () => {
|
|
32
|
+
const circular = {};
|
|
33
|
+
circular.self = circular;
|
|
34
|
+
const out = formatCaptureFailure(500, circular);
|
|
35
|
+
assert.match(out, /capture failed \(500\)/);
|
|
36
|
+
assert.equal(typeof out, 'string');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
console.log(`\ncapture_error_format: ${passed} passed, ${failed} failed`);
|
|
40
|
+
if (failed > 0) process.exit(1);
|