@bongos/core 1.19.751 → 1.19.753

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 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.751",
6
- "core_contract": "1.19.751",
7
- "source_commit": "737b578919a197afeddbf0c94a548290a9161998",
5
+ "core_version": "1.19.753",
6
+ "core_contract": "1.19.753",
7
+ "source_commit": "80dc32c8218722e226e51da2ebb020cec6d9d0c2",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-15T22:52:21.404Z",
9
+ "built_at": "2026-09-15T23:33:23.711Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 482,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 2617,
20
- "tree_sha256": "741bce83585c646386bc2ddbe75a07bf458400bd8ed19f78d47da79ba5c9e5de",
20
+ "tree_sha256": "878000807a14e178ce864325e1330e8c14b05bd4799fab37d3cecde128cde500",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -2507,7 +2507,7 @@
2507
2507
  {
2508
2508
  "path": "docs/module-api-changelog.md",
2509
2509
  "mode": "0000644",
2510
- "sha256": "6864b03a8e3bcca555963a85cbd1d3c1ac609b355e61ff4abb60299626979752"
2510
+ "sha256": "ccb51e74c6ede2d1dc04f3877491a2b2a8c266494c9624b710fd3af463ac49b8"
2511
2511
  },
2512
2512
  {
2513
2513
  "path": "docs/modules-contract.md",
@@ -7562,12 +7562,12 @@
7562
7562
  {
7563
7563
  "path": "package-lock.json",
7564
7564
  "mode": "0000644",
7565
- "sha256": "197208273eadd947af33002bde4c49421f0a5f846946b5852fc2422bcf4bdafc"
7565
+ "sha256": "cf5907822b5a511411433a626f4f1651d58505115c4a5ba39a391195e120e2ad"
7566
7566
  },
7567
7567
  {
7568
7568
  "path": "package.json",
7569
7569
  "mode": "0000644",
7570
- "sha256": "c91859f22d3a06e3e9c64c628dff657f7aecbda25afafd287f571a473148bdee"
7570
+ "sha256": "159c9db7924dccba4d3a83a4139e958190bc1eab91e974b696846d5418ad0c20"
7571
7571
  },
7572
7572
  {
7573
7573
  "path": "public-docs/index.html",
@@ -9367,7 +9367,7 @@
9367
9367
  {
9368
9368
  "path": "src/module-api.js",
9369
9369
  "mode": "0000644",
9370
- "sha256": "e80ba785ccd39c20b2ca31f3c645257f84e72004e75c71ba52fb10647a6b3297"
9370
+ "sha256": "a15e5c285579017bee5b7b08b63efc00124fa10e2e562dafadf6b2b456f0820c"
9371
9371
  },
9372
9372
  {
9373
9373
  "path": "src/module-loader/catalog.js",
@@ -12417,7 +12417,7 @@
12417
12417
  {
12418
12418
  "path": "tests/session-cards.mjs",
12419
12419
  "mode": "0000644",
12420
- "sha256": "3b9ca3392533ade9dc8fecd33c705e844a3c3c692fd7ffb33a0d582bf8da6ca6"
12420
+ "sha256": "9035468dcf1b6ef0bc0aaf5a665196a0eab321563ab84aa1133b1446ff1ce9cd"
12421
12421
  },
12422
12422
  {
12423
12423
  "path": "tests/session_506_regression.mjs",
@@ -1976,5 +1976,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
1976
1976
  landed since 1.19.749 with no explicit bump. run 35030717430. (task 1002620)
1977
1977
  1.19.751 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1978
1978
  landed since 1.19.750 with no explicit bump. run 35033016299. (task 1002620)
1979
+ 1.19.752 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1980
+ landed since 1.19.751 with no explicit bump. run 35034524356. (task 1002620)
1981
+ 1.19.753 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1982
+ landed since 1.19.752 with no explicit bump. run 35036151976. (task 1002620)
1979
1983
  ---------------------------------------------------------------------------
1980
1984
  ```
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.751",
3
+ "version": "1.19.753",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.751",
9
+ "version": "1.19.753",
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.751",
3
+ "version": "1.19.753",
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
@@ -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.751'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
74
+ const CORE_VERSION = '1.19.753'; // 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');
@@ -136,6 +136,58 @@ test('empty / malformed envelope or missing title → empty string', () => {
136
136
  assert.equal(hook.buildAdditionalContext(onEnv, null), '', 'no title → nothing');
137
137
  });
138
138
 
139
+ // ---------- buildAdditionalContext: delivery mode (task 1003933) ----------
140
+ //
141
+ // A prompt-MATCHED card is the whole answer — the builder typed /builder-start,
142
+ // so rendering it and nothing else is right. A card delivered by the
143
+ // prompt-INDEPENDENT land-watch hook is not: it rides whatever the builder
144
+ // happened to say next, and the "verbatim as your reply" directive made it
145
+ // displace a real question twice on 2026-09-15.
146
+
147
+ test("default mode claims the reply; 'append' yields to the builder's message", () => {
148
+ const reply = hook.buildAdditionalContext(onEnv, 'status_card');
149
+ assert.ok(/as your reply/i.test(reply), 'default still says the card IS the reply');
150
+ const append = hook.buildAdditionalContext(onEnv, 'task_card', 'append');
151
+ assert.ok(/answer[\s\S]{0,40}first/i.test(append), "append tells the model to answer the builder first");
152
+ assert.ok(/after (?:you )?answer|end of your reply/i.test(append), 'and to place the card after that answer');
153
+ assert.ok(!/verbatim as your reply/i.test(append), 'append never claims the whole reply');
154
+ });
155
+
156
+ test("'append' still embeds both payloads verbatim, each fence exactly twice", () => {
157
+ const ctx = hook.buildAdditionalContext(onEnv, 'task_card', 'append');
158
+ assert.ok(ctx.includes('<div class="st-card">WIDGET-BODY</div>'), 'HTML verbatim');
159
+ assert.ok(ctx.includes('MARKDOWN-BODY'), 'markdown verbatim');
160
+ assert.equal(count(ctx, '<<<WIDGET_HTML>>>'), 2);
161
+ assert.equal(count(ctx, '<<<MARKDOWN_CARD>>>'), 2);
162
+ assert.ok(/do NOT run the script yourself/i.test(ctx), 'still forbids re-running the script');
163
+ });
164
+
165
+ test("'append' holds with widgets OFF (the markdown-only branch)", () => {
166
+ const ctx = hook.buildAdditionalContext(
167
+ { widgets_enabled: false, html: null, markdown: 'MD-ONLY', warnings: [] }, 'task_card', 'append');
168
+ assert.ok(ctx.includes('MD-ONLY'));
169
+ assert.ok(/answer[\s\S]{0,40}first/i.test(ctx), 'append wording reaches the widgets-off branch too');
170
+ assert.equal(count(ctx, '<<<WIDGET_HTML>>>'), 0);
171
+ assert.equal(count(ctx, '<<<MARKDOWN_CARD>>>'), 2);
172
+ });
173
+
174
+ test('an unknown mode falls back to the reply directive (fail-safe)', () => {
175
+ const ctx = hook.buildAdditionalContext(onEnv, 'status_card', 'nonsense');
176
+ assert.ok(/as your reply/i.test(ctx), 'unknown mode must not silently drop the directive');
177
+ });
178
+
179
+ test('land-watch-card.js requests the append mode', () => {
180
+ // The prompt-independent hook is the whole reason 'append' exists; a call
181
+ // without it would reintroduce the hijack. Source-level because the hook
182
+ // requires its sibling inside main() at runtime. CRLF-normalised: this
183
+ // checkout reads back \r\n and an anchored match would silently pass.
184
+ const src = require('node:fs')
185
+ .readFileSync(new URL('../.claude/hooks/land-watch-card.js', import.meta.url), 'utf8')
186
+ .replace(/\r\n/g, '\n');
187
+ assert.match(src, /buildAdditionalContext\(\s*envelope\s*,[^)]*,\s*'append'\s*\)/,
188
+ "land-watch-card must pass 'append' when building its directive");
189
+ });
190
+
139
191
  // ---------- Summary ----------
140
192
 
141
193
  console.log('');