@bongos/core 1.19.738 → 1.19.740
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 +15 -15
- package/docs/copy-inventory.md +103 -103
- package/docs/copy-registry.json +161 -161
- package/docs/module-api-changelog.md +4 -0
- package/docs/recipes/private-npm-distribution.md +11 -11
- package/modules/public-landing/public/projects.html +14 -6
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/package-core.js +7 -6
- package/src/module-api.js +1 -1
- package/tests/onboard.mjs +13 -6
|
@@ -1950,5 +1950,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1950
1950
|
landed since 1.19.736 with no explicit bump. run 34795026282. (task 1002620)
|
|
1951
1951
|
1.19.738 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1952
1952
|
landed since 1.19.737 with no explicit bump. run 34797297122. (task 1002620)
|
|
1953
|
+
1.19.739 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1954
|
+
landed since 1.19.738 with no explicit bump. run 34838475604. (task 1002620)
|
|
1955
|
+
1.19.740 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1956
|
+
landed since 1.19.739 with no explicit bump. run 34839732962. (task 1002620)
|
|
1953
1957
|
---------------------------------------------------------------------------
|
|
1954
1958
|
```
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|---|---|---|
|
|
15
15
|
| `@bongos/core` | the platform an instance installs + the `bongos` CLI (`bin`) | `bongos package-core` (`scripts/gds/package-core.js`) — synthesizes the package.json + a pruned lockfile, redacts, and packs a `.tgz` |
|
|
16
16
|
|
|
17
|
-
`@bongos/core` carries `publishConfig: { access: "
|
|
17
|
+
`@bongos/core` carries `publishConfig: { access: "public" }`, and `publishArgs` passes `--access public` as well — both, so neither drifting alone can silently take the package back to restricted ([ADR 0283](../adr/0283-the-core-publishes-publicly-because-access-was-never-the-thing-protecting-it.md)). It read `restricted` until 2026-09-13; what protects the artifact is the no-leak gate on the build, not who may fetch it.
|
|
18
18
|
|
|
19
19
|
The generated typed client (`node scripts/gds/gen-api-client.js` → `clients/bongos-client/`) is deliberately **not** in this table: it is not published, carries no `publishConfig`, and is consumed by vendoring. See its own README.
|
|
20
20
|
|
|
@@ -33,15 +33,15 @@ These involve payment and permanent, account-level actions. They are **not** don
|
|
|
33
33
|
Always preview with a dry-run first (no upload, no login needed):
|
|
34
34
|
|
|
35
35
|
```sh
|
|
36
|
-
# Core — build the tarball and DRY-RUN the
|
|
36
|
+
# Core — build the tarball and DRY-RUN the publish:
|
|
37
37
|
node scripts/gds/package-core.js --publish
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
Look for `
|
|
40
|
+
Look for `public access` and the `@bongos/core@<version>` line. When it looks right, publish for real (this is **permanent and public** — npm can't delete a name after 72h, and the version is never reusable):
|
|
41
41
|
|
|
42
42
|
```sh
|
|
43
43
|
npm login # once per machine (+ 2FA)
|
|
44
|
-
node scripts/gds/package-core.js --publish --live # actually publishes,
|
|
44
|
+
node scripts/gds/package-core.js --publish --live # actually publishes, PUBLIC
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
For the client (note the `./` — without it, npm reads the path as a git package spec, not a folder):
|
|
@@ -101,13 +101,13 @@ A tokenless registry `npm ci` 404s cleanly (`E404 … @bongos/core … could not
|
|
|
101
101
|
|
|
102
102
|
> **Proven end-to-end (2026-07-08, task 2118 / blocker 71).** A real `bongos init --registry-core` scaffold, with a valid read-only token in `NPM_TOKEN`, resolved `@bongos/core@1.17.0` straight from `registry.npmjs.org` and generated a reproducible `package-lock.json`. Both legs are confirmed: the registry pull works with a token and fails closed (404) without one. Provisioning still defaults to the vendored tarball until an owner explicitly sets `PROVISION_CORE_FROM_REGISTRY=1` on a live runner.
|
|
103
103
|
|
|
104
|
-
## Going public
|
|
104
|
+
## Going public — DONE 2026-09-13
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
`@bongos/core` is public ([ADR 0283](../adr/0283-the-core-publishes-publicly-because-access-was-never-the-thing-protecting-it.md), [task 1003872](https://cloudbongos.com/builders#/task/1003872)). `publishConfig.access` is `"public"` and the registry-side status was flipped with the one-time owner step:
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
```sh
|
|
109
|
+
npm access set status=public @bongos/core
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
That registry flip is separate from `--access public` on a publish, which governs only what *that* publish declares and is historically a no-op when re-publishing an already-private package. Verify the flip by a tokenless install from a clean `HOME`, not by the flag's presence. Public installs need no token; the paid private-package seats can be dropped.
|
|
113
113
|
- **Also publish the unscoped vanity name** for `npm install -g cloudbongos` — that is [task 2025](https://example.com/builders#/task/2025) (rename in `package-core.js`/`upgrade.js` + docs), done at launch.
|
|
@@ -985,12 +985,19 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
985
985
|
the reason is stated here, on the path every founder actually takes —
|
|
986
986
|
not only on the Home step's re-connect branch (task 1003232). -->
|
|
987
987
|
<p class="finePrint" id="wizScopeNote">Signing in asks GitHub for repository access. GitHub words this as access to <em>all</em> your repositories — that is the only permission it offers that can write to a private repo. We use it to create (or read) the one repo your project lives in and push its starting files. Nothing else is touched.</p>
|
|
988
|
-
<!-- Trust
|
|
989
|
-
|
|
990
|
-
(
|
|
991
|
-
|
|
988
|
+
<!-- Trust links (task 1003502, superseding task 1002705's license-only fallback).
|
|
989
|
+
TWO links, because the sentence makes two claims: "open source" → the CODE,
|
|
990
|
+
"(AGPL-3.0)" → the licence it is under. The code half was impossible until
|
|
991
|
+
2026-09-13 — the old private-repo URL 404ed, both npm scopes were private,
|
|
992
|
+
and the ADR 0099 mirror is dormant until ~2026-11, which left the licence
|
|
993
|
+
text as the only live artifact. Task 1003872 / ADR 0283 published
|
|
994
|
+
@bongos/core publicly, so the claim now resolves to the platform itself
|
|
995
|
+
(npm renders a README + a browsable Code tab; verified by a tokenless
|
|
996
|
+
`npm pack` from a clean HOME, the ADR 0283 standard). Not @cloudbongos/cli:
|
|
997
|
+
that is the 32-file generated client, a slice of the thing being claimed. -->
|
|
992
998
|
<p class="finePrint">Free while we find our feet. Your project’s repo and server are yours —
|
|
993
|
-
<span data-brand-product-inline>Cloud Bongos</span> is <a href="https://www.
|
|
999
|
+
<span data-brand-product-inline>Cloud Bongos</span> is <a href="https://www.npmjs.com/package/@bongos/core" target="_blank" rel="noopener">open source</a>
|
|
1000
|
+
(<a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank" rel="noopener">AGPL-3.0</a>)
|
|
994
1001
|
and capture-resistant by design.</p>
|
|
995
1002
|
<div class="alert" id="wizGateAlert" role="alert"></div>
|
|
996
1003
|
</section>
|
|
@@ -1016,7 +1023,8 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1016
1023
|
</div>
|
|
1017
1024
|
</form>
|
|
1018
1025
|
<p class="finePrint">Free while we find our feet. Your project’s repo and server are yours —
|
|
1019
|
-
<span data-brand-product-inline>Cloud Bongos</span> is <a href="https://www.
|
|
1026
|
+
<span data-brand-product-inline>Cloud Bongos</span> is <a href="https://www.npmjs.com/package/@bongos/core" target="_blank" rel="noopener">open source</a>
|
|
1027
|
+
(<a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank" rel="noopener">AGPL-3.0</a>)
|
|
1020
1028
|
and capture-resistant by design.</p>
|
|
1021
1029
|
</section>
|
|
1022
1030
|
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.740",
|
|
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.740",
|
|
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.740",
|
|
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",
|
|
@@ -580,7 +580,8 @@ function publishArgs(tgzPath, live) {
|
|
|
580
580
|
|
|
581
581
|
// Publish (or dry-run) the built .tgz to npm. Auth is npm's own concern — this
|
|
582
582
|
// never holds a token; it shells out to `npm publish` and the owner's `npm login`
|
|
583
|
-
//
|
|
583
|
+
// provides it. The package is PUBLIC (task 1003872, ADR 0283), so no paid org plan
|
|
584
|
+
// is involved — a public scoped publish needs none.
|
|
584
585
|
// The child's stdout is routed to OUR stderr so main()'s machine-readable pin on
|
|
585
586
|
// stdout stays clean for CI capture.
|
|
586
587
|
function publishTarball({ tgzPath, live }) {
|
|
@@ -589,16 +590,16 @@ function publishTarball({ tgzPath, live }) {
|
|
|
589
590
|
console.error(`[package-core] ${live ? 'PUBLISH (permanent)' : 'publish DRY-RUN'} → ${NPM_BIN} ${args.join(' ')}`);
|
|
590
591
|
if (!live) {
|
|
591
592
|
console.error(' Dry-run: nothing is uploaded. To publish for real: re-run with --publish --live.');
|
|
592
|
-
console.error(' That is PERMANENT and
|
|
593
|
-
console.error('
|
|
593
|
+
console.error(' That is PERMANENT and PUBLIC (ADR 0283) — anyone can fetch it, and a version is never');
|
|
594
|
+
console.error(' reusable once taken. It requires `npm login`; no paid org plan (the package is public).');
|
|
594
595
|
}
|
|
595
596
|
const r = spawnSync(NPM_BIN, args, { cwd: REPO_ROOT, stdio: ['inherit', process.stderr, 'inherit'] });
|
|
596
597
|
if (r.error || r.status !== 0) {
|
|
597
598
|
console.error(`[package-core] npm publish ${live ? '' : '--dry-run '}FAILED (${r.error ? r.error.message : `exit ${r.status}`}).`);
|
|
598
|
-
if (live) console.error(' Common causes: not logged in (`npm login`),
|
|
599
|
+
if (live) console.error(' Common causes: not logged in (`npm login`), no publish rights on the @bongos scope, that version already taken, or 2FA.');
|
|
599
600
|
process.exit(r.status || 1);
|
|
600
601
|
}
|
|
601
|
-
console.error(`[package-core] npm publish ${live ? 'succeeded — @bongos/core is live
|
|
602
|
+
console.error(`[package-core] npm publish ${live ? 'succeeded — @bongos/core is live and PUBLIC on the registry.' : 'dry-run OK — the tarball is publishable.'}`);
|
|
602
603
|
}
|
|
603
604
|
|
|
604
605
|
// The neutral FLOOR — customer-zero identity tokens a portable core must never carry (task 1002220
|
|
@@ -1048,7 +1049,7 @@ module.exports = {
|
|
|
1048
1049
|
isAgentDoc, CORE_AGENT_DOC_STUB,
|
|
1049
1050
|
// task 1882 (ADR 0108 §2) — the real installable npm package
|
|
1050
1051
|
CORE_DEP_NAMES, buildPackageJson, resolveLockDep, lockfileClosure, prunePackageLock,
|
|
1051
|
-
// task 2089 (ADR 0134) —
|
|
1052
|
+
// task 2089 (ADR 0134) — the npm publish argv; PUBLIC since task 1003872 / ADR 0283
|
|
1052
1053
|
publishArgs,
|
|
1053
1054
|
// task 1002218 (audit H3) — build-time self-verify (reproduce pin + optional bare-install boot)
|
|
1054
1055
|
selfVerify, reproducePinFromTree,
|
package/src/module-api.js
CHANGED
|
@@ -71,7 +71,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
|
|
|
71
71
|
// there. scripts/gds/bump-version.js still rewrites the literal below; it appends
|
|
72
72
|
// the entry to that file. Look for a version's history there, not here.
|
|
73
73
|
// ---------------------------------------------------------------------------
|
|
74
|
-
const CORE_VERSION = '1.19.
|
|
74
|
+
const CORE_VERSION = '1.19.740'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
75
75
|
|
|
76
76
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
77
77
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
package/tests/onboard.mjs
CHANGED
|
@@ -213,17 +213,24 @@ test('the wizard done panel is plan-driven, manifest-driven, and owner-honest (t
|
|
|
213
213
|
assert.match(src, /id="c-adopt"/, 'the private path (adopt your own private repo) is named');
|
|
214
214
|
});
|
|
215
215
|
|
|
216
|
-
test('the wizard gate trust link points at
|
|
216
|
+
test('the wizard gate trust link points at browsable code, not just the license (tasks 1002705, 1003502)', () => {
|
|
217
217
|
// Gap 1 of the project-creation audit: the gate linked a nonexistent private repo
|
|
218
|
-
// (404 even authenticated — ADR 0167 names it).
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
//
|
|
218
|
+
// (404 even authenticated — ADR 0167 names it). Task 1002705 fell back to the license
|
|
219
|
+
// text because nothing else was live: the ADR 0099 mirror is dormant until ~2026-11,
|
|
220
|
+
// and both npm scopes 404ed anonymously (verified 2026-08-12).
|
|
221
|
+
//
|
|
222
|
+
// THAT PREMISE DIED 2026-09-13 (task 1003872 / ADR 0283): @bongos/core publishes
|
|
223
|
+
// PUBLIC, and a tokenless `npm pack` from a clean HOME fetches the platform. So the
|
|
224
|
+
// sentence now splits its two claims across two links — "open source" at the code,
|
|
225
|
+
// "(AGPL-3.0)" at the license — and BOTH are asserted here. Do not collapse them:
|
|
226
|
+
// dropping the npm link silently returns the gate to claiming open source while
|
|
227
|
+
// showing only a license, which is the defect task 1003502 was filed about.
|
|
222
228
|
const { readFileSync } = require('node:fs');
|
|
223
229
|
const path = require('node:path');
|
|
224
230
|
const src = readFileSync(path.join(import.meta.dirname, '..', 'modules/public-landing/public/projects.html'), 'utf8');
|
|
225
231
|
assert.doesNotMatch(src, /Claude-OTB/, 'the dead repo link is gone');
|
|
226
|
-
assert.match(src, /https:\/\/www\.
|
|
232
|
+
assert.match(src, /https:\/\/www\.npmjs\.com\/package\/@bongos\/core/, 'the trust link reaches browsable code (the public @bongos/core package)');
|
|
233
|
+
assert.match(src, /https:\/\/www\.gnu\.org\/licenses\/agpl-3\.0/, 'and the license it is under is still one click away');
|
|
227
234
|
});
|
|
228
235
|
|
|
229
236
|
test('oauthAppInstructions pins the apex callback + homepage and points at ACCOUNT Developer settings', () => {
|