@lorekit/cli 1.29.1 → 1.29.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lorekit/cli",
3
- "version": "1.29.1",
3
+ "version": "1.29.3",
4
4
  "description": "Install the LoreKit shared-memory skill and run health checks for the LoreKit MCP server.",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/doctor.mjs CHANGED
@@ -268,11 +268,11 @@ async function checkRemote(control, root, args, record) {
268
268
  if (res.networkError) {
269
269
  record('fail', 'connectivity', res.networkError);
270
270
  } else if (res.ok) {
271
- const tools = res.result && Array.isArray(res.result.tools) ? res.result.tools.length : null;
272
- // Say what the probe actually proved. `/health` is public, so "reachable"
273
- // is a statement about the network path only the token is judged by the
274
- // `authentication` check below.
275
- record('pass', 'connectivity', tools !== null ? `reachable, ${tools} tools` : 'reachable (public health probe — token not checked)');
271
+ // Say what the probe actually proved. `ping()` hits the PUBLIC `/health`
272
+ // function and returns only `{ ok, httpStatus }` never a tool list — so
273
+ // "reachable" is a statement about the network path alone. The token itself
274
+ // is judged by the `authentication` check below.
275
+ record('pass', 'connectivity', 'reachable (public health probe — token not checked)');
276
276
  } else if (res.error && AUTH_CODES.has(res.error.code)) {
277
277
  record('fail', 'connectivity', `auth rejected (${res.error.code}) — check your token`);
278
278
  } else if (res.error) {
package/src/hook.mjs CHANGED
@@ -168,6 +168,11 @@ async function run(args) {
168
168
  // consumed, so a clean early turn stays silent without burning the marker —
169
169
  // a later turn that does hit friction can still fire (once).
170
170
  const stopMode = control.hooksStop || 'friction';
171
+ // Once the retro has fired, short-circuit BEFORE the (growing) transcript
172
+ // read — the 'retro' marker is only ever SET on emit below, so a clean
173
+ // earlier turn never reaches that line to consume it, and every later Stop
174
+ // this session skips the re-parse cheaply (read-only peek, never consumed).
175
+ if (sessionMarkerExists(parsed.sessionId, 'retro')) return 0;
171
176
  let reasons = [];
172
177
  let friction = null;
173
178
  if (stopMode === 'friction') {