@engramx/client 0.16.0-rc.12 → 0.16.0-rc.14
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 +31 -8
- package/dist/EngramClient.d.ts +45 -15
- package/dist/EngramClient.js +121 -70
- package/dist/EngramClient.js.map +1 -1
- package/dist/ProfileManager.d.ts +3 -19
- package/dist/ProfileManager.js +1 -58
- package/dist/ProfileManager.js.map +1 -1
- package/dist/SessionManager.d.ts +1 -1
- package/dist/SessionManager.js.map +1 -1
- package/dist/certifiedAudit.d.ts +31 -0
- package/dist/certifiedAudit.js +124 -0
- package/dist/certifiedAudit.js.map +1 -1
- package/dist/claude-setup.d.ts +15 -6
- package/dist/claude-setup.js +30 -20
- package/dist/claude-setup.js.map +1 -1
- package/dist/cli.js +103 -166
- package/dist/cli.js.map +1 -1
- package/dist/connect-config.d.ts +109 -0
- package/dist/connect-config.js +251 -0
- package/dist/connect-config.js.map +1 -0
- package/dist/encryption.js +7 -1
- package/dist/encryption.js.map +1 -1
- package/dist/evidence.d.ts +94 -0
- package/dist/evidence.js +352 -0
- package/dist/evidence.js.map +1 -0
- package/dist/idl.d.ts +16 -1
- package/dist/idl.js +9 -1
- package/dist/idl.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/ledgerfsHash.d.ts +0 -2
- package/dist/ledgerfsHash.js +0 -2
- package/dist/ledgerfsHash.js.map +1 -1
- package/dist/lineage.d.ts +7 -1
- package/dist/lineage.js +7 -1
- package/dist/lineage.js.map +1 -1
- package/dist/memoryArchive.d.ts +12 -77
- package/dist/memoryArchive.js.map +1 -1
- package/dist/migrate.d.ts +1 -30
- package/dist/migrate.js +13 -136
- package/dist/migrate.js.map +1 -1
- package/dist/openclaw-local.d.ts +86 -0
- package/dist/openclaw-local.js +332 -0
- package/dist/openclaw-local.js.map +1 -0
- package/dist/openclaw-setup.d.ts +2 -2
- package/dist/openclaw-setup.js +8 -36
- package/dist/openclaw-setup.js.map +1 -1
- package/dist/path-utils.d.ts +0 -16
- package/dist/path-utils.js +4 -27
- package/dist/path-utils.js.map +1 -1
- package/dist/publicRecord.d.ts +5 -0
- package/dist/publicRecord.js +52 -0
- package/dist/publicRecord.js.map +1 -0
- package/dist/recordChain.d.ts +69 -0
- package/dist/recordChain.js +145 -0
- package/dist/recordChain.js.map +1 -0
- package/dist/schema.d.ts +6 -17
- package/dist/schema.js +6 -28
- package/dist/schema.js.map +1 -1
- package/dist/types.d.ts +50 -453
- package/dist/verify.d.ts +6 -0
- package/dist/verify.js +16 -0
- package/dist/verify.js.map +1 -0
- package/package.json +17 -5
- package/dist/offline.d.ts +0 -21
- package/dist/offline.js +0 -104
- package/dist/offline.js.map +0 -1
package/dist/ProfileManager.d.ts
CHANGED
|
@@ -29,33 +29,17 @@ export declare class ProfileManager {
|
|
|
29
29
|
* Returns null fields for files that don't exist yet.
|
|
30
30
|
*/
|
|
31
31
|
getProfile(): Promise<Profile>;
|
|
32
|
-
/**
|
|
33
|
-
* Read a single identity file. Returns null if the file doesn't exist.
|
|
34
|
-
*/
|
|
35
|
-
getIdentityFile(file: 'soul' | 'user' | 'preferences'): Promise<string | null>;
|
|
36
|
-
/**
|
|
37
|
-
* Read all identity files (soul, user, preferences) in one call.
|
|
38
|
-
*/
|
|
39
|
-
getIdentity(): Promise<Pick<Profile, 'soul' | 'user' | 'preferences'>>;
|
|
40
32
|
/**
|
|
41
33
|
* Save a preference. Appends a timestamped entry to identity/preferences.md.
|
|
42
34
|
*/
|
|
43
|
-
savePreference(preference: string): Promise<MemoryReceipt
|
|
35
|
+
savePreference(preference: string): Promise<MemoryReceipt>;
|
|
44
36
|
/**
|
|
45
37
|
* Save an insight or lesson learned. Appends to knowledge/lessons.md,
|
|
46
38
|
* or to a domain-specific file if topic is provided.
|
|
47
39
|
*/
|
|
48
|
-
saveInsight(insight: Insight): Promise<MemoryReceipt
|
|
40
|
+
saveInsight(insight: Insight): Promise<MemoryReceipt>;
|
|
49
41
|
/**
|
|
50
42
|
* Save a decision with rationale. Appends to knowledge/decisions.md.
|
|
51
43
|
*/
|
|
52
|
-
saveDecision(decision: string, rationale: string): Promise<MemoryReceipt
|
|
53
|
-
/**
|
|
54
|
-
* Read the lessons file. Returns null if it doesn't exist.
|
|
55
|
-
*/
|
|
56
|
-
getLessons(): Promise<string | null>;
|
|
57
|
-
/**
|
|
58
|
-
* Read a domain-specific knowledge file. Returns null if it doesn't exist.
|
|
59
|
-
*/
|
|
60
|
-
getDomainKnowledge(topic: string): Promise<string | null>;
|
|
44
|
+
saveDecision(decision: string, rationale: string): Promise<MemoryReceipt>;
|
|
61
45
|
}
|
package/dist/ProfileManager.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* reading/writing user identity, preferences, and accumulated knowledge
|
|
6
6
|
* without callers needing to know the path layout.
|
|
7
7
|
*/
|
|
8
|
-
import { IDENTITY, KNOWLEDGE,
|
|
8
|
+
import { IDENTITY, KNOWLEDGE, PROFILE_PATHS, today } from './schema.js';
|
|
9
9
|
export class ProfileManager {
|
|
10
10
|
constructor(client) {
|
|
11
11
|
this.client = client;
|
|
@@ -32,39 +32,6 @@ export class ProfileManager {
|
|
|
32
32
|
lessons: get(KNOWLEDGE.LESSONS),
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Read a single identity file. Returns null if the file doesn't exist.
|
|
37
|
-
*/
|
|
38
|
-
async getIdentityFile(file) {
|
|
39
|
-
const pathMap = { soul: IDENTITY.SOUL, user: IDENTITY.USER, preferences: IDENTITY.PREFERENCES };
|
|
40
|
-
try {
|
|
41
|
-
const memFile = await this.client.readMemory(pathMap[file]);
|
|
42
|
-
return memFile.content || null;
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Read all identity files (soul, user, preferences) in one call.
|
|
50
|
-
*/
|
|
51
|
-
async getIdentity() {
|
|
52
|
-
const results = await this.client.readMemoryBatch([...IDENTITY_PATHS]);
|
|
53
|
-
const get = (path) => {
|
|
54
|
-
const entry = results.find(([p]) => p === path);
|
|
55
|
-
if (!entry)
|
|
56
|
-
return null;
|
|
57
|
-
const [, fileOrError] = entry;
|
|
58
|
-
if (fileOrError instanceof Error)
|
|
59
|
-
return null;
|
|
60
|
-
return fileOrError.content || null;
|
|
61
|
-
};
|
|
62
|
-
return {
|
|
63
|
-
soul: get(IDENTITY.SOUL),
|
|
64
|
-
user: get(IDENTITY.USER),
|
|
65
|
-
preferences: get(IDENTITY.PREFERENCES),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
35
|
/**
|
|
69
36
|
* Save a preference. Appends a timestamped entry to identity/preferences.md.
|
|
70
37
|
*/
|
|
@@ -88,29 +55,5 @@ export class ProfileManager {
|
|
|
88
55
|
const entry = `\n## ${today()}\n**Decision:** ${decision.trim()}\n**Rationale:** ${rationale.trim()}`;
|
|
89
56
|
return this.client.appendMemory(KNOWLEDGE.DECISIONS, entry, 'agentDerived');
|
|
90
57
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Read the lessons file. Returns null if it doesn't exist.
|
|
93
|
-
*/
|
|
94
|
-
async getLessons() {
|
|
95
|
-
try {
|
|
96
|
-
const file = await this.client.readMemory(KNOWLEDGE.LESSONS);
|
|
97
|
-
return file.content || null;
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Read a domain-specific knowledge file. Returns null if it doesn't exist.
|
|
105
|
-
*/
|
|
106
|
-
async getDomainKnowledge(topic) {
|
|
107
|
-
try {
|
|
108
|
-
const file = await this.client.readMemory(KNOWLEDGE.domain(topic));
|
|
109
|
-
return file.content || null;
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
58
|
}
|
|
116
59
|
//# sourceMappingURL=ProfileManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileManager.js","sourceRoot":"","sources":["../src/ProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"ProfileManager.js","sourceRoot":"","sources":["../src/ProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAmBxE,MAAM,OAAO,cAAc;IACzB,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAErD;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QAEtE,MAAM,GAAG,GAAG,CAAC,IAAY,EAAiB,EAAE;YAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;YAC9B,IAAI,WAAW,YAAY,KAAK;gBAAE,OAAO,IAAI,CAAC;YAC9C,OAAO,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;QACrC,CAAC,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxB,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YACtC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,OAAgB;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QACjF,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,SAAiB;QACpD,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,mBAAmB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtG,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC;CAIF"}
|
package/dist/SessionManager.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class SessionManager {
|
|
|
23
23
|
/**
|
|
24
24
|
* Write or append a session summary for the current platform and date.
|
|
25
25
|
*/
|
|
26
|
-
writeSummary(platform: string, content: string, date?: string): Promise<MemoryReceipt
|
|
26
|
+
writeSummary(platform: string, content: string, date?: string): Promise<MemoryReceipt>;
|
|
27
27
|
/**
|
|
28
28
|
* Read a specific session summary.
|
|
29
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAe/D,MAAM,OAAO,cAAc;IACzB,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAErD;;OAEG;IACH,KAAK,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
|
package/dist/certifiedAudit.d.ts
CHANGED
|
@@ -88,3 +88,34 @@ export declare function verifyCertifiedAnchor(agent: HttpAgent, registryId: Prin
|
|
|
88
88
|
certificate: [] | [Uint8Array | number[]];
|
|
89
89
|
witness: [] | [Uint8Array | number[]] | Uint8Array | number[];
|
|
90
90
|
}): Promise<CertifiedLeaf>;
|
|
91
|
+
/** The IC mainnet root key (133 bytes, DER), pinned. SHA-256 737ba355…f4b6b3 — the same value the
|
|
92
|
+
* agent library carries as its mainnet default; test/record-chain.test.ts holds the two equal. */
|
|
93
|
+
export declare const IC_MAINNET_ROOT_KEY_HEX = "308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d9685f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484b01291091c5f87b98883463f98091a0baaae";
|
|
94
|
+
export interface HistoricalCertificate {
|
|
95
|
+
verified: boolean;
|
|
96
|
+
/** Self-classifying: names the link that failed. Never act on the other fields unless `verified`. */
|
|
97
|
+
why: string;
|
|
98
|
+
/** The canister's certified data the subnet signed (a bare head, or a tree root). */
|
|
99
|
+
certifiedData: Uint8Array | null;
|
|
100
|
+
/** The certificate's own signed time, nanoseconds since the epoch. */
|
|
101
|
+
signedTimeNs: bigint | null;
|
|
102
|
+
/** With a witness and a leaf path (the registry's tree format): the leaf proven under the root. */
|
|
103
|
+
leaf: Uint8Array | null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Verify a certificate of ANY age for one canister and read what it certifies and when.
|
|
107
|
+
*
|
|
108
|
+
* Checks, every one required: the BLS signature and its delegation chain verify against `rootKey`
|
|
109
|
+
* (default: the pinned mainnet key — a local replica's certificate, or one under any other key,
|
|
110
|
+
* fails here); the delegation covers `canisterId`; the tree carries `/canister/<id>/certified_data`
|
|
111
|
+
* (a certificate another canister obtained does not — it fails with that said); `/time` is present.
|
|
112
|
+
* With `witness` and `leafPath`, the witness must reconstruct to the certified root and hold the leaf.
|
|
113
|
+
* Freshness is NOT checked, by design (the header above says why). Fails closed with a reason.
|
|
114
|
+
*/
|
|
115
|
+
export declare function verifyHistoricalCertificate(args: {
|
|
116
|
+
certificate: Uint8Array | number[];
|
|
117
|
+
canisterId: Principal | string;
|
|
118
|
+
rootKey?: Uint8Array;
|
|
119
|
+
witness?: Uint8Array | number[] | null;
|
|
120
|
+
leafPath?: Uint8Array[];
|
|
121
|
+
}): Promise<HistoricalCertificate>;
|
package/dist/certifiedAudit.js
CHANGED
|
@@ -204,4 +204,128 @@ export async function verifyCertifiedAnchor(agent, registryId, engramId, reply)
|
|
|
204
204
|
engram.toUint8Array(),
|
|
205
205
|
]);
|
|
206
206
|
}
|
|
207
|
+
// ── Historical certificates (2026-10-15, the owner's ruling 6B of 2026-10-14) ──────────────────────
|
|
208
|
+
//
|
|
209
|
+
// EVERY VERIFIER ABOVE IS FRESH-ONLY, and that is right for them: they answer "is this head the one
|
|
210
|
+
// the subnet signs NOW", and `Certificate.create`'s default refuses a certificate more than five
|
|
211
|
+
// minutes old. It is wrong for evidence. What proves "this entry existed by time T" is a certificate
|
|
212
|
+
// whose SIGNED time is T and which covers a head the entry is in — captured right after the write
|
|
213
|
+
// and checked weeks later, by someone who was not there. Nobody can forge the subnet's signature over
|
|
214
|
+
// a past time, so an old certificate is not weaker than a fresh one; it is the point. So this check
|
|
215
|
+
// is EXPLICIT and separate: it accepts a certificate of any age, verifies the signature against a
|
|
216
|
+
// pinned root key (never one fetched from the network being checked), reads the certificate's own
|
|
217
|
+
// signed `/time`, and hands back the certified bytes. The fresh verifiers keep their default.
|
|
218
|
+
//
|
|
219
|
+
// No entry has a certified time of its own: an entry's certified time is the signed time of the
|
|
220
|
+
// earliest certificate one keeps that covers it.
|
|
221
|
+
/** The IC mainnet root key (133 bytes, DER), pinned. SHA-256 737ba355…f4b6b3 — the same value the
|
|
222
|
+
* agent library carries as its mainnet default; test/record-chain.test.ts holds the two equal. */
|
|
223
|
+
export const IC_MAINNET_ROOT_KEY_HEX = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d9685f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484b01291091c5f87b98883463f98091a0baaae';
|
|
224
|
+
const hexBytes = (h) => {
|
|
225
|
+
const clean = h.trim().toLowerCase();
|
|
226
|
+
if (!/^([0-9a-f]{2})*$/.test(clean))
|
|
227
|
+
throw new Error('not an even-length hex string');
|
|
228
|
+
return Uint8Array.from(clean.match(/../g) ?? [], (b) => parseInt(b, 16));
|
|
229
|
+
};
|
|
230
|
+
/** Unsigned LEB128 — how the state tree encodes `/time` (nanoseconds since the epoch). */
|
|
231
|
+
function leb128(buf) {
|
|
232
|
+
let out = 0n;
|
|
233
|
+
let shift = 0n;
|
|
234
|
+
for (const byte of buf) {
|
|
235
|
+
out |= BigInt(byte & 0x7f) << shift;
|
|
236
|
+
if ((byte & 0x80) === 0)
|
|
237
|
+
break;
|
|
238
|
+
shift += 7n;
|
|
239
|
+
}
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Verify a certificate of ANY age for one canister and read what it certifies and when.
|
|
244
|
+
*
|
|
245
|
+
* Checks, every one required: the BLS signature and its delegation chain verify against `rootKey`
|
|
246
|
+
* (default: the pinned mainnet key — a local replica's certificate, or one under any other key,
|
|
247
|
+
* fails here); the delegation covers `canisterId`; the tree carries `/canister/<id>/certified_data`
|
|
248
|
+
* (a certificate another canister obtained does not — it fails with that said); `/time` is present.
|
|
249
|
+
* With `witness` and `leafPath`, the witness must reconstruct to the certified root and hold the leaf.
|
|
250
|
+
* Freshness is NOT checked, by design (the header above says why). Fails closed with a reason.
|
|
251
|
+
*/
|
|
252
|
+
export async function verifyHistoricalCertificate(args) {
|
|
253
|
+
const fail = (why) => ({
|
|
254
|
+
verified: false,
|
|
255
|
+
why,
|
|
256
|
+
certifiedData: null,
|
|
257
|
+
signedTimeNs: null,
|
|
258
|
+
leaf: null,
|
|
259
|
+
});
|
|
260
|
+
const principal = typeof args.canisterId === 'string' ? Principal.fromText(args.canisterId) : args.canisterId;
|
|
261
|
+
const rootKey = args.rootKey ?? hexBytes(IC_MAINNET_ROOT_KEY_HEX);
|
|
262
|
+
const certBytes = Uint8Array.from(args.certificate);
|
|
263
|
+
if (certBytes.length === 0)
|
|
264
|
+
return fail('no certificate');
|
|
265
|
+
let cert;
|
|
266
|
+
try {
|
|
267
|
+
cert = await Certificate.create({
|
|
268
|
+
certificate: certBytes,
|
|
269
|
+
rootKey,
|
|
270
|
+
principal: { canisterId: principal },
|
|
271
|
+
disableTimeVerification: true,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
catch (e) {
|
|
275
|
+
return fail(`the certificate does not verify against ${args.rootKey ? 'the given' : 'the pinned IC mainnet'} root key for canister ${principal.toText()} ` +
|
|
276
|
+
`(a local replica's certificate, one issued on another subnet, or altered bytes): ${e.message}`);
|
|
277
|
+
}
|
|
278
|
+
let timeLookup;
|
|
279
|
+
let dataLookup;
|
|
280
|
+
try {
|
|
281
|
+
timeLookup = cert.lookup_path(['time']);
|
|
282
|
+
dataLookup = cert.lookup_path(['canister', principal.toUint8Array(), 'certified_data']);
|
|
283
|
+
}
|
|
284
|
+
catch (e) {
|
|
285
|
+
return fail(`certificate tree walk failed: ${e.message}`);
|
|
286
|
+
}
|
|
287
|
+
if (timeLookup.status !== LookupPathStatus.Found)
|
|
288
|
+
return fail('the certificate carries no /time');
|
|
289
|
+
const signedTimeNs = leb128(new Uint8Array(lookupResultToBuffer(timeLookup)));
|
|
290
|
+
if (dataLookup.status !== LookupPathStatus.Found) {
|
|
291
|
+
return fail(`the certificate carries no certified data for ${principal.toText()}: it was issued for another canister`);
|
|
292
|
+
}
|
|
293
|
+
const certifiedData = new Uint8Array(lookupResultToBuffer(dataLookup));
|
|
294
|
+
if (args.witness == null || args.leafPath == null) {
|
|
295
|
+
return { verified: true, why: 'ok', certifiedData, signedTimeNs, leaf: null };
|
|
296
|
+
}
|
|
297
|
+
let tree;
|
|
298
|
+
try {
|
|
299
|
+
tree = Cbor.decode(Uint8Array.from(args.witness));
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
return fail('witness is not decodable CBOR');
|
|
303
|
+
}
|
|
304
|
+
let root;
|
|
305
|
+
try {
|
|
306
|
+
root = new Uint8Array(await reconstruct(tree));
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
return fail('witness is decodable CBOR but not a hash tree');
|
|
310
|
+
}
|
|
311
|
+
if (root.length !== certifiedData.length || !root.every((b, i) => b === certifiedData[i])) {
|
|
312
|
+
return fail('the witness root does not match the certified data: the witness is not for this certificate');
|
|
313
|
+
}
|
|
314
|
+
let leafLookup;
|
|
315
|
+
try {
|
|
316
|
+
leafLookup = lookup_path(args.leafPath, tree);
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
return fail('witness tree is malformed at the requested path');
|
|
320
|
+
}
|
|
321
|
+
if (leafLookup.status !== LookupPathStatus.Found)
|
|
322
|
+
return fail('the leaf is not in the witness');
|
|
323
|
+
return {
|
|
324
|
+
verified: true,
|
|
325
|
+
why: 'ok',
|
|
326
|
+
certifiedData,
|
|
327
|
+
signedTimeNs,
|
|
328
|
+
leaf: new Uint8Array(lookupResultToBuffer(leafLookup)),
|
|
329
|
+
};
|
|
330
|
+
}
|
|
207
331
|
//# sourceMappingURL=certifiedAudit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certifiedAudit.js","sourceRoot":"","sources":["../src/certifiedAudit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"certifiedAudit.js","sourceRoot":"","sources":["../src/certifiedAudit.ts"],"names":[],"mappings":"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"}
|
package/dist/claude-setup.d.ts
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Claude setup — generates MCP config for Claude Code and Claude Cowork.
|
|
3
|
+
*
|
|
4
|
+
* ⟨2026-10-13, the bloat audit⟩ ONE generator, ONE writer. This file built its own
|
|
5
|
+
* `mcpServers.engramx` entry while @engramx/mcp's `connect` built another (connect-config.ts), and
|
|
6
|
+
* the two had drifted: this path was macOS-only, the other per-OS; this one wrote atomically, the
|
|
7
|
+
* other did not; the mainnet spellings and the session-key variable differed. The entry now comes
|
|
8
|
+
* from connect-config.ts (`claudeDesktopConfig`), the Claude Desktop path is per-OS here, and
|
|
9
|
+
* `installMcpConfig` — atomic, refusing a config it cannot parse — is the one writer, which
|
|
10
|
+
* `@engramx/mcp connect --write` uses too.
|
|
3
11
|
*/
|
|
12
|
+
import { type StdioServerEntry } from './connect-config.js';
|
|
4
13
|
export interface ClaudeSetupOptions {
|
|
5
14
|
canisterId: string;
|
|
6
|
-
|
|
15
|
+
/** The key file the server reads; omitted, the server reads ~/.engramx/session.key. */
|
|
16
|
+
sessionKeyPath?: string;
|
|
7
17
|
host?: string;
|
|
18
|
+
/** The @engramx/mcp version the entry runs. Default: this package's (the packages share one);
|
|
19
|
+
* `@engramx/mcp connect` passes its own, since npm can pair it with a later client. */
|
|
20
|
+
version?: string;
|
|
8
21
|
}
|
|
9
22
|
export interface McpConfig {
|
|
10
23
|
mcpServers: {
|
|
11
|
-
engramx:
|
|
12
|
-
command: string;
|
|
13
|
-
args: string[];
|
|
14
|
-
env: Record<string, string>;
|
|
15
|
-
};
|
|
24
|
+
engramx: StdioServerEntry;
|
|
16
25
|
};
|
|
17
26
|
}
|
|
18
27
|
/** Generate the MCP server config block for Claude. */
|
package/dist/claude-setup.js
CHANGED
|
@@ -1,40 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Claude setup — generates MCP config for Claude Code and Claude Cowork.
|
|
3
|
+
*
|
|
4
|
+
* ⟨2026-10-13, the bloat audit⟩ ONE generator, ONE writer. This file built its own
|
|
5
|
+
* `mcpServers.engramx` entry while @engramx/mcp's `connect` built another (connect-config.ts), and
|
|
6
|
+
* the two had drifted: this path was macOS-only, the other per-OS; this one wrote atomically, the
|
|
7
|
+
* other did not; the mainnet spellings and the session-key variable differed. The entry now comes
|
|
8
|
+
* from connect-config.ts (`claudeDesktopConfig`), the Claude Desktop path is per-OS here, and
|
|
9
|
+
* `installMcpConfig` — atomic, refusing a config it cannot parse — is the one writer, which
|
|
10
|
+
* `@engramx/mcp connect --write` uses too.
|
|
3
11
|
*/
|
|
4
12
|
import * as fs from 'fs';
|
|
13
|
+
import * as os from 'os';
|
|
5
14
|
import * as path from 'path';
|
|
6
15
|
import { atomicWriteFileSync } from './path-utils.js';
|
|
7
|
-
import {
|
|
16
|
+
import { VERSION } from './version.js';
|
|
17
|
+
import { claudeDesktopConfig } from './connect-config.js';
|
|
8
18
|
/** Generate the MCP server config block for Claude. */
|
|
9
19
|
export function generateMcpConfig(options) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
return claudeDesktopConfig({
|
|
21
|
+
canisterId: options.canisterId,
|
|
22
|
+
host: options.host,
|
|
23
|
+
clientVersion: options.version ?? VERSION,
|
|
24
|
+
sessionKeyPath: options.sessionKeyPath,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/** The default claude_desktop_config.json path for this OS. */
|
|
28
|
+
function claudeDesktopConfigPath(home) {
|
|
29
|
+
switch (os.platform()) {
|
|
30
|
+
case 'darwin':
|
|
31
|
+
return path.join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
32
|
+
case 'win32':
|
|
33
|
+
return path.join(process.env['APPDATA'] || path.join(home, 'AppData', 'Roaming'), 'Claude', 'claude_desktop_config.json');
|
|
34
|
+
default:
|
|
35
|
+
return path.join(home, '.config', 'Claude', 'claude_desktop_config.json');
|
|
16
36
|
}
|
|
17
|
-
return {
|
|
18
|
-
mcpServers: {
|
|
19
|
-
engramx: {
|
|
20
|
-
command: 'npx',
|
|
21
|
-
// ⟨2026-10-13⟩ Was `['-y', '@engramx/mcp']` — unpinned, so npx ran npm's `latest`, the
|
|
22
|
-
// previous final release; version.ts · MCP_PACKAGE says why it names this build's version.
|
|
23
|
-
args: ['-y', MCP_PACKAGE],
|
|
24
|
-
env,
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
37
|
}
|
|
29
38
|
/** Return the config paths for each Claude product. */
|
|
30
39
|
export function claudeConfigPaths() {
|
|
31
|
-
const home = process.env['HOME'] ||
|
|
40
|
+
const home = process.env['HOME'] || os.homedir();
|
|
32
41
|
return {
|
|
33
42
|
// Claude Code reads user-scope MCP servers from ~/.claude.json (the file
|
|
34
43
|
// `claude mcp add --scope user` writes). ~/.claude/settings.json does NOT
|
|
35
44
|
// carry mcpServers — writing there is a silent no-op for the user.
|
|
36
45
|
claudeCode: path.join(home, '.claude.json'),
|
|
37
|
-
|
|
46
|
+
// ⟨2026-10-13⟩ Per-OS; it was the macOS path everywhere until the two generators merged.
|
|
47
|
+
claudeDesktop: claudeDesktopConfigPath(home),
|
|
38
48
|
};
|
|
39
49
|
}
|
|
40
50
|
/**
|
package/dist/claude-setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-setup.js","sourceRoot":"","sources":["../src/claude-setup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-setup.js","sourceRoot":"","sources":["../src/claude-setup.ts"],"names":[],"mappings":"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"}
|