Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions skills/xmemo/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# XMemo Skill Change Log

## 1.1.10

- Clarify plain-text `doctor` output: an explicit `--anonymous` health check
now says authentication was not checked, while a normal no-credential check
prints the formal-login next command.
- Preserve the existing read-only health request, JSON diagnostics, credential
lookup, authentication, scope, and degraded-discovery behavior.

## 1.1.9

- Expand the bounded, read-only `doctor --json` discovery summary with the
Expand Down
4 changes: 3 additions & 1 deletion skills/xmemo/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,9 @@ but it is intentionally not repeated in this reference.
`doctor --anonymous` performs the same service-health check without sending an
Authorization header. Both forms use only an unauthenticated, read-only
discovery request for their JSON capability summary; discovery failure does not
block an otherwise successful health check.
block an otherwise successful health check. In terminal output, an explicit
anonymous check says authentication was not checked; a normal no-credential
check instead prints the formal-login next command.

For detailed examples, read `references/operations.md`. For auth, network, and service diagnosis, read `references/troubleshooting.md`.

Expand Down
10 changes: 8 additions & 2 deletions skills/xmemo/scripts/xmemo-skill.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import os from 'node:os';
import readline from 'node:readline';
import { randomUUID } from 'node:crypto';

const SKILL_VERSION = '1.1.9';
const SKILL_VERSION = '1.1.10';
const credentialsPath = path.join(os.homedir(), '.xmemo', 'skill-credentials.json');
const registrationPath = path.join(os.homedir(), '.xmemo', 'skill-registration.json');
const SCRIPT_COMMAND = 'node scripts/xmemo-skill.mjs';
Expand Down Expand Up @@ -1207,7 +1207,13 @@ async function main() {
anonymous: options.anonymous,
}))));
} else {
console.log(`XMemo Service Status: OK\nAuthentication: Missing/Unauthenticated`);
const authentication = options.anonymous
? 'Not checked (anonymous mode)'
: 'Missing/Unauthenticated';
const nextStep = options.anonymous
? ''
: `\nNext: ${SCRIPT_COMMAND} login --allow-plaintext`;
console.log(`XMemo Service Status: OK\nAuthentication: ${authentication}${nextStep}`);
}
process.exit(0);
} catch (e) {
Expand Down
4 changes: 3 additions & 1 deletion test/xmemo-standalone-skill.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ test('skill script anonymous doctor command succeeds when no credentials are pre
assert.equal(res.code, 0);
assert.match(res.stdout, /XMemo Service Status: OK/);
assert.match(res.stdout, /Authentication: Missing\/Unauthenticated/);
assert.match(res.stdout, /Next: node scripts\/xmemo-skill\.mjs login --allow-plaintext/);

await testServer.stop();
});
Expand Down Expand Up @@ -256,7 +257,8 @@ test('skill script doctor --anonymous does not transmit an available credential'
});

assert.equal(res.code, 0);
assert.match(res.stdout, /Authentication: Missing\/Unauthenticated/);
assert.match(res.stdout, /Authentication: Not checked \(anonymous mode\)/);
assert.doesNotMatch(res.stdout, /Next:/);
assert.equal(testServer.requests.length, 1);
assert.equal(testServer.requests[0].headers.authorization, undefined);

Expand Down
Loading