@bongos/core 1.19.61 → 1.19.63
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 +13 -13
- package/docs/file-map.md +1 -0
- package/modules/dev-box/app/test/unit.mjs +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/bongos/module-scope-map.js +16 -0
- package/src/module-api.js +5 -1
- package/tests/infra_exec_paths.mjs +10 -6
- package/tests/module-scope-map.mjs +13 -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.63",
|
|
6
|
+
"core_contract": "1.19.63",
|
|
7
|
+
"source_commit": "aecb337d2bcfb665111227e9aebaffa93f867699",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-12T01:29:46.616Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 291,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 1532,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "165231bc8a6ec61199f57070fc8267562e283cff9b5804d340d4f3b57cc98de2",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -1377,7 +1377,7 @@
|
|
|
1377
1377
|
{
|
|
1378
1378
|
"path": "docs/file-map.md",
|
|
1379
1379
|
"mode": "0000644",
|
|
1380
|
-
"sha256": "
|
|
1380
|
+
"sha256": "4b3ee1ce8445659a2660263cbbd9e2a903d010410b8ff8f89e2ed61ed54c6eab"
|
|
1381
1381
|
},
|
|
1382
1382
|
{
|
|
1383
1383
|
"path": "docs/handoff-template.md",
|
|
@@ -2557,7 +2557,7 @@
|
|
|
2557
2557
|
{
|
|
2558
2558
|
"path": "modules/dev-box/app/test/unit.mjs",
|
|
2559
2559
|
"mode": "0000644",
|
|
2560
|
-
"sha256": "
|
|
2560
|
+
"sha256": "104360917db40f8c6de633ed692b50417e5cf55f316d97fc4d29285046ff2324"
|
|
2561
2561
|
},
|
|
2562
2562
|
{
|
|
2563
2563
|
"path": "modules/dev-box/box-access.js",
|
|
@@ -4037,12 +4037,12 @@
|
|
|
4037
4037
|
{
|
|
4038
4038
|
"path": "package-lock.json",
|
|
4039
4039
|
"mode": "0000644",
|
|
4040
|
-
"sha256": "
|
|
4040
|
+
"sha256": "ec06847fa5cf675d4847afeed5612e44a0fd336694a1187d342a9f60ef957b09"
|
|
4041
4041
|
},
|
|
4042
4042
|
{
|
|
4043
4043
|
"path": "package.json",
|
|
4044
4044
|
"mode": "0000644",
|
|
4045
|
-
"sha256": "
|
|
4045
|
+
"sha256": "612d7a22ac1c386d80c1c99b9aa52d70363c8a7a4f8ffb0598624c995578f060"
|
|
4046
4046
|
},
|
|
4047
4047
|
{
|
|
4048
4048
|
"path": "public-docs/index.html",
|
|
@@ -5497,7 +5497,7 @@
|
|
|
5497
5497
|
{
|
|
5498
5498
|
"path": "src/bongos/module-scope-map.js",
|
|
5499
5499
|
"mode": "0000644",
|
|
5500
|
-
"sha256": "
|
|
5500
|
+
"sha256": "a5c939de500ba39d12f09e053e3b9079510716cb4af18cad0e13482952b02904"
|
|
5501
5501
|
},
|
|
5502
5502
|
{
|
|
5503
5503
|
"path": "src/bongos/module-submissions.js",
|
|
@@ -5662,7 +5662,7 @@
|
|
|
5662
5662
|
{
|
|
5663
5663
|
"path": "src/module-api.js",
|
|
5664
5664
|
"mode": "0000644",
|
|
5665
|
-
"sha256": "
|
|
5665
|
+
"sha256": "dfd274bc93670afa2368e0abea4d79ab5bd415996ed11c56a14cbafb449aafc6"
|
|
5666
5666
|
},
|
|
5667
5667
|
{
|
|
5668
5668
|
"path": "src/module-loader/loader.js",
|
|
@@ -6742,7 +6742,7 @@
|
|
|
6742
6742
|
{
|
|
6743
6743
|
"path": "tests/infra_exec_paths.mjs",
|
|
6744
6744
|
"mode": "0000644",
|
|
6745
|
-
"sha256": "
|
|
6745
|
+
"sha256": "2b905b00f873e082340af0fb6b460a31053d8b6cb77db121c97ed73383088973"
|
|
6746
6746
|
},
|
|
6747
6747
|
{
|
|
6748
6748
|
"path": "tests/init.mjs",
|
|
@@ -6927,7 +6927,7 @@
|
|
|
6927
6927
|
{
|
|
6928
6928
|
"path": "tests/module-scope-map.mjs",
|
|
6929
6929
|
"mode": "0000644",
|
|
6930
|
-
"sha256": "
|
|
6930
|
+
"sha256": "a1059f1995ba2b98436df0c4965a87b20e7553b6b72e80bb724c0b861e347ecf"
|
|
6931
6931
|
},
|
|
6932
6932
|
{
|
|
6933
6933
|
"path": "tests/module_api.mjs",
|
package/docs/file-map.md
CHANGED
|
@@ -226,6 +226,7 @@
|
|
|
226
226
|
│ (public-status/ moved to modules/status-ui/public/ in BV1.R84 — see the modules/ block above)
|
|
227
227
|
│ (public-builders/ moved to modules/hall-ui/public/ in BV1.R85 — the authenticated builders' hall; see the modules/ block above. It keeps its DEDICATED serving block in src/bongos/serve-internal.js: the builders.<apex> + apex /builders/* shim, canonical redirects, the citizen/Archon page gates, asset-stamping, and the module hall-widget injection — partitioned out of the generic web-surface loop. index.html=the hall dashboard; work/board/roadmap/goals/watch/harbor/gate/pair/settings/ranks/sessions/primer/diagrams/atlas pages; profile.html/profile.js=the public, shareable builder profile page (/profile?id=N — rank, works, credits, karma, achievements; task 1467); task.html/task.js=the task-detail page (/task/:id, task 751 — replaced the old #/task/N overlay); builders.js=the controller; dom-utils.js/hall-widgets.js=the widget+settings-panel registries.)
|
|
228
228
|
│
|
|
229
|
+
├── infra/ ← ON-BOX scripts (task 1002699): the four reporter/heartbeat crons every dev box runs from its /workspace clone — box-heartbeat.sh (idle-sweep activity signal), box-report-version.sh (HEAD → POST /box/version), box-report-host-keys.sh (SSH host keys → POST /box/host-keys), box-report-terminal.sh (ttyd URL+credential → POST /box/terminal). Delivered by the workspace clone itself (modules/dev-box/box-access.js sparse scope includes infra/); crons self-installed by box-source-fetch.sh's per-tick bring-up. API base resolves GDS_BASE env → session-file api_base → skip (no hardcoded host in the neutral core).
|
|
229
230
|
├── devbox-app/ ← OTB Dev Box — Electron menu-bar/tray switch for the builder's box (#904, ADR 0045; internal). SELF-CONTAINED: own package.json (never feeds the droplet's npm ci); built by .github/workflows/build-devbox-app.yml; published to the public releases repo per config/devbox-app.json; release recipe docs/recipes/devbox-app-release.md
|
|
230
231
|
│ ├── src/ ← main process: main.js (tray/window/IPC), brand.js (ADR 0004 — the ONE civ-name string), pairing.js, box-controller.js, gds-client.js, session-store.js (shares ~/.config/otb/gds-session.json with the CLI), ssh-setup.js (key 600 + known_hosts replace + managed-settings install w/ elevation), tray.js, preload.js
|
|
231
232
|
│ ├── renderer/ ← the panel UI (sandboxed; parchment theme)
|
|
@@ -447,7 +447,7 @@ const ENDPOINTS = [
|
|
|
447
447
|
['claimableTasks', [], 'GET', '/api/gds/tasks/claimable', undefined],
|
|
448
448
|
['claimTask', ['1002388'], 'POST', '/api/gds/claims', { task_id: '1002388' }],
|
|
449
449
|
['boxScope', [], 'GET', '/api/gds/box/scope', undefined],
|
|
450
|
-
['latestRelease', [], 'GET', '/downloads/devbox/
|
|
450
|
+
['latestRelease', [], 'GET', '/downloads/devbox/version', undefined],
|
|
451
451
|
];
|
|
452
452
|
|
|
453
453
|
for (const [name, args, method, urlPath, body] of ENDPOINTS) {
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.63",
|
|
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.63",
|
|
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.63",
|
|
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",
|
|
@@ -192,6 +192,13 @@ const MODULE_GLOBS = {
|
|
|
192
192
|
// (moduleWebSurfaces → serve-internal). Its public read endpoints stay SHARED
|
|
193
193
|
// core in routes/public.js (the hall + the off-box mirror consume them too).
|
|
194
194
|
'status-ui': ['modules/status-ui/'],
|
|
195
|
+
// The instance's public landing surface (index/world/gate/create), served by
|
|
196
|
+
// platform-server.js from the repo-root public-landing/ dir — not yet a carved
|
|
197
|
+
// module, so the glob lists where the code lives TODAY (the auto-tighten
|
|
198
|
+
// contract above). Its own key, not provisioning's: the front door is broader
|
|
199
|
+
// than instance hosting, and the web-surface precedent (hall-ui/status-ui) is
|
|
200
|
+
// one key per surface (task 1002690, goal 1000059).
|
|
201
|
+
'public-landing': ['public-landing/'],
|
|
195
202
|
// --- feature modules ---
|
|
196
203
|
// BV1.R49: game graduated to modules/game/ — src/rooms/, src/world/, src/seats.js,
|
|
197
204
|
// src/db.js, migrations/game/, and public/ all moved there. src/preview-server.js
|
|
@@ -200,6 +207,15 @@ const MODULE_GLOBS = {
|
|
|
200
207
|
'modules/game/', 'src/preview-server.js',
|
|
201
208
|
],
|
|
202
209
|
'art-pipeline': ['modules/art-pipeline/'],
|
|
210
|
+
// --- instance provisioning: the web-tier REQUEST + STATE surface (module home)
|
|
211
|
+
// plus the control-plane runner CLI — a command travels with its domain (the
|
|
212
|
+
// lifecycle/dev-box precedent). Covers the projects-surface work (goal
|
|
213
|
+
// 1000059); previously NO key resolved these paths, so no goal could wall
|
|
214
|
+
// them (task 1002690). ---
|
|
215
|
+
provisioning: [
|
|
216
|
+
'modules/provisioning/',
|
|
217
|
+
'scripts/gds/provision.js',
|
|
218
|
+
],
|
|
203
219
|
discord: [
|
|
204
220
|
// The bot, broadcast, link/role seams, channels, and bug-attachments graduated
|
|
205
221
|
// into modules/discord/ (BV1.R47); the outbound webhook lib + post CLI stay
|
package/src/module-api.js
CHANGED
|
@@ -549,8 +549,12 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
549
549
|
// landed since 1.19.59 with no explicit bump. run 31548021746. (task 1002620)
|
|
550
550
|
// 1.19.61 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
551
551
|
// landed since 1.19.60 with no explicit bump. run 31550061440. (task 1002620)
|
|
552
|
+
// 1.19.62 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
553
|
+
// landed since 1.19.61 with no explicit bump. run 31552833331. (task 1002620)
|
|
554
|
+
// 1.19.63 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
555
|
+
// landed since 1.19.62 with no explicit bump. run 31553743979. (task 1002620)
|
|
552
556
|
// ---------------------------------------------------------------------------
|
|
553
|
-
const CORE_VERSION = '1.19.
|
|
557
|
+
const CORE_VERSION = '1.19.63'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
554
558
|
|
|
555
559
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
556
560
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
|
@@ -31,18 +31,22 @@ function test(name, fn) {
|
|
|
31
31
|
catch (err) { console.error(` FAIL ${name}`); console.error(' ', err.message); failed++; }
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
|
|
34
|
+
// Host topology means systemd UNITS, not the bare infra/ directory: the neutral core
|
|
35
|
+
// carries no units and no launcher (task 1002470), but it DOES ship the four ON-BOX
|
|
36
|
+
// reporter scripts in infra/ (task 1002699 — dev boxes clone this repo and wire them
|
|
37
|
+
// as crons). So the real-tree unit lint is gated on *.service files being present,
|
|
38
|
+
// and the launcher checks on core-node.sh — the synthetic counterfactuals always run.
|
|
39
|
+
const INFRA_DIR = path.join(REPO, 'infra');
|
|
40
|
+
const HAS_UNITS = fs.existsSync(INFRA_DIR) &&
|
|
41
|
+
fs.readdirSync(INFRA_DIR).some((f) => f.endsWith('.service'));
|
|
38
42
|
const HAS_LAUNCHER = fs.existsSync(LAUNCHER);
|
|
39
43
|
function hostTest(name, present, fn) {
|
|
40
|
-
if (!present) { console.log(` skip ${name} —
|
|
44
|
+
if (!present) { console.log(` skip ${name} — host topology (units/launcher) absent in this checkout`); return; }
|
|
41
45
|
test(name, fn);
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
// ---- A. the lint is green on the real tree, and covers all 11 core-script units ----------------
|
|
45
|
-
hostTest('lint-infra-exec: every core-script unit resolves in a consumer layout (publishable + present)',
|
|
49
|
+
hostTest('lint-infra-exec: every core-script unit resolves in a consumer layout (publishable + present)', HAS_UNITS, () => {
|
|
46
50
|
const r = lintInfraExec({ instanceRoot: REPO, coreRoot: REPO });
|
|
47
51
|
assert.deepEqual(r.violations, [], `expected no violations, got: ${JSON.stringify(r.violations)}`);
|
|
48
52
|
assert.ok(r.ok, 'lint should pass');
|
|
@@ -86,3 +86,16 @@ test('the exported roster is frozen (immutable scope wall)', () => {
|
|
|
86
86
|
assert.ok(Object.isFrozen(scope.scopeForModule('kernel')));
|
|
87
87
|
assert.ok(Object.isFrozen(scope.scopeForModule('kernel').globs));
|
|
88
88
|
});
|
|
89
|
+
|
|
90
|
+
test('provisioning + public-landing joined the roster (task 1002690) — territory resolvable, non-protected', () => {
|
|
91
|
+
// Before this, modules/provisioning/ and public-landing/ were covered by NO
|
|
92
|
+
// key, so no goal could wall the projects-surface work (goal 1000059).
|
|
93
|
+
for (const k of ['provisioning', 'public-landing']) {
|
|
94
|
+
assert.ok(scope.isModuleKey(k), `roster missing module "${k}"`);
|
|
95
|
+
assert.equal(scope.isProtectedModule(k), false, `"${k}" must derive non-protected (no PROTECTED_GLOBS overlap)`);
|
|
96
|
+
}
|
|
97
|
+
const prov = scope.globsForModules(['provisioning']);
|
|
98
|
+
assert.ok(prov.includes('modules/provisioning/'), 'provisioning owns its module directory');
|
|
99
|
+
assert.ok(prov.includes('scripts/gds/provision.js'), 'the control-plane runner travels with its domain');
|
|
100
|
+
assert.ok(scope.globsForModules(['public-landing']).includes('public-landing/'), 'public-landing owns its surface directory');
|
|
101
|
+
});
|