gm-skill 2.0.1232 → 2.0.1234

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/README.md CHANGED
@@ -35,7 +35,7 @@ An earlier generation fanned out fifteen per-platform downstream repos (gm-cc, g
35
35
 
36
36
  ## Version
37
37
 
38
- `2.0.1232` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` (or any cascading sibling crate) republishes this package.
38
+ `2.0.1234` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` (or any cascading sibling crate) republishes this package.
39
39
 
40
40
  ## Source of truth
41
41
 
@@ -1 +1 @@
1
- 0.1.450
1
+ 0.1.451
package/bin/plugkit.wasm CHANGED
Binary file
@@ -1 +1 @@
1
- ab5bc4ff94107cddd4f9ab9043c8f898519745476bd88812ca7540bc98040e38 plugkit.wasm
1
+ fcbafd8f4288b4b4b83b73c72861140d7a137668bbbd3af8d085068b904b994a plugkit.wasm
@@ -477,6 +477,11 @@ function readCurrentSess() {
477
477
  return __sessCache.value;
478
478
  }
479
479
 
480
+ // iter13: dedup set for host_vec_embed.failed event emissions — we only
481
+ // want one event per distinct failure-reason per process, not one per
482
+ // embed call.
483
+ const _hostVecEmbedFailKeys = new Set();
484
+
480
485
  function logEvent(sub, event, fields) {
481
486
  if (process.env.GM_LOG_DISABLE) return;
482
487
  try {
@@ -1471,13 +1476,42 @@ function makeHostFunctions(instanceRef) {
1471
1476
  if (!text) return 0n;
1472
1477
  const body = JSON.stringify({ model: EMBED_MODEL_DEFAULT, input: text });
1473
1478
  const result = spawnSync(process.execPath, ['-e', `
1474
- fetch('${ACPTOAPI_URL}/v1/embeddings', { method: 'POST', headers: { 'content-type': 'application/json' }, body: ${JSON.stringify(body)} })
1475
- .then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.text(); })
1476
- .then(t => process.stdout.write(t))
1477
- .catch(e => { process.stderr.write('embed-error: ' + e.message); process.exit(2); });
1478
- `], { encoding: 'utf-8', timeout: 30000 });
1479
+ (async () => {
1480
+ try {
1481
+ const r = await fetch('${ACPTOAPI_URL}/v1/embeddings', { method: 'POST', headers: { 'content-type': 'application/json' }, body: ${JSON.stringify(body)} });
1482
+ if (!r.ok) {
1483
+ const errBody = await r.text();
1484
+ throw new Error('HTTP ' + r.status + ': ' + errBody.slice(0, 300));
1485
+ }
1486
+ const t = await r.text();
1487
+ process.stdout.write(t);
1488
+ } catch (e) {
1489
+ process.stderr.write('embed-error: ' + e.message);
1490
+ process.exit(2);
1491
+ }
1492
+ })();
1493
+ `], { encoding: 'utf-8', timeout: 30000, windowsHide: true });
1479
1494
  if (result.status !== 0 || !result.stdout) {
1480
- console.error('[plugkit-wasm] host_vec_embed FAILED:', result.stderr || 'no response');
1495
+ // iter13: failures here had been silently returning 0n which surfaced
1496
+ // as auto_recall.count=0 with no diagnostic. acptoapi 1.0.102+
1497
+ // returns 410 Gone on /v1/embeddings (embeddings now live in
1498
+ // rs-learn natively). Log a structured event so the failure is
1499
+ // visible in gmsniff. Dedup on the (status, reason) key so we
1500
+ // don't spam — only the first occurrence per process per reason.
1501
+ const reason = (result.stderr || 'no response').slice(0, 300);
1502
+ const key = String(result.status) + '|' + reason;
1503
+ if (!_hostVecEmbedFailKeys.has(key)) {
1504
+ _hostVecEmbedFailKeys.add(key);
1505
+ try {
1506
+ logEvent('plugkit', 'host_vec_embed.failed', {
1507
+ status: result.status,
1508
+ reason,
1509
+ text_len: text.length,
1510
+ hint: 'acptoapi 1.0.102+ returns 410 on /v1/embeddings — embeddings are served by rs-learn natively. Once rs-learn-embed sidecar is wired into host_vec_embed, this event will stop firing.',
1511
+ });
1512
+ } catch (_) {}
1513
+ }
1514
+ console.error('[plugkit-wasm] host_vec_embed FAILED:', reason);
1481
1515
  return 0n;
1482
1516
  }
1483
1517
  return writeWasmStr(instanceRef.value, result.stdout);
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1232",
3
+ "version": "2.0.1234",
4
4
  "description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -17,5 +17,5 @@
17
17
  "publishConfig": {
18
18
  "access": "public"
19
19
  },
20
- "plugkitVersion": "0.1.450"
20
+ "plugkitVersion": "0.1.451"
21
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1232",
3
+ "version": "2.0.1234",
4
4
  "description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -39,7 +39,7 @@
39
39
  "gm.json"
40
40
  ],
41
41
  "dependencies": {
42
- "gm-plugkit": "^2.0.1232"
42
+ "gm-plugkit": "^2.0.1234"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=16.0.0"