@apify/mcpc 0.1.11-beta.3 → 0.1.11
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/CHANGELOG.md
CHANGED
|
@@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
11
11
|
- E2E tests now run under the Bun runtime (in addition to Node.js); use `./test/e2e/run.sh --runtime bun` or `npm run test:e2e:bun`
|
|
12
12
|
|
|
13
13
|
### Changed
|
|
14
|
-
-
|
|
14
|
+
- `@napi-rs/keyring` native addon is now loaded lazily: `mcpc` starts and works normally even when `libsecret` (Linux) or the addon itself is missing; a one-time warning is emitted and credentials fall back to `~/.mcpc/credentials.json` (mode 0600)
|
|
15
15
|
|
|
16
16
|
## [0.1.10] - 2026-03-01
|
|
17
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"AAgJA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBD,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAGf;AAGD,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAMtC;AAGD,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAGD,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAGf;AAGD,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAMrC;AAGD,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAGD,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAGf;AAGD,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAM7C;AAGD,wBAAsB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;AAGD,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAGf;AAGD,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7B;AAGD,wBAAsB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG1F"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Entry } from '@napi-rs/keyring';
|
|
2
1
|
import { readFile, writeFile } from 'fs/promises';
|
|
3
2
|
import { join } from 'path';
|
|
4
3
|
import { createLogger, getJsonMode } from '../logger.js';
|
|
@@ -35,13 +34,21 @@ async function fileDelete(account) {
|
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
36
|
let keychainAvailable = null;
|
|
38
|
-
|
|
37
|
+
let _entryPromise = null;
|
|
38
|
+
function getEntry() {
|
|
39
|
+
if (_entryPromise === null) {
|
|
40
|
+
_entryPromise = import('@napi-rs/keyring').then((m) => m.Entry);
|
|
41
|
+
}
|
|
42
|
+
return _entryPromise;
|
|
43
|
+
}
|
|
44
|
+
async function withKeychain(keychainOp, fallback) {
|
|
39
45
|
if (keychainAvailable === false)
|
|
40
46
|
return fallback();
|
|
41
47
|
try {
|
|
42
|
-
const
|
|
48
|
+
const EntryClass = await getEntry();
|
|
49
|
+
const result = keychainOp(EntryClass);
|
|
43
50
|
keychainAvailable = true;
|
|
44
|
-
return
|
|
51
|
+
return result;
|
|
45
52
|
}
|
|
46
53
|
catch (error) {
|
|
47
54
|
if (keychainAvailable === null && !getJsonMode()) {
|
|
@@ -54,15 +61,15 @@ function withKeychain(keychainOp, fallback) {
|
|
|
54
61
|
}
|
|
55
62
|
}
|
|
56
63
|
function keychainSet(account, value) {
|
|
57
|
-
return withKeychain(() => {
|
|
58
|
-
new
|
|
64
|
+
return withKeychain((EntryClass) => {
|
|
65
|
+
new EntryClass(SERVICE_NAME, account).setPassword(value);
|
|
59
66
|
}, () => fileSet(account, value));
|
|
60
67
|
}
|
|
61
68
|
function keychainGet(account) {
|
|
62
|
-
return withKeychain(() => new
|
|
69
|
+
return withKeychain((EntryClass) => new EntryClass(SERVICE_NAME, account).getPassword() ?? null, () => fileGet(account));
|
|
63
70
|
}
|
|
64
71
|
function keychainDelete(account) {
|
|
65
|
-
return withKeychain(() => new
|
|
72
|
+
return withKeychain((EntryClass) => new EntryClass(SERVICE_NAME, account).deletePassword(), () => fileDelete(account));
|
|
66
73
|
}
|
|
67
74
|
async function keychainGetParsed(account, label) {
|
|
68
75
|
const raw = await keychainGet(account);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"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"}
|
package/docs/TODOs.md
CHANGED
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
- Use https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool for inspiration/compatibility?
|
|
19
19
|
- Consider adding support for something like `mcp-cli @session/tool [args]` to make it easier to use
|
|
20
20
|
|
|
21
|
-
- Add CI/CD unit testing for other Node versions, maybe proper release management?
|
|
22
|
-
- Add GitHub packages?
|
|
23
21
|
|
|
24
22
|
## Later
|
|
25
23
|
|
|
@@ -34,7 +32,6 @@
|
|
|
34
32
|
- nit: show also header / open auth statuses for HTTP servers?
|
|
35
33
|
- ux: consider forking "alive" session state to "alive" and "diconnected", to indicate the remove server is not responding but bridge
|
|
36
34
|
runs fine. We can use lastSeenAt + ping interval info for that, or status of last ping.
|
|
37
|
-
- perf: make the libsecret dependency soft - only load it when using keychain, but skip for auth-less (AI sandbox) use
|
|
38
35
|
- ux: Be even more forgiving with `args:=x`, when we know from tools/prompt schema the text is compatible with `x` even if the exact type is not -
|
|
39
36
|
just re-type it dynamically to make it work.
|
|
40
37
|
- nit: Cooler OAuth flow finish web page with CSS animation, add Apify example there, show mcpc info. E.g. next step - check Apify rather than close
|
|
@@ -48,12 +45,6 @@
|
|
|
48
45
|
|
|
49
46
|
## E2E test scenarios
|
|
50
47
|
|
|
51
|
-
- On "npm run release", make the two skippable OAuth e2e tests mandatory
|
|
52
|
-
|
|
53
|
-
- Test auth profiles work long-term and sessions too - basically when running some tests the
|
|
54
|
-
next day they should use old saved auths and sessions.
|
|
55
|
-
We could have some special dir for long-term testing...
|
|
56
|
-
|
|
57
48
|
|
|
58
49
|
# Questions
|
|
59
50
|
|