@kya-os/mcp-i-core 1.3.7 → 1.3.9-canary.clientinfo.20251126121212
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test$colon$coverage.log +3089 -3275
- package/.turbo/turbo-test.log +1257 -1257
- package/coverage/coverage-final.json +56 -56
- package/dist/__tests__/utils/mock-providers.d.ts +103 -0
- package/dist/__tests__/utils/mock-providers.d.ts.map +1 -0
- package/dist/__tests__/utils/mock-providers.js +293 -0
- package/dist/__tests__/utils/mock-providers.js.map +1 -0
- package/dist/services/session-registration.service.d.ts.map +1 -1
- package/dist/services/session-registration.service.js +90 -10
- package/dist/services/session-registration.service.js.map +1 -1
- package/package.json +1 -1
- package/src/services/session-registration.service.ts +121 -26
- package/.claude/settings.local.json +0 -9
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock Providers for Testing
|
|
3
|
+
*
|
|
4
|
+
* These mock implementations allow controlled testing of the runtime
|
|
5
|
+
* and other components that depend on providers.
|
|
6
|
+
*/
|
|
7
|
+
import { CryptoProvider, ClockProvider, FetchProvider, StorageProvider, NonceCacheProvider, IdentityProvider, AgentIdentity } from '../../providers/base';
|
|
8
|
+
/**
|
|
9
|
+
* Mock Crypto Provider
|
|
10
|
+
*/
|
|
11
|
+
export declare class MockCryptoProvider extends CryptoProvider {
|
|
12
|
+
sign(data: Uint8Array, privateKey: string): Promise<Uint8Array>;
|
|
13
|
+
verify(data: Uint8Array, signature: Uint8Array, publicKey: string): Promise<boolean>;
|
|
14
|
+
generateKeyPair(): Promise<{
|
|
15
|
+
privateKey: string;
|
|
16
|
+
publicKey: string;
|
|
17
|
+
}>;
|
|
18
|
+
hash(data: Uint8Array): Promise<Uint8Array>;
|
|
19
|
+
randomBytes(length: number): Promise<Uint8Array>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Mock Clock Provider
|
|
23
|
+
*/
|
|
24
|
+
export declare class MockClockProvider extends ClockProvider {
|
|
25
|
+
private currentTime;
|
|
26
|
+
setTime(timestamp: number): void;
|
|
27
|
+
now(): number;
|
|
28
|
+
isWithinSkew(timestamp: number, skewSeconds: number): boolean;
|
|
29
|
+
hasExpired(expiresAt: number): boolean;
|
|
30
|
+
calculateExpiry(ttlSeconds: number): number;
|
|
31
|
+
format(timestamp: number): string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Mock Fetch Provider
|
|
35
|
+
*/
|
|
36
|
+
export declare class MockFetchProvider extends FetchProvider {
|
|
37
|
+
private didDocuments;
|
|
38
|
+
private statusLists;
|
|
39
|
+
private delegationChains;
|
|
40
|
+
fetch: (url: string, options?: any) => Promise<Response>;
|
|
41
|
+
constructor();
|
|
42
|
+
setDIDDocument(did: string, doc: any): void;
|
|
43
|
+
setStatusList(url: string, list: any): void;
|
|
44
|
+
setDelegationChain(id: string, chain: any[]): void;
|
|
45
|
+
resolveDID(did: string): Promise<any>;
|
|
46
|
+
fetchStatusList(url: string): Promise<any>;
|
|
47
|
+
fetchDelegationChain(id: string): Promise<any[]>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Mock Storage Provider
|
|
51
|
+
*/
|
|
52
|
+
export declare class MockStorageProvider extends StorageProvider {
|
|
53
|
+
private store;
|
|
54
|
+
get(key: string): Promise<string | null>;
|
|
55
|
+
set(key: string, value: string): Promise<void>;
|
|
56
|
+
delete(key: string): Promise<void>;
|
|
57
|
+
exists(key: string): Promise<boolean>;
|
|
58
|
+
list(prefix?: string): Promise<string[]>;
|
|
59
|
+
clear(): void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Mock Nonce Cache Provider
|
|
63
|
+
*/
|
|
64
|
+
export declare class MockNonceCacheProvider extends NonceCacheProvider {
|
|
65
|
+
private nonces;
|
|
66
|
+
cleanupCalled: boolean;
|
|
67
|
+
destroyCalled: boolean;
|
|
68
|
+
private clock?;
|
|
69
|
+
setClock(clock: ClockProvider): void;
|
|
70
|
+
has(nonce: string, agentDid?: string): Promise<boolean>;
|
|
71
|
+
add(nonce: string, ttlSeconds: number, agentDid?: string): Promise<void>;
|
|
72
|
+
cleanup(): Promise<void>;
|
|
73
|
+
destroy(): Promise<void>;
|
|
74
|
+
clear(): void;
|
|
75
|
+
size(): number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Mock Identity Provider
|
|
79
|
+
*/
|
|
80
|
+
export declare class MockIdentityProvider extends IdentityProvider {
|
|
81
|
+
private identity?;
|
|
82
|
+
rotateKeysCalled: boolean;
|
|
83
|
+
deleteIdentityCalled: boolean;
|
|
84
|
+
private rotateCount;
|
|
85
|
+
constructor(identity?: AgentIdentity);
|
|
86
|
+
getIdentity(): Promise<AgentIdentity>;
|
|
87
|
+
saveIdentity(identity: AgentIdentity): Promise<void>;
|
|
88
|
+
rotateKeys(): Promise<AgentIdentity>;
|
|
89
|
+
deleteIdentity(): Promise<void>;
|
|
90
|
+
setIdentity(identity: AgentIdentity): void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create a full set of mock providers for testing
|
|
94
|
+
*/
|
|
95
|
+
export declare function createMockProviders(): {
|
|
96
|
+
cryptoProvider: MockCryptoProvider;
|
|
97
|
+
clockProvider: MockClockProvider;
|
|
98
|
+
fetchProvider: MockFetchProvider;
|
|
99
|
+
storageProvider: MockStorageProvider;
|
|
100
|
+
nonceCacheProvider: MockNonceCacheProvider;
|
|
101
|
+
identityProvider: MockIdentityProvider;
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=mock-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-providers.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/mock-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mock Providers for Testing
|
|
4
|
+
*
|
|
5
|
+
* These mock implementations allow controlled testing of the runtime
|
|
6
|
+
* and other components that depend on providers.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MockIdentityProvider = exports.MockNonceCacheProvider = exports.MockStorageProvider = exports.MockFetchProvider = exports.MockClockProvider = exports.MockCryptoProvider = void 0;
|
|
10
|
+
exports.createMockProviders = createMockProviders;
|
|
11
|
+
const vitest_1 = require("vitest");
|
|
12
|
+
const base_1 = require("../../providers/base");
|
|
13
|
+
/**
|
|
14
|
+
* Mock Crypto Provider
|
|
15
|
+
*/
|
|
16
|
+
class MockCryptoProvider extends base_1.CryptoProvider {
|
|
17
|
+
async sign(data, privateKey) {
|
|
18
|
+
// Simple mock signature
|
|
19
|
+
return new Uint8Array([1, 2, 3, 4, 5]);
|
|
20
|
+
}
|
|
21
|
+
async verify(data, signature, publicKey) {
|
|
22
|
+
// Simple verification - check signature matches expected pattern
|
|
23
|
+
// In real implementation, this would verify cryptographic signature
|
|
24
|
+
return signature.length === 5 && signature[0] === 1 && signature[1] === 2;
|
|
25
|
+
}
|
|
26
|
+
async generateKeyPair() {
|
|
27
|
+
// Generate valid base64-encoded keys for testing
|
|
28
|
+
// Ed25519 keys are 32 bytes, so we generate 32 random bytes and encode them
|
|
29
|
+
const randomBytes = new Uint8Array(32);
|
|
30
|
+
for (let i = 0; i < 32; i++) {
|
|
31
|
+
randomBytes[i] = Math.floor(Math.random() * 256);
|
|
32
|
+
}
|
|
33
|
+
// Convert to base64 using Node.js Buffer (works in Node.js test environment)
|
|
34
|
+
const base64PrivateKey = Buffer.from(randomBytes).toString('base64');
|
|
35
|
+
// Generate a different public key (Ed25519 public key is also 32 bytes)
|
|
36
|
+
const publicBytes = new Uint8Array(32);
|
|
37
|
+
for (let i = 0; i < 32; i++) {
|
|
38
|
+
publicBytes[i] = Math.floor(Math.random() * 256);
|
|
39
|
+
}
|
|
40
|
+
const base64PublicKey = Buffer.from(publicBytes).toString('base64');
|
|
41
|
+
return {
|
|
42
|
+
privateKey: base64PrivateKey,
|
|
43
|
+
publicKey: base64PublicKey
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async hash(data) {
|
|
47
|
+
// Simple mock hash
|
|
48
|
+
return new Uint8Array([9, 8, 7, 6, 5]);
|
|
49
|
+
}
|
|
50
|
+
async randomBytes(length) {
|
|
51
|
+
const bytes = new Uint8Array(length);
|
|
52
|
+
for (let i = 0; i < length; i++) {
|
|
53
|
+
bytes[i] = Math.floor(Math.random() * 256);
|
|
54
|
+
}
|
|
55
|
+
return bytes;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.MockCryptoProvider = MockCryptoProvider;
|
|
59
|
+
/**
|
|
60
|
+
* Mock Clock Provider
|
|
61
|
+
*/
|
|
62
|
+
class MockClockProvider extends base_1.ClockProvider {
|
|
63
|
+
currentTime = Date.now();
|
|
64
|
+
setTime(timestamp) {
|
|
65
|
+
this.currentTime = timestamp;
|
|
66
|
+
}
|
|
67
|
+
now() {
|
|
68
|
+
return this.currentTime;
|
|
69
|
+
}
|
|
70
|
+
isWithinSkew(timestamp, skewSeconds) {
|
|
71
|
+
const diff = Math.abs(this.currentTime - timestamp);
|
|
72
|
+
return diff <= skewSeconds * 1000;
|
|
73
|
+
}
|
|
74
|
+
hasExpired(expiresAt) {
|
|
75
|
+
return this.currentTime > expiresAt;
|
|
76
|
+
}
|
|
77
|
+
calculateExpiry(ttlSeconds) {
|
|
78
|
+
return this.currentTime + (ttlSeconds * 1000);
|
|
79
|
+
}
|
|
80
|
+
format(timestamp) {
|
|
81
|
+
return new Date(timestamp).toISOString();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.MockClockProvider = MockClockProvider;
|
|
85
|
+
/**
|
|
86
|
+
* Mock Fetch Provider
|
|
87
|
+
*/
|
|
88
|
+
class MockFetchProvider extends base_1.FetchProvider {
|
|
89
|
+
didDocuments = new Map();
|
|
90
|
+
statusLists = new Map();
|
|
91
|
+
delegationChains = new Map();
|
|
92
|
+
fetch;
|
|
93
|
+
constructor() {
|
|
94
|
+
super();
|
|
95
|
+
// Initialize fetch as a vi.fn() in constructor to ensure it's always mockable
|
|
96
|
+
this.fetch = vitest_1.vi.fn(async (url, options) => {
|
|
97
|
+
// Simple mock Response
|
|
98
|
+
return new Response(JSON.stringify({ url, options }), {
|
|
99
|
+
status: 200,
|
|
100
|
+
headers: { 'Content-Type': 'application/json' }
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Test helpers
|
|
105
|
+
setDIDDocument(did, doc) {
|
|
106
|
+
this.didDocuments.set(did, doc);
|
|
107
|
+
}
|
|
108
|
+
setStatusList(url, list) {
|
|
109
|
+
this.statusLists.set(url, list);
|
|
110
|
+
}
|
|
111
|
+
setDelegationChain(id, chain) {
|
|
112
|
+
this.delegationChains.set(id, chain);
|
|
113
|
+
}
|
|
114
|
+
async resolveDID(did) {
|
|
115
|
+
const doc = this.didDocuments.get(did);
|
|
116
|
+
if (!doc) {
|
|
117
|
+
throw new Error(`DID ${did} not found`);
|
|
118
|
+
}
|
|
119
|
+
return doc;
|
|
120
|
+
}
|
|
121
|
+
async fetchStatusList(url) {
|
|
122
|
+
const list = this.statusLists.get(url);
|
|
123
|
+
if (!list) {
|
|
124
|
+
throw new Error(`Status list ${url} not found`);
|
|
125
|
+
}
|
|
126
|
+
return list;
|
|
127
|
+
}
|
|
128
|
+
async fetchDelegationChain(id) {
|
|
129
|
+
const chain = this.delegationChains.get(id);
|
|
130
|
+
if (!chain) {
|
|
131
|
+
throw new Error(`Delegation chain ${id} not found`);
|
|
132
|
+
}
|
|
133
|
+
return chain;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.MockFetchProvider = MockFetchProvider;
|
|
137
|
+
/**
|
|
138
|
+
* Mock Storage Provider
|
|
139
|
+
*/
|
|
140
|
+
class MockStorageProvider extends base_1.StorageProvider {
|
|
141
|
+
store = new Map();
|
|
142
|
+
async get(key) {
|
|
143
|
+
return this.store.get(key) || null;
|
|
144
|
+
}
|
|
145
|
+
async set(key, value) {
|
|
146
|
+
this.store.set(key, value);
|
|
147
|
+
}
|
|
148
|
+
async delete(key) {
|
|
149
|
+
this.store.delete(key);
|
|
150
|
+
}
|
|
151
|
+
async exists(key) {
|
|
152
|
+
return this.store.has(key);
|
|
153
|
+
}
|
|
154
|
+
async list(prefix) {
|
|
155
|
+
const keys = Array.from(this.store.keys());
|
|
156
|
+
if (prefix) {
|
|
157
|
+
return keys.filter(k => k.startsWith(prefix));
|
|
158
|
+
}
|
|
159
|
+
return keys;
|
|
160
|
+
}
|
|
161
|
+
// Test helper
|
|
162
|
+
clear() {
|
|
163
|
+
this.store.clear();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.MockStorageProvider = MockStorageProvider;
|
|
167
|
+
/**
|
|
168
|
+
* Mock Nonce Cache Provider
|
|
169
|
+
*/
|
|
170
|
+
class MockNonceCacheProvider extends base_1.NonceCacheProvider {
|
|
171
|
+
nonces = new Map();
|
|
172
|
+
cleanupCalled = false;
|
|
173
|
+
destroyCalled = false;
|
|
174
|
+
clock;
|
|
175
|
+
setClock(clock) {
|
|
176
|
+
this.clock = clock;
|
|
177
|
+
}
|
|
178
|
+
async has(nonce, agentDid) {
|
|
179
|
+
const key = agentDid ? `nonce:${agentDid}:${nonce}` : `nonce:${nonce}`;
|
|
180
|
+
const expiry = this.nonces.get(key);
|
|
181
|
+
if (!expiry)
|
|
182
|
+
return false;
|
|
183
|
+
const now = this.clock ? this.clock.now() : Date.now();
|
|
184
|
+
if (now > expiry) {
|
|
185
|
+
this.nonces.delete(key);
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
async add(nonce, ttlSeconds, agentDid) {
|
|
191
|
+
const key = agentDid ? `nonce:${agentDid}:${nonce}` : `nonce:${nonce}`;
|
|
192
|
+
// Convert TTL seconds to absolute expiration timestamp for storage
|
|
193
|
+
const now = this.clock ? this.clock.now() : Date.now();
|
|
194
|
+
const expiresAt = now + (ttlSeconds * 1000);
|
|
195
|
+
this.nonces.set(key, expiresAt);
|
|
196
|
+
}
|
|
197
|
+
async cleanup() {
|
|
198
|
+
this.cleanupCalled = true;
|
|
199
|
+
const now = this.clock ? this.clock.now() : Date.now();
|
|
200
|
+
for (const [nonce, expiry] of this.nonces) {
|
|
201
|
+
if (now > expiry) {
|
|
202
|
+
this.nonces.delete(nonce);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async destroy() {
|
|
207
|
+
this.destroyCalled = true;
|
|
208
|
+
this.nonces.clear();
|
|
209
|
+
}
|
|
210
|
+
// Test helper
|
|
211
|
+
clear() {
|
|
212
|
+
this.nonces.clear();
|
|
213
|
+
}
|
|
214
|
+
size() {
|
|
215
|
+
return this.nonces.size;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
exports.MockNonceCacheProvider = MockNonceCacheProvider;
|
|
219
|
+
/**
|
|
220
|
+
* Mock Identity Provider
|
|
221
|
+
*/
|
|
222
|
+
class MockIdentityProvider extends base_1.IdentityProvider {
|
|
223
|
+
identity;
|
|
224
|
+
rotateKeysCalled = false;
|
|
225
|
+
deleteIdentityCalled = false;
|
|
226
|
+
rotateCount = 0;
|
|
227
|
+
constructor(identity) {
|
|
228
|
+
super();
|
|
229
|
+
this.identity = identity;
|
|
230
|
+
}
|
|
231
|
+
async getIdentity() {
|
|
232
|
+
if (!this.identity) {
|
|
233
|
+
this.identity = {
|
|
234
|
+
did: 'did:key:zmock123',
|
|
235
|
+
kid: 'did:key:zmock123#key-1',
|
|
236
|
+
privateKey: 'mock-private-key',
|
|
237
|
+
publicKey: 'mock-public-key',
|
|
238
|
+
createdAt: new Date().toISOString(),
|
|
239
|
+
type: 'development',
|
|
240
|
+
metadata: { mock: true }
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
return this.identity;
|
|
244
|
+
}
|
|
245
|
+
async saveIdentity(identity) {
|
|
246
|
+
this.identity = identity;
|
|
247
|
+
}
|
|
248
|
+
async rotateKeys() {
|
|
249
|
+
this.rotateKeysCalled = true;
|
|
250
|
+
this.rotateCount++;
|
|
251
|
+
this.identity = {
|
|
252
|
+
did: `did:key:zmock456-${this.rotateCount}`,
|
|
253
|
+
kid: `did:key:zmock456-${this.rotateCount}#key-1`,
|
|
254
|
+
privateKey: `mock-private-key-rotated-${this.rotateCount}`,
|
|
255
|
+
publicKey: `mock-public-key-rotated-${this.rotateCount}`,
|
|
256
|
+
createdAt: new Date().toISOString(),
|
|
257
|
+
type: 'development',
|
|
258
|
+
metadata: { mock: true, rotated: true, rotateCount: this.rotateCount }
|
|
259
|
+
};
|
|
260
|
+
return this.identity;
|
|
261
|
+
}
|
|
262
|
+
async deleteIdentity() {
|
|
263
|
+
this.deleteIdentityCalled = true;
|
|
264
|
+
this.identity = undefined;
|
|
265
|
+
}
|
|
266
|
+
// Test helper
|
|
267
|
+
setIdentity(identity) {
|
|
268
|
+
this.identity = identity;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
exports.MockIdentityProvider = MockIdentityProvider;
|
|
272
|
+
/**
|
|
273
|
+
* Create a full set of mock providers for testing
|
|
274
|
+
*/
|
|
275
|
+
function createMockProviders() {
|
|
276
|
+
const cryptoProvider = new MockCryptoProvider();
|
|
277
|
+
const clockProvider = new MockClockProvider();
|
|
278
|
+
const fetchProvider = new MockFetchProvider();
|
|
279
|
+
const storageProvider = new MockStorageProvider();
|
|
280
|
+
const nonceCacheProvider = new MockNonceCacheProvider();
|
|
281
|
+
const identityProvider = new MockIdentityProvider();
|
|
282
|
+
// Connect nonce cache to clock for consistent time
|
|
283
|
+
nonceCacheProvider.setClock(clockProvider);
|
|
284
|
+
return {
|
|
285
|
+
cryptoProvider,
|
|
286
|
+
clockProvider,
|
|
287
|
+
fetchProvider,
|
|
288
|
+
storageProvider,
|
|
289
|
+
nonceCacheProvider,
|
|
290
|
+
identityProvider
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=mock-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-providers.js","sourceRoot":"","sources":["../../../src/__tests__/utils/mock-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registration.service.d.ts","sourceRoot":"","sources":["../../src/services/session-registration.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,mCAAmC,CAAC;AAM3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,kEAAkE;IAClE,aAAa,EAAE,aAAa,CAAC;IAE7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAKZ;gBAEU,MAAM,EAAE,gCAAgC;IAUpD;;;;;;;;OAQG;IACG,eAAe,CACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-registration.service.d.ts","sourceRoot":"","sources":["../../src/services/session-registration.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,mCAAmC,CAAC;AAM3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,kEAAkE;IAClE,aAAa,EAAE,aAAa,CAAC;IAE7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAKZ;gBAEU,MAAM,EAAE,gCAAgC;IAUpD;;;;;;;;OAQG;IACG,eAAe,CACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IA0MrC;;;;;;;OAOG;IACH,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;CAc5D;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD,GAAG,0BAA0B,GAAG,IAAI,CAmBpC"}
|
|
@@ -58,39 +58,114 @@ class SessionRegistrationService {
|
|
|
58
58
|
sessionId,
|
|
59
59
|
agentDid: request.agent_did,
|
|
60
60
|
clientName: request.client_info.name,
|
|
61
|
+
clientVersion: request.client_info.version,
|
|
62
|
+
hasClientIdentity: !!request.client_identity,
|
|
61
63
|
url,
|
|
62
64
|
});
|
|
65
|
+
// ✅ EMPIRICAL PROOF: Prepare request headers
|
|
66
|
+
// Try Authorization: Bearer first (same as proofs endpoint)
|
|
67
|
+
// If that fails, AgentShield may need X-AgentShield-Key instead
|
|
68
|
+
const requestHeaders = {
|
|
69
|
+
"Content-Type": "application/json",
|
|
70
|
+
Authorization: `Bearer ${this.config.apiKey}`, // Use same auth as proofs endpoint
|
|
71
|
+
};
|
|
72
|
+
// ✅ EMPIRICAL PROOF: Log exact request details (sanitized for security)
|
|
73
|
+
const sanitizedHeaders = {
|
|
74
|
+
...requestHeaders,
|
|
75
|
+
Authorization: `Bearer ${this.config.apiKey.slice(0, 8)}...${this.config.apiKey.slice(-4)}`, // Show first 8 and last 4 chars
|
|
76
|
+
};
|
|
77
|
+
const sanitizedBody = {
|
|
78
|
+
session_id: request.session_id,
|
|
79
|
+
agent_did: request.agent_did,
|
|
80
|
+
project_id: request.project_id,
|
|
81
|
+
created_at: request.created_at,
|
|
82
|
+
client_info: request.client_info,
|
|
83
|
+
client_identity: request.client_identity,
|
|
84
|
+
server_did: request.server_did,
|
|
85
|
+
ttl_minutes: request.ttl_minutes,
|
|
86
|
+
};
|
|
87
|
+
this.config.logger("[SessionRegistration] 🔍 EMPIRICAL DEBUG - Request details", {
|
|
88
|
+
url,
|
|
89
|
+
method: "POST",
|
|
90
|
+
headers: sanitizedHeaders,
|
|
91
|
+
headerKeys: Object.keys(requestHeaders),
|
|
92
|
+
authHeaderPresent: !!requestHeaders["Authorization"],
|
|
93
|
+
authHeaderName: "Authorization",
|
|
94
|
+
authHeaderFormat: requestHeaders["Authorization"]?.startsWith("Bearer ")
|
|
95
|
+
? "Bearer"
|
|
96
|
+
: "Other",
|
|
97
|
+
body: sanitizedBody,
|
|
98
|
+
bodySize: JSON.stringify(request).length,
|
|
99
|
+
});
|
|
63
100
|
// Make the request with timeout
|
|
64
101
|
const controller = new AbortController();
|
|
65
102
|
const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs);
|
|
66
103
|
try {
|
|
67
104
|
const response = await this.config.fetchProvider.fetch(url, {
|
|
68
105
|
method: "POST",
|
|
69
|
-
headers:
|
|
70
|
-
"Content-Type": "application/json",
|
|
71
|
-
Authorization: `Bearer ${this.config.apiKey}`,
|
|
72
|
-
},
|
|
106
|
+
headers: requestHeaders,
|
|
73
107
|
body: JSON.stringify(request),
|
|
74
108
|
signal: controller.signal,
|
|
75
109
|
});
|
|
76
110
|
clearTimeout(timeoutId);
|
|
111
|
+
// ✅ EMPIRICAL PROOF: Capture exact response details
|
|
112
|
+
const responseHeaders = {};
|
|
113
|
+
response.headers.forEach((value, key) => {
|
|
114
|
+
responseHeaders[key] = value;
|
|
115
|
+
});
|
|
116
|
+
const responseText = await response
|
|
117
|
+
.text()
|
|
118
|
+
.catch(() => "Failed to read response");
|
|
119
|
+
let responseBody;
|
|
120
|
+
try {
|
|
121
|
+
responseBody = JSON.parse(responseText);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
responseBody = responseText;
|
|
125
|
+
}
|
|
126
|
+
// ✅ EMPIRICAL PROOF: Log exact response details
|
|
127
|
+
this.config.logger("[SessionRegistration] 🔍 EMPIRICAL DEBUG - Response details", {
|
|
128
|
+
status: response.status,
|
|
129
|
+
statusText: response.statusText,
|
|
130
|
+
ok: response.ok,
|
|
131
|
+
headers: responseHeaders,
|
|
132
|
+
body: responseBody,
|
|
133
|
+
bodyLength: responseText.length,
|
|
134
|
+
clientName: request.client_info.name,
|
|
135
|
+
// ✅ DEBUG: Include request ID from response headers for AgentShield support
|
|
136
|
+
requestId: responseHeaders["x-request-id"] ||
|
|
137
|
+
responseHeaders["X-Request-ID"] ||
|
|
138
|
+
"not-provided",
|
|
139
|
+
// ✅ DEBUG: Full response text for AgentShield team
|
|
140
|
+
fullResponseText: responseText,
|
|
141
|
+
});
|
|
77
142
|
if (!response.ok) {
|
|
78
143
|
// Log error but don't throw - this is fire-and-forget
|
|
79
|
-
const errorText = await response.text().catch(() => "Unknown error");
|
|
80
144
|
this.config.logger("[SessionRegistration] Registration failed", {
|
|
81
145
|
sessionId,
|
|
82
146
|
status: response.status,
|
|
83
|
-
error:
|
|
147
|
+
error: responseText,
|
|
148
|
+
// ✅ DEBUG: EMPIRICAL: Include full response details
|
|
149
|
+
responseHeaders,
|
|
150
|
+
responseBody,
|
|
151
|
+
clientName: request.client_info.name,
|
|
152
|
+
// ✅ DEBUG: Request ID for AgentShield support ticket
|
|
153
|
+
requestId: responseHeaders["x-request-id"] ||
|
|
154
|
+
responseHeaders["X-Request-ID"] ||
|
|
155
|
+
"not-provided",
|
|
156
|
+
// ✅ DEBUG: Full request body for AgentShield team
|
|
157
|
+
fullRequestBody: JSON.stringify(request, null, 2),
|
|
84
158
|
});
|
|
85
159
|
return {
|
|
86
160
|
success: false,
|
|
87
161
|
sessionId,
|
|
88
|
-
error: `HTTP ${response.status}: ${
|
|
162
|
+
error: `HTTP ${response.status}: ${responseText}`,
|
|
89
163
|
};
|
|
90
164
|
}
|
|
91
|
-
// Parse response
|
|
92
|
-
const responseData =
|
|
93
|
-
const parseResult = agentshield_api_1.registerSessionResponseSchema.safeParse(responseData.data ||
|
|
165
|
+
// Parse response (using already-captured responseBody)
|
|
166
|
+
const responseData = responseBody;
|
|
167
|
+
const parseResult = agentshield_api_1.registerSessionResponseSchema.safeParse(responseData.data ||
|
|
168
|
+
responseData);
|
|
94
169
|
if (!parseResult.success) {
|
|
95
170
|
this.config.logger("[SessionRegistration] Invalid response format", {
|
|
96
171
|
sessionId,
|
|
@@ -102,6 +177,11 @@ class SessionRegistrationService {
|
|
|
102
177
|
this.config.logger("[SessionRegistration] Session registered", {
|
|
103
178
|
sessionId,
|
|
104
179
|
registered: parseResult.data.registered,
|
|
180
|
+
// ✅ DEBUG: Include full response for AgentShield debugging
|
|
181
|
+
responseData: parseResult.data,
|
|
182
|
+
requestId: responseHeaders["x-request-id"] ||
|
|
183
|
+
responseHeaders["X-Request-ID"] ||
|
|
184
|
+
"not-provided",
|
|
105
185
|
});
|
|
106
186
|
return { success: true, sessionId };
|
|
107
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registration.service.js","sourceRoot":"","sources":["../../src/services/session-registration.service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"session-registration.service.js","sourceRoot":"","sources":["../../src/services/session-registration.service.ts"],"names":[],"mappings":"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"}
|