agntcy-dir 1.4.0 → 1.5.0

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.
@@ -1,5 +1,12 @@
1
+ import { AICatalog } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
2
+ import { AICatalogSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
3
+ import { AIFinderService } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
1
4
  import { BasicAuthCredentials } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/sync_service_pb';
2
5
  import { BasicAuthCredentialsSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/sync_service_pb';
6
+ import { CatalogCollection } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
7
+ import { CatalogCollectionSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
8
+ import { CatalogEntry } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
9
+ import { CatalogEntrySchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
3
10
  import { CreatePublicationResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';
4
11
  import { CreatePublicationResponseSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';
5
12
  import { CreateSyncRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/sync_service_pb';
@@ -21,6 +28,10 @@ import { EventSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/ev
21
28
  import { EventService } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
22
29
  import { EventType } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
23
30
  import { EventTypeSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
31
+ import { ExportAgentRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
32
+ import { ExportAgentRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
33
+ import { file_agntcy_dir_catalog_v1_ai_finder_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
34
+ import { file_agntcy_dir_catalog_v1_models } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
24
35
  import { file_agntcy_dir_core_v1_record } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/core/v1/record_pb';
25
36
  import { file_agntcy_dir_events_v1_event_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
26
37
  import { file_agntcy_dir_naming_v1_name_verification } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/name_verification_pb';
@@ -36,6 +47,10 @@ import { file_agntcy_dir_sign_v1_sign_service } from '@buf/agntcy_dir.bufbuild_e
36
47
  import { file_agntcy_dir_sign_v1_signature } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/signature_pb';
37
48
  import { file_agntcy_dir_store_v1_store_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/store_service_pb';
38
49
  import { file_agntcy_dir_store_v1_sync_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/sync_service_pb';
50
+ import { GetAgentRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
51
+ import { GetAgentRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
52
+ import { GetAgentResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
53
+ import { GetAgentResponseSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
39
54
  import { GetPublicationRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';
40
55
  import { GetPublicationRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';
41
56
  import { GetPublicationResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';
@@ -48,6 +63,18 @@ import { GetVerificationInfoRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/d
48
63
  import { GetVerificationInfoRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb';
49
64
  import { GetVerificationInfoResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb';
50
65
  import { GetVerificationInfoResponseSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb';
66
+ import { GetWellKnownCatalogRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
67
+ import { GetWellKnownCatalogRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
68
+ import { GetWellKnownCatalogResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
69
+ import { GetWellKnownCatalogResponseSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
70
+ import { HostInfo } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
71
+ import { HostInfoSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
72
+ import { HttpBody } from '@buf/googleapis_googleapis.bufbuild_es/google/api/httpbody_pb';
73
+ import { HttpBodySchema } from '@buf/googleapis_googleapis.bufbuild_es/google/api/httpbody_pb';
74
+ import { ListAgentsRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
75
+ import { ListAgentsRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
76
+ import { ListAgentsResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
77
+ import { ListAgentsResponseSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';
51
78
  import { ListenRequest } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
52
79
  import { ListenRequestSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
53
80
  import { ListenResponse } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';
@@ -172,6 +199,8 @@ import { VerifyWithKey } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/si
172
199
  import { VerifyWithKeySchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/sign_service_pb';
173
200
  import { VerifyWithOIDC } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/sign_service_pb';
174
201
  import { VerifyWithOIDCSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/sign_service_pb';
202
+ import { WellKnownCatalog } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
203
+ import { WellKnownCatalogSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';
175
204
 
176
205
  /**
177
206
  * Authentication mode for Directory client connections.
@@ -180,6 +209,40 @@ import { VerifyWithOIDCSchema } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sig
180
209
  */
181
210
  export declare type AuthMode = '' | 'x509' | 'jwt' | 'tls' | 'oidc';
182
211
 
212
+ export declare namespace catalog_v1 {
213
+ export {
214
+ file_agntcy_dir_catalog_v1_ai_finder_service,
215
+ AIFinderService,
216
+ ExportAgentRequest,
217
+ ExportAgentRequestSchema,
218
+ GetAgentRequest,
219
+ GetAgentRequestSchema,
220
+ GetAgentResponse,
221
+ GetAgentResponseSchema,
222
+ GetWellKnownCatalogRequest,
223
+ GetWellKnownCatalogRequestSchema,
224
+ GetWellKnownCatalogResponse,
225
+ GetWellKnownCatalogResponseSchema,
226
+ ListAgentsRequest,
227
+ ListAgentsRequestSchema,
228
+ ListAgentsResponse,
229
+ ListAgentsResponseSchema,
230
+ file_agntcy_dir_catalog_v1_models,
231
+ AICatalog,
232
+ AICatalogSchema,
233
+ CatalogCollection,
234
+ CatalogCollectionSchema,
235
+ CatalogEntry,
236
+ CatalogEntrySchema,
237
+ HostInfo,
238
+ HostInfoSchema,
239
+ WellKnownCatalog,
240
+ WellKnownCatalogSchema,
241
+ HttpBody,
242
+ HttpBodySchema
243
+ }
244
+ }
245
+
183
246
  /**
184
247
  * High-level client for interacting with AGNTCY Directory services.
185
248
  *
@@ -220,6 +283,10 @@ export declare class Client {
220
283
  get_publication(request: GetPublicationRequest): Promise<GetPublicationResponse>;
221
284
  resolve(request: ResolveRequest): Promise<ResolveResponse>;
222
285
  getVerificationInfo(request: GetVerificationInfoRequest): Promise<GetVerificationInfoResponse>;
286
+ listAgents(request: ListAgentsRequest): Promise<ListAgentsResponse>;
287
+ getAgent(request: GetAgentRequest): Promise<GetAgentResponse>;
288
+ exportAgent(request: ExportAgentRequest): Promise<HttpBody>;
289
+ getWellKnownCatalog(request: GetWellKnownCatalogRequest): Promise<GetWellKnownCatalogResponse>;
223
290
  }
224
291
 
225
292
  /**
@@ -335,6 +402,12 @@ export declare namespace events_v1 {
335
402
  }
336
403
  }
337
404
 
405
+ export { ExportAgentRequest }
406
+
407
+ export { GetAgentRequest }
408
+
409
+ export { GetAgentResponse }
410
+
338
411
  export { GetPublicationRequest }
339
412
 
340
413
  export { GetPublicationResponse }
@@ -347,6 +420,16 @@ export { GetVerificationInfoRequest }
347
420
 
348
421
  export { GetVerificationInfoResponse }
349
422
 
423
+ export { GetWellKnownCatalogRequest }
424
+
425
+ export { GetWellKnownCatalogResponse }
426
+
427
+ export { HttpBody }
428
+
429
+ export { ListAgentsRequest }
430
+
431
+ export { ListAgentsResponse }
432
+
350
433
  export { ListenRequest }
351
434
 
352
435
  export { ListenResponse }
@@ -365,6 +448,7 @@ export { ListSyncsRequest }
365
448
 
366
449
  export declare namespace models {
367
450
  export {
451
+ catalog_v1,
368
452
  core_v1,
369
453
  naming_v1,
370
454
  routing_v1,
package/dist/index.cjs CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  var connect = require('@connectrpc/connect');
4
4
  var connectNode = require('@connectrpc/connect-node');
5
+ var ai_finder_service_pb = require('@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb');
6
+ var models_pb = require('@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb');
7
+ var codegenv2 = require('@bufbuild/protobuf/codegenv2');
8
+ var wkt = require('@bufbuild/protobuf/wkt');
5
9
  var event_service_pb = require('@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb');
6
10
  var naming_service_pb = require('@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb');
7
11
  var name_verification_pb = require('@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/name_verification_pb');
@@ -49,6 +53,57 @@ function _interopNamespaceDefault(e) {
49
53
  var http__namespace = /*#__PURE__*/_interopNamespaceDefault(http);
50
54
  var https__namespace = /*#__PURE__*/_interopNamespaceDefault(https);
51
55
 
56
+ // Copyright 2026 Google LLC
57
+ //
58
+ // Licensed under the Apache License, Version 2.0 (the "License");
59
+ // you may not use this file except in compliance with the License.
60
+ // You may obtain a copy of the License at
61
+ //
62
+ // http://www.apache.org/licenses/LICENSE-2.0
63
+ //
64
+ // Unless required by applicable law or agreed to in writing, software
65
+ // distributed under the License is distributed on an "AS IS" BASIS,
66
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
67
+ // See the License for the specific language governing permissions and
68
+ // limitations under the License.
69
+
70
+
71
+ /**
72
+ * Describes the file google/api/httpbody.proto.
73
+ */
74
+ const file_google_api_httpbody = /*@__PURE__*/
75
+ codegenv2.fileDesc("Chlnb29nbGUvYXBpL2h0dHBib2R5LnByb3RvEgpnb29nbGUuYXBpIlgKCEh0dHBCb2R5EhQKDGNvbnRlbnRfdHlwZRgBIAEoCRIMCgRkYXRhGAIgASgMEigKCmV4dGVuc2lvbnMYAyADKAsyFC5nb29nbGUucHJvdG9idWYuQW55QmUKDmNvbS5nb29nbGUuYXBpQg1IdHRwQm9keVByb3RvUAFaO2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2h0dHBib2R5O2h0dHBib2R5ogIER0FQSWIGcHJvdG8z", [wkt.file_google_protobuf_any]);
76
+
77
+ /**
78
+ * Describes the message google.api.HttpBody.
79
+ * Use `create(HttpBodySchema)` to create a new message.
80
+ */
81
+ const HttpBodySchema = /*@__PURE__*/
82
+ codegenv2.messageDesc(file_google_api_httpbody, 0);
83
+
84
+ // Copyright AGNTCY Contributors (https://github.com/agntcy)
85
+ // SPDX-License-Identifier: Apache-2.0
86
+
87
+ var catalog_v1 = /*#__PURE__*/Object.freeze({
88
+ __proto__: null,
89
+ AICatalogSchema: models_pb.AICatalogSchema,
90
+ AIFinderService: ai_finder_service_pb.AIFinderService,
91
+ CatalogCollectionSchema: models_pb.CatalogCollectionSchema,
92
+ CatalogEntrySchema: models_pb.CatalogEntrySchema,
93
+ ExportAgentRequestSchema: ai_finder_service_pb.ExportAgentRequestSchema,
94
+ GetAgentRequestSchema: ai_finder_service_pb.GetAgentRequestSchema,
95
+ GetAgentResponseSchema: ai_finder_service_pb.GetAgentResponseSchema,
96
+ GetWellKnownCatalogRequestSchema: ai_finder_service_pb.GetWellKnownCatalogRequestSchema,
97
+ GetWellKnownCatalogResponseSchema: ai_finder_service_pb.GetWellKnownCatalogResponseSchema,
98
+ HostInfoSchema: models_pb.HostInfoSchema,
99
+ HttpBodySchema: HttpBodySchema,
100
+ ListAgentsRequestSchema: ai_finder_service_pb.ListAgentsRequestSchema,
101
+ ListAgentsResponseSchema: ai_finder_service_pb.ListAgentsResponseSchema,
102
+ WellKnownCatalogSchema: models_pb.WellKnownCatalogSchema,
103
+ file_agntcy_dir_catalog_v1_ai_finder_service: ai_finder_service_pb.file_agntcy_dir_catalog_v1_ai_finder_service,
104
+ file_agntcy_dir_catalog_v1_models: models_pb.file_agntcy_dir_catalog_v1_models
105
+ });
106
+
52
107
  // Copyright AGNTCY Contributors (https://github.com/agntcy)
53
108
  // SPDX-License-Identifier: Apache-2.0
54
109
 
@@ -926,6 +981,35 @@ async function collectStream(stream) {
926
981
  }
927
982
  return results;
928
983
  }
984
+ async function invoke(opName, call) {
985
+ try {
986
+ return await call();
987
+ }
988
+ catch (e) {
989
+ const msg = e instanceof Error ? e.message : String(e);
990
+ throw new Error(`${opName} failed: ${msg}`);
991
+ }
992
+ }
993
+
994
+ // Copyright AGNTCY Contributors (https://github.com/agntcy)
995
+ // SPDX-License-Identifier: Apache-2.0
996
+ class AIFinderService {
997
+ constructor(aiFinderClient) {
998
+ this.aiFinderClient = aiFinderClient;
999
+ }
1000
+ async listAgents(request) {
1001
+ return invoke('listAgents', () => this.aiFinderClient.listAgents(request));
1002
+ }
1003
+ async getAgent(request) {
1004
+ return invoke('getAgent', () => this.aiFinderClient.getAgent(request));
1005
+ }
1006
+ async exportAgent(request) {
1007
+ return invoke('exportAgent', () => this.aiFinderClient.exportAgent(request));
1008
+ }
1009
+ async getWellKnownCatalog(request) {
1010
+ return invoke('getWellKnownCatalog', () => this.aiFinderClient.getWellKnownCatalog(request));
1011
+ }
1012
+ }
929
1013
 
930
1014
  // Copyright AGNTCY Contributors (https://github.com/agntcy)
931
1015
  // SPDX-License-Identifier: Apache-2.0
@@ -1151,6 +1235,7 @@ var core_v1 = /*#__PURE__*/Object.freeze({
1151
1235
 
1152
1236
  var index = /*#__PURE__*/Object.freeze({
1153
1237
  __proto__: null,
1238
+ catalog_v1: catalog_v1,
1154
1239
  core_v1: core_v1,
1155
1240
  events_v1: events_v1,
1156
1241
  naming_v1: naming_v1,
@@ -1510,6 +1595,7 @@ class Client {
1510
1595
  this.syncClient = connect.createClient(sync_service_pb.SyncService, transport);
1511
1596
  this.eventClient = connect.createClient(event_service_pb.EventService, transport);
1512
1597
  this.namingClient = connect.createClient(naming_service_pb.NamingService, transport);
1598
+ this.aiFinderClient = connect.createClient(ai_finder_service_pb.AIFinderService, transport);
1513
1599
  this.storeService = new StoreService(this.storeClient);
1514
1600
  this.routingService = new RoutingService(this.routingClient);
1515
1601
  this.publicationService = new PublicationService(this.publicationClient);
@@ -1518,6 +1604,7 @@ class Client {
1518
1604
  this.syncService = new SyncService(this.syncClient);
1519
1605
  this.eventService = new EventService(this.eventClient);
1520
1606
  this.namingService = new NamingService(this.namingClient);
1607
+ this.aiFinderService = new AIFinderService(this.aiFinderClient);
1521
1608
  }
1522
1609
  static async createGRPCTransport(config, options) {
1523
1610
  return createGrpcTransport(config, {
@@ -1612,6 +1699,18 @@ class Client {
1612
1699
  async getVerificationInfo(request) {
1613
1700
  return this.namingService.getVerificationInfo(request);
1614
1701
  }
1702
+ async listAgents(request) {
1703
+ return this.aiFinderService.listAgents(request);
1704
+ }
1705
+ async getAgent(request) {
1706
+ return this.aiFinderService.getAgent(request);
1707
+ }
1708
+ async exportAgent(request) {
1709
+ return this.aiFinderService.exportAgent(request);
1710
+ }
1711
+ async getWellKnownCatalog(request) {
1712
+ return this.aiFinderService.getWellKnownCatalog(request);
1713
+ }
1615
1714
  }
1616
1715
 
1617
1716
  exports.Client = Client;
package/dist/index.mjs CHANGED
@@ -1,5 +1,9 @@
1
1
  import { createClient as createClient$1 } from '@connectrpc/connect';
2
2
  import { createGrpcTransport as createGrpcTransport$1 } from '@connectrpc/connect-node';
3
+ import { AIFinderService as AIFinderService$1, ExportAgentRequestSchema, GetAgentRequestSchema, GetAgentResponseSchema, GetWellKnownCatalogRequestSchema, GetWellKnownCatalogResponseSchema, ListAgentsRequestSchema, ListAgentsResponseSchema, file_agntcy_dir_catalog_v1_ai_finder_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb.js';
4
+ import { AICatalogSchema, CatalogCollectionSchema, CatalogEntrySchema, HostInfoSchema, WellKnownCatalogSchema, file_agntcy_dir_catalog_v1_models } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb.js';
5
+ import { messageDesc, fileDesc } from '@bufbuild/protobuf/codegenv2';
6
+ import { file_google_protobuf_any } from '@bufbuild/protobuf/wkt';
3
7
  import { EventSchema, EventService as EventService$1, EventType, EventTypeSchema, ListenRequestSchema, ListenResponseSchema, file_agntcy_dir_events_v1_event_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb.js';
4
8
  import { GetVerificationInfoRequestSchema, GetVerificationInfoResponseSchema, NamingService as NamingService$1, ResolveRequestSchema, ResolveResponseSchema, file_agntcy_dir_naming_v1_naming_service } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb.js';
5
9
  import { DomainVerificationSchema, VerificationSchema, file_agntcy_dir_naming_v1_name_verification } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/name_verification_pb.js';
@@ -27,6 +31,57 @@ import { fromJsonString } from '@bufbuild/protobuf';
27
31
  import { NamedRecordRefSchema, RecordMetaSchema, RecordRefSchema, RecordReferrerSchema, RecordSchema, file_agntcy_dir_core_v1_record } from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/core/v1/record_pb.js';
28
32
  import { createClient } from 'spiffe';
29
33
 
34
+ // Copyright 2026 Google LLC
35
+ //
36
+ // Licensed under the Apache License, Version 2.0 (the "License");
37
+ // you may not use this file except in compliance with the License.
38
+ // You may obtain a copy of the License at
39
+ //
40
+ // http://www.apache.org/licenses/LICENSE-2.0
41
+ //
42
+ // Unless required by applicable law or agreed to in writing, software
43
+ // distributed under the License is distributed on an "AS IS" BASIS,
44
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45
+ // See the License for the specific language governing permissions and
46
+ // limitations under the License.
47
+
48
+
49
+ /**
50
+ * Describes the file google/api/httpbody.proto.
51
+ */
52
+ const file_google_api_httpbody = /*@__PURE__*/
53
+ fileDesc("Chlnb29nbGUvYXBpL2h0dHBib2R5LnByb3RvEgpnb29nbGUuYXBpIlgKCEh0dHBCb2R5EhQKDGNvbnRlbnRfdHlwZRgBIAEoCRIMCgRkYXRhGAIgASgMEigKCmV4dGVuc2lvbnMYAyADKAsyFC5nb29nbGUucHJvdG9idWYuQW55QmUKDmNvbS5nb29nbGUuYXBpQg1IdHRwQm9keVByb3RvUAFaO2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2h0dHBib2R5O2h0dHBib2R5ogIER0FQSWIGcHJvdG8z", [file_google_protobuf_any]);
54
+
55
+ /**
56
+ * Describes the message google.api.HttpBody.
57
+ * Use `create(HttpBodySchema)` to create a new message.
58
+ */
59
+ const HttpBodySchema = /*@__PURE__*/
60
+ messageDesc(file_google_api_httpbody, 0);
61
+
62
+ // Copyright AGNTCY Contributors (https://github.com/agntcy)
63
+ // SPDX-License-Identifier: Apache-2.0
64
+
65
+ var catalog_v1 = /*#__PURE__*/Object.freeze({
66
+ __proto__: null,
67
+ AICatalogSchema: AICatalogSchema,
68
+ AIFinderService: AIFinderService$1,
69
+ CatalogCollectionSchema: CatalogCollectionSchema,
70
+ CatalogEntrySchema: CatalogEntrySchema,
71
+ ExportAgentRequestSchema: ExportAgentRequestSchema,
72
+ GetAgentRequestSchema: GetAgentRequestSchema,
73
+ GetAgentResponseSchema: GetAgentResponseSchema,
74
+ GetWellKnownCatalogRequestSchema: GetWellKnownCatalogRequestSchema,
75
+ GetWellKnownCatalogResponseSchema: GetWellKnownCatalogResponseSchema,
76
+ HostInfoSchema: HostInfoSchema,
77
+ HttpBodySchema: HttpBodySchema,
78
+ ListAgentsRequestSchema: ListAgentsRequestSchema,
79
+ ListAgentsResponseSchema: ListAgentsResponseSchema,
80
+ WellKnownCatalogSchema: WellKnownCatalogSchema,
81
+ file_agntcy_dir_catalog_v1_ai_finder_service: file_agntcy_dir_catalog_v1_ai_finder_service,
82
+ file_agntcy_dir_catalog_v1_models: file_agntcy_dir_catalog_v1_models
83
+ });
84
+
30
85
  // Copyright AGNTCY Contributors (https://github.com/agntcy)
31
86
  // SPDX-License-Identifier: Apache-2.0
32
87
 
@@ -904,6 +959,35 @@ async function collectStream(stream) {
904
959
  }
905
960
  return results;
906
961
  }
962
+ async function invoke(opName, call) {
963
+ try {
964
+ return await call();
965
+ }
966
+ catch (e) {
967
+ const msg = e instanceof Error ? e.message : String(e);
968
+ throw new Error(`${opName} failed: ${msg}`);
969
+ }
970
+ }
971
+
972
+ // Copyright AGNTCY Contributors (https://github.com/agntcy)
973
+ // SPDX-License-Identifier: Apache-2.0
974
+ class AIFinderService {
975
+ constructor(aiFinderClient) {
976
+ this.aiFinderClient = aiFinderClient;
977
+ }
978
+ async listAgents(request) {
979
+ return invoke('listAgents', () => this.aiFinderClient.listAgents(request));
980
+ }
981
+ async getAgent(request) {
982
+ return invoke('getAgent', () => this.aiFinderClient.getAgent(request));
983
+ }
984
+ async exportAgent(request) {
985
+ return invoke('exportAgent', () => this.aiFinderClient.exportAgent(request));
986
+ }
987
+ async getWellKnownCatalog(request) {
988
+ return invoke('getWellKnownCatalog', () => this.aiFinderClient.getWellKnownCatalog(request));
989
+ }
990
+ }
907
991
 
908
992
  // Copyright AGNTCY Contributors (https://github.com/agntcy)
909
993
  // SPDX-License-Identifier: Apache-2.0
@@ -1129,6 +1213,7 @@ var core_v1 = /*#__PURE__*/Object.freeze({
1129
1213
 
1130
1214
  var index = /*#__PURE__*/Object.freeze({
1131
1215
  __proto__: null,
1216
+ catalog_v1: catalog_v1,
1132
1217
  core_v1: core_v1,
1133
1218
  events_v1: events_v1,
1134
1219
  naming_v1: naming_v1,
@@ -1488,6 +1573,7 @@ class Client {
1488
1573
  this.syncClient = createClient$1(SyncService$1, transport);
1489
1574
  this.eventClient = createClient$1(EventService$1, transport);
1490
1575
  this.namingClient = createClient$1(NamingService$1, transport);
1576
+ this.aiFinderClient = createClient$1(AIFinderService$1, transport);
1491
1577
  this.storeService = new StoreService(this.storeClient);
1492
1578
  this.routingService = new RoutingService(this.routingClient);
1493
1579
  this.publicationService = new PublicationService(this.publicationClient);
@@ -1496,6 +1582,7 @@ class Client {
1496
1582
  this.syncService = new SyncService(this.syncClient);
1497
1583
  this.eventService = new EventService(this.eventClient);
1498
1584
  this.namingService = new NamingService(this.namingClient);
1585
+ this.aiFinderService = new AIFinderService(this.aiFinderClient);
1499
1586
  }
1500
1587
  static async createGRPCTransport(config, options) {
1501
1588
  return createGrpcTransport(config, {
@@ -1590,6 +1677,18 @@ class Client {
1590
1677
  async getVerificationInfo(request) {
1591
1678
  return this.namingService.getVerificationInfo(request);
1592
1679
  }
1680
+ async listAgents(request) {
1681
+ return this.aiFinderService.listAgents(request);
1682
+ }
1683
+ async getAgent(request) {
1684
+ return this.aiFinderService.getAgent(request);
1685
+ }
1686
+ async exportAgent(request) {
1687
+ return this.aiFinderService.exportAgent(request);
1688
+ }
1689
+ async getWellKnownCatalog(request) {
1690
+ return this.aiFinderService.getWellKnownCatalog(request);
1691
+ }
1593
1692
  }
1594
1693
 
1595
1694
  export { Client, Config, DockerConfig, OAuthPkceError, OAuthSessionManager, OAuthTokenHolder, index as models };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/models/events_v1.ts","../src/models/naming_v1.ts","../src/models/routing_v1.ts","../src/models/search_v1.ts","../src/models/sign_v1.ts","../src/models/store_v1.ts","../src/client/auth/oauthPkce.ts","../src/client/auth/tokenCache.ts","../src/client/auth/session.ts","../src/client/config.ts","../src/client/services/base.ts","../src/client/services/store.ts","../src/client/services/routing.ts","../src/client/services/search.ts","../src/client/services/publication.ts","../src/client/services/sync.ts","../src/client/services/events.ts","../src/client/services/naming.ts","../src/client/dirctl/signing.ts","../src/models/core_v1.ts","../src/models/index.ts","../src/client/dirctl/verification.ts","../src/client/services/signing.ts","../src/client/transport/interceptors.ts","../src/client/transport/channels.ts","../src/client/client.ts"],"sourcesContent":["// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_events_v1_event_service,\n ListenRequest,\n ListenRequestSchema,\n ListenResponse,\n ListenResponseSchema,\n Event,\n EventSchema,\n EventType,\n EventTypeSchema,\n EventService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_naming_v1_naming_service,\n GetVerificationInfoRequest,\n GetVerificationInfoRequestSchema,\n GetVerificationInfoResponse,\n GetVerificationInfoResponseSchema,\n ResolveRequest,\n ResolveRequestSchema,\n ResolveResponse,\n ResolveResponseSchema,\n NamingService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb';\nexport {\n file_agntcy_dir_naming_v1_name_verification,\n Verification,\n VerificationSchema,\n DomainVerification,\n DomainVerificationSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/name_verification_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_routing_v1_peer,\n Peer,\n PeerSchema,\n PeerConnectionType,\n PeerConnectionTypeSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/peer_pb';\nexport {\n file_agntcy_dir_routing_v1_publication_service,\n CreatePublicationResponse,\n CreatePublicationResponseSchema,\n ListPublicationsRequest,\n ListPublicationsRequestSchema,\n ListPublicationsItem,\n ListPublicationsItemSchema,\n GetPublicationRequest,\n GetPublicationRequestSchema,\n GetPublicationResponse,\n GetPublicationResponseSchema,\n PublicationStatus,\n PublicationStatusSchema,\n PublicationService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';\nexport {\n file_agntcy_dir_routing_v1_record_query,\n RecordQuery,\n RecordQuerySchema,\n RecordQueryType,\n RecordQueryTypeSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/record_query_pb';\nexport {\n file_agntcy_dir_routing_v1_routing_service,\n PublishRequest,\n PublishRequestSchema,\n UnpublishRequest,\n UnpublishRequestSchema,\n RecordRefs,\n RecordRefsSchema,\n RecordQueries,\n RecordQueriesSchema,\n SearchRequest,\n SearchRequestSchema,\n SearchResponse,\n SearchResponseSchema,\n ListRequest,\n ListRequestSchema,\n ListResponse,\n ListResponseSchema,\n RoutingService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/routing_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_search_v1_record_query,\n RecordQuery,\n RecordQuerySchema,\n RecordQueryType,\n RecordQueryTypeSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/search/v1/record_query_pb';\nexport {\n file_agntcy_dir_search_v1_search_service,\n SearchCIDsRequest,\n SearchCIDsRequestSchema,\n SearchRecordsRequest,\n SearchRecordsRequestSchema,\n SearchCIDsResponse,\n SearchCIDsResponseSchema,\n SearchRecordsResponse,\n SearchRecordsResponseSchema,\n SearchService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/search/v1/search_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_sign_v1_sign_service,\n SignOptionsOIDC,\n SignOptionsOIDCSchema,\n VerifyOptionsOIDC,\n VerifyOptionsOIDCSchema,\n SignRequest,\n SignRequestSchema,\n SignRequestProvider,\n SignRequestProviderSchema,\n SignWithKey,\n SignWithKeySchema,\n SignWithOIDC,\n SignWithOIDCSchema,\n SignResponse,\n SignResponseSchema,\n VerifyRequest,\n VerifyRequestSchema,\n VerifyRequestProvider,\n VerifyRequestProviderSchema,\n VerifyWithKey,\n VerifyWithKeySchema,\n VerifyWithOIDC,\n VerifyWithOIDCSchema,\n VerifyWithAny,\n VerifyWithAnySchema,\n VerifyResponse,\n VerifyResponseSchema,\n SignerInfo,\n SignerInfoSchema,\n SignerInfoKey,\n SignerInfoKeySchema,\n SignerInfoOIDC,\n SignerInfoOIDCSchema,\n SignService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/sign_service_pb';\nexport {\n file_agntcy_dir_sign_v1_signature,\n Signature,\n SignatureSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/signature_pb';\nexport {\n file_agntcy_dir_sign_v1_public_key,\n PublicKey,\n PublicKeySchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/public_key_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_store_v1_store_service,\n PushReferrerRequest,\n PushReferrerRequestSchema,\n PushReferrerResponse,\n PushReferrerResponseSchema,\n PullReferrerRequest,\n PullReferrerRequestSchema,\n PullReferrerResponse,\n PullReferrerResponseSchema,\n DeleteReferrerRequest,\n DeleteReferrerRequestSchema,\n DeleteReferrerResponse,\n DeleteReferrerResponseSchema,\n StoreService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/store_service_pb';\nexport {\n file_agntcy_dir_store_v1_sync_service,\n CreateSyncRequest,\n CreateSyncRequestSchema,\n CreateSyncResponse,\n CreateSyncResponseSchema,\n ListSyncsRequest,\n ListSyncsRequestSchema,\n ListSyncsItem,\n ListSyncsItemSchema,\n GetSyncRequest,\n GetSyncRequestSchema,\n GetSyncResponse,\n GetSyncResponseSchema,\n DeleteSyncRequest,\n DeleteSyncRequestSchema,\n DeleteSyncResponse,\n DeleteSyncResponseSchema,\n RequestRegistryCredentialsRequest,\n RequestRegistryCredentialsRequestSchema,\n RequestRegistryCredentialsResponse,\n RequestRegistryCredentialsResponseSchema,\n BasicAuthCredentials,\n BasicAuthCredentialsSchema,\n SyncStatus,\n SyncStatusSchema,\n SyncService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/sync_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createHash, randomBytes } from 'node:crypto';\nimport { spawn } from 'node:child_process';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport { platform } from 'node:process';\nimport { URL } from 'node:url';\n\n/**\n * Error thrown when OAuth PKCE authentication fails.\n *\n * @public\n */\nexport class OAuthPkceError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'OAuthPkceError';\n }\n}\n\n/** Subset of client config used by PKCE helpers (avoids circular imports). */\nexport interface OidcPkceConfig {\n oidcIssuer: string;\n oidcClientId: string;\n oidcClientSecret: string;\n oidcRedirectUri: string;\n oidcCallbackPort: number;\n oidcAuthTimeout: number;\n oidcScopes: string[];\n}\n\nexport function normalizeIssuer(issuer: string): string {\n const u = issuer.replace(/\\/+$/, '');\n if (!u.startsWith('https://') && !u.startsWith('http://')) {\n throw new Error('oidc_issuer must be an absolute URL (https:// recommended)');\n }\n return u;\n}\n\nexport interface OpenIdConfiguration {\n authorization_endpoint: string;\n token_endpoint: string;\n [key: string]: unknown;\n}\n\nasync function httpRequest(\n method: string,\n urlStr: string,\n body: string | undefined,\n headers: Record<string, string>,\n options: { timeoutMs: number; rejectUnauthorized: boolean },\n): Promise<{ status: number; text: string }> {\n return new Promise((resolve, reject) => {\n const u = new URL(urlStr);\n const isHttps = u.protocol === 'https:';\n const lib = isHttps ? https : http;\n const port = u.port !== '' ? Number(u.port) : isHttps ? 443 : 80;\n const req = lib.request(\n {\n hostname: u.hostname,\n port,\n path: `${u.pathname}${u.search}`,\n method,\n headers,\n ...(isHttps ? { rejectUnauthorized: options.rejectUnauthorized } : {}),\n },\n (res) => {\n const chunks: Buffer[] = [];\n res.on('data', (c: Buffer) => chunks.push(c));\n res.on('end', () => {\n resolve({\n status: res.statusCode ?? 0,\n text: Buffer.concat(chunks).toString('utf-8'),\n });\n });\n },\n );\n req.setTimeout(options.timeoutMs, () => {\n req.destroy();\n reject(new Error('Request timeout'));\n });\n req.on('error', reject);\n if (body !== undefined) {\n req.write(body);\n }\n req.end();\n });\n}\n\nexport async function fetchOpenidConfiguration(\n issuer: string,\n options: { verify: boolean; timeoutMs: number },\n): Promise<OpenIdConfiguration> {\n const base = normalizeIssuer(issuer);\n const url = `${base}/.well-known/openid-configuration`;\n let response: { status: number; text: string };\n try {\n response = await httpRequest(\n 'GET',\n url,\n undefined,\n {},\n {\n timeoutMs: options.timeoutMs,\n rejectUnauthorized: options.verify,\n },\n );\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new OAuthPkceError(`OpenID discovery failed: ${msg}`);\n }\n if (response.status < 200 || response.status >= 300) {\n throw new OAuthPkceError(\n `OpenID discovery HTTP ${response.status}: ${response.text.slice(0, 500)}`,\n );\n }\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(response.text) as Record<string, unknown>;\n } catch {\n throw new OAuthPkceError('OpenID discovery response is not valid JSON');\n }\n if (typeof data.authorization_endpoint !== 'string' || typeof data.token_endpoint !== 'string') {\n throw new OAuthPkceError(\n 'OpenID configuration missing authorization_endpoint or token_endpoint',\n );\n }\n return data as OpenIdConfiguration;\n}\n\nfunction urlEncodeForm(body: Record<string, string>): string {\n return new URLSearchParams(body).toString();\n}\n\nexport async function exchangeAuthorizationCode(\n tokenEndpoint: string,\n params: {\n code: string;\n redirectUri: string;\n clientId: string;\n codeVerifier: string;\n clientSecret: string;\n verify: boolean;\n timeoutMs: number;\n },\n): Promise<Record<string, unknown>> {\n const body: Record<string, string> = {\n grant_type: 'authorization_code',\n code: params.code,\n redirect_uri: params.redirectUri,\n client_id: params.clientId,\n code_verifier: params.codeVerifier,\n };\n if (params.clientSecret) {\n body.client_secret = params.clientSecret;\n }\n const encoded = urlEncodeForm(body);\n const response = await httpRequest(\n 'POST',\n tokenEndpoint,\n encoded,\n {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Content-Length': String(Buffer.byteLength(encoded)),\n },\n { timeoutMs: params.timeoutMs, rejectUnauthorized: params.verify },\n );\n let json: Record<string, unknown>;\n try {\n json = JSON.parse(response.text) as Record<string, unknown>;\n } catch {\n throw new OAuthPkceError(`Token response not JSON: ${response.text.slice(0, 500)}`);\n }\n if (response.status < 200 || response.status >= 300) {\n throw new OAuthPkceError(`Token HTTP ${response.status}: ${response.text.slice(0, 500)}`);\n }\n return json;\n}\n\nfunction base64Url(buf: Buffer): string {\n return buf.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nfunction createS256CodeChallenge(verifier: string): string {\n const hash = createHash('sha256').update(verifier, 'utf8').digest();\n return base64Url(hash);\n}\n\nfunction openBrowser(url: string): void {\n const os = platform;\n if (os === 'darwin') {\n spawn('open', [url], { stdio: 'ignore', detached: true }).unref();\n } else if (os === 'win32') {\n spawn('cmd', ['/c', 'start', '\"\"', url], {\n stdio: 'ignore',\n detached: true,\n shell: false,\n }).unref();\n } else {\n spawn('xdg-open', [url], { stdio: 'ignore', detached: true }).unref();\n }\n}\n\n/**\n * Holds an OAuth access token for Connect transport interceptors.\n *\n * @public\n */\nexport class OAuthTokenHolder {\n private accessToken: string | undefined;\n\n setTokens(accessToken: string): void {\n this.accessToken = accessToken;\n }\n\n updateFromTokenResponse(payload: Record<string, unknown>): void {\n const access = payload.access_token;\n if (!access || typeof access !== 'string') {\n throw new OAuthPkceError('Token response missing access_token');\n }\n this.setTokens(access);\n }\n\n getAccessToken(): string {\n if (this.accessToken === undefined) {\n throw new Error(\n 'No OAuth access token: set DIRECTORY_CLIENT_AUTH_TOKEN or call Client.authenticateOAuthPkce()',\n );\n }\n return this.accessToken;\n }\n}\n\nexport async function runLoopbackPkceLogin(\n config: OidcPkceConfig,\n metadata: OpenIdConfiguration | undefined,\n options: { verify: boolean; timeoutMs: number },\n): Promise<Record<string, unknown>> {\n if (!config.oidcIssuer) {\n throw new Error('oidc_issuer is required for OAuth PKCE');\n }\n if (!config.oidcClientId) {\n throw new Error('oidc_client_id is required for OAuth PKCE');\n }\n\n const redirectUri = config.oidcRedirectUri.trim();\n const parsed = new URL(redirectUri);\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new Error('oidc_redirect_uri must be an absolute http(s) URL');\n }\n if (parsed.hostname !== 'localhost' && parsed.hostname !== '127.0.0.1') {\n throw new Error('loopback PKCE requires redirect host localhost or 127.0.0.1');\n }\n let path = parsed.pathname || '/';\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n\n const port = config.oidcCallbackPort;\n\n const meta =\n metadata ??\n (await fetchOpenidConfiguration(config.oidcIssuer, {\n verify: options.verify,\n timeoutMs: Math.min(30_000, options.timeoutMs),\n }));\n\n const authEp = meta.authorization_endpoint;\n const tokenEp = meta.token_endpoint;\n\n const codeVerifier = base64Url(randomBytes(48));\n const codeChallenge = createS256CodeChallenge(codeVerifier);\n const state = base64Url(randomBytes(24));\n\n const result: { code?: string } = {};\n const errorHolder: string[] = [];\n\n let settled = false;\n let resolveDone!: () => void;\n const donePromise = new Promise<void>((r) => {\n resolveDone = r;\n });\n function settle(): void {\n if (!settled) {\n settled = true;\n resolveDone();\n }\n }\n\n const server = http.createServer((req, res) => {\n try {\n if (!req.url) {\n errorHolder.push('missing url');\n res.writeHead(400);\n res.end();\n return;\n }\n const u = new URL(req.url, `http://127.0.0.1:${port}`);\n if (u.pathname !== path) {\n errorHolder.push('redirect path does not match oidc_redirect_uri');\n res.writeHead(404, { 'Content-Type': 'text/plain' });\n res.end('Not Found');\n return;\n }\n const err = u.searchParams.get('error');\n if (err) {\n const desc = u.searchParams.get('error_description') ?? '';\n errorHolder.push(`${err}: ${desc}`);\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Authorization failed. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n return;\n }\n if (u.searchParams.get('state') !== state) {\n errorHolder.push('state mismatch');\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Invalid state. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n return;\n }\n const code = u.searchParams.get('code');\n if (!code) {\n errorHolder.push('missing code');\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Missing code. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n return;\n }\n result.code = code;\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Login successful. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n } finally {\n settle();\n }\n });\n\n await new Promise<void>((resolve, reject) => {\n server.once('error', reject);\n server.listen(port, '127.0.0.1', () => resolve());\n });\n\n const scopeStr =\n config.oidcScopes && config.oidcScopes.length > 0 ? config.oidcScopes.join(' ') : 'openid';\n const authParams = new URLSearchParams({\n response_type: 'code',\n client_id: config.oidcClientId,\n redirect_uri: redirectUri,\n scope: scopeStr,\n state,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n });\n const sep = authEp.includes('?') ? '&' : '?';\n const authorizeUrl = `${authEp}${sep}${authParams.toString()}`;\n\n openBrowser(authorizeUrl);\n\n const waitMs = config.oidcAuthTimeout * 1000;\n try {\n await Promise.race([\n donePromise,\n new Promise<never>((_, rej) => {\n setTimeout(() => {\n rej(new OAuthPkceError(`OAuth callback timed out after ${config.oidcAuthTimeout}s`));\n }, waitMs);\n }),\n ]);\n } finally {\n await new Promise<void>((r) => {\n server.close(() => r());\n });\n }\n\n if (errorHolder.length > 0) {\n throw new OAuthPkceError(errorHolder[0] ?? 'unknown error');\n }\n const code = result.code;\n if (!code) {\n throw new OAuthPkceError('Authorization did not return a code');\n }\n\n return exchangeAuthorizationCode(tokenEp, {\n code,\n redirectUri: redirectUri,\n clientId: config.oidcClientId,\n codeVerifier,\n clientSecret: config.oidcClientSecret,\n verify: options.verify,\n timeoutMs: Math.min(30_000, options.timeoutMs),\n });\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\nexport const DEFAULT_TOKEN_CACHE_DIR = 'dirctl';\nexport const TOKEN_CACHE_FILE = 'auth-token.json';\n\nconst DEFAULT_TOKEN_VALIDITY_MS = 8 * 60 * 60 * 1000;\nconst TOKEN_EXPIRY_BUFFER_MS = 5 * 60 * 1000;\nconst CACHE_DIR_PERMS = 0o700;\nconst CACHE_FILE_PERMS = 0o600;\n\nfunction utcNow(): Date {\n return new Date();\n}\n\nfunction parseTimestamp(value: string | undefined | null): Date | undefined {\n if (!value) {\n return undefined;\n }\n const normalized = value.replace('Z', '+00:00');\n const d = new Date(normalized);\n return Number.isNaN(d.getTime()) ? undefined : d;\n}\n\nfunction formatTimestamp(value: Date | undefined): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n return value.toISOString();\n}\n\nexport interface CachedTokenJson {\n access_token: string;\n token_type?: string;\n provider?: string;\n issuer?: string;\n refresh_token?: string;\n expires_at?: string;\n user?: string;\n user_id?: string;\n email?: string;\n created_at?: string;\n}\n\nexport class CachedToken {\n accessToken: string;\n tokenType: string;\n provider: string;\n issuer: string;\n refreshToken: string;\n expiresAt: Date | undefined;\n user: string;\n userId: string;\n email: string;\n createdAt: Date | undefined;\n\n constructor(\n accessToken: string,\n tokenType = '',\n provider = '',\n issuer = '',\n refreshToken = '',\n expiresAt: Date | undefined = undefined,\n user = '',\n userId = '',\n email = '',\n createdAt: Date | undefined = undefined,\n ) {\n this.accessToken = accessToken;\n this.tokenType = tokenType;\n this.provider = provider;\n this.issuer = issuer;\n this.refreshToken = refreshToken;\n this.expiresAt = expiresAt;\n this.user = user;\n this.userId = userId;\n this.email = email;\n this.createdAt = createdAt;\n }\n\n static fromJson(payload: CachedTokenJson): CachedToken {\n return new CachedToken(\n String(payload.access_token ?? ''),\n String(payload.token_type ?? ''),\n String(payload.provider ?? ''),\n String(payload.issuer ?? ''),\n String(payload.refresh_token ?? ''),\n parseTimestamp(payload.expires_at),\n String(payload.user ?? ''),\n String(payload.user_id ?? ''),\n String(payload.email ?? ''),\n parseTimestamp(payload.created_at),\n );\n }\n\n toJson(): Record<string, string> {\n const payload: Record<string, string> = {\n access_token: this.accessToken,\n created_at: formatTimestamp(this.createdAt ?? utcNow()) ?? '',\n };\n if (this.tokenType) {\n payload.token_type = this.tokenType;\n }\n if (this.provider) {\n payload.provider = this.provider;\n }\n if (this.issuer) {\n payload.issuer = this.issuer;\n }\n if (this.refreshToken) {\n payload.refresh_token = this.refreshToken;\n }\n const exp = formatTimestamp(this.expiresAt);\n if (exp !== undefined) {\n payload.expires_at = exp;\n }\n if (this.user) {\n payload.user = this.user;\n }\n if (this.userId) {\n payload.user_id = this.userId;\n }\n if (this.email) {\n payload.email = this.email;\n }\n return payload;\n }\n}\n\n/** @internal */\nexport class TokenCache {\n readonly cacheDir: string;\n\n constructor(cacheDir?: string) {\n if (cacheDir !== undefined) {\n this.cacheDir = cacheDir;\n } else {\n const baseDir = env.XDG_CONFIG_HOME ?? join(homedir(), '.config');\n this.cacheDir = join(baseDir, DEFAULT_TOKEN_CACHE_DIR);\n }\n }\n\n getCachePath(): string {\n return join(this.cacheDir, TOKEN_CACHE_FILE);\n }\n\n load(): CachedToken | undefined {\n const path = this.getCachePath();\n if (!existsSync(path)) {\n return undefined;\n }\n const raw = readFileSync(path, 'utf-8');\n const payload = JSON.parse(raw) as CachedTokenJson;\n return CachedToken.fromJson(payload);\n }\n\n save(token: CachedToken): void {\n mkdirSync(this.cacheDir, { mode: CACHE_DIR_PERMS, recursive: true });\n try {\n chmodSync(this.cacheDir, CACHE_DIR_PERMS);\n } catch {\n // ignore chmod failures (e.g. Windows)\n }\n token.createdAt ??= utcNow();\n const serialized = `${JSON.stringify(token.toJson(), null, 2)}\\n`;\n const path = this.getCachePath();\n writeFileSync(path, serialized, { encoding: 'utf-8', mode: CACHE_FILE_PERMS });\n try {\n chmodSync(path, CACHE_FILE_PERMS);\n } catch {\n // ignore chmod failures\n }\n }\n\n clear(): void {\n const path = this.getCachePath();\n if (existsSync(path)) {\n unlinkSync(path);\n }\n }\n\n isValid(token: CachedToken | undefined): boolean {\n if (!token?.accessToken) {\n return false;\n }\n const now = utcNow().getTime();\n if (token.expiresAt === undefined) {\n const createdAt = token.createdAt ?? new Date(now);\n return now < createdAt.getTime() + DEFAULT_TOKEN_VALIDITY_MS;\n }\n return now + TOKEN_EXPIRY_BUFFER_MS < token.expiresAt.getTime();\n }\n\n getValidToken(): CachedToken | undefined {\n const token = this.load();\n if (!this.isValid(token)) {\n return undefined;\n }\n return token;\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Config } from '../config.js';\nimport { fetchOpenidConfiguration, OAuthTokenHolder, runLoopbackPkceLogin } from './oauthPkce.js';\nimport { CachedToken, TokenCache } from './tokenCache.js';\n\nexport function cachedTokenFromResponse(\n config: Config,\n payload: Record<string, unknown>,\n): CachedToken {\n const expiresIn = payload.expires_in;\n let expiresAt: Date | undefined;\n if (typeof expiresIn === 'number' && Number.isFinite(expiresIn)) {\n expiresAt = new Date(Date.now() + expiresIn * 1000);\n } else if (typeof expiresIn === 'string' && expiresIn !== '') {\n const n = Number(expiresIn);\n if (Number.isFinite(n)) {\n expiresAt = new Date(Date.now() + n * 1000);\n }\n }\n const refreshToken = payload.refresh_token;\n const tokenType = payload.token_type;\n return new CachedToken(\n String(payload.access_token),\n typeof tokenType === 'string' ? tokenType : '',\n 'oidc',\n config.oidcIssuer,\n typeof refreshToken === 'string' ? refreshToken : '',\n expiresAt,\n '',\n '',\n '',\n new Date(),\n );\n}\n\n/**\n * Coordinates OIDC token state with interactive PKCE flow and cache.\n *\n * @public\n */\nexport class OAuthSessionManager {\n readonly config: Config;\n private readonly tokenCache: TokenCache;\n private _oauthHolder: OAuthTokenHolder | null = null;\n\n constructor(config: Config) {\n this.config = config;\n this.tokenCache = new TokenCache();\n\n if (this.config.authMode === 'oidc') {\n this._oauthHolder = new OAuthTokenHolder();\n if (this.config.authToken) {\n this._oauthHolder.setTokens(this.config.authToken);\n } else {\n const cachedToken = this.tokenCache.getValidToken();\n if (cachedToken !== undefined) {\n this._oauthHolder.setTokens(cachedToken.accessToken);\n }\n }\n }\n }\n\n get oauthHolder(): OAuthTokenHolder | null {\n return this._oauthHolder;\n }\n\n hasAccessToken(): boolean {\n if (this._oauthHolder === null) {\n return false;\n }\n try {\n this._oauthHolder.getAccessToken();\n return true;\n } catch {\n return false;\n }\n }\n\n async authenticate(): Promise<void> {\n if (this.config.authMode !== 'oidc') {\n throw new Error(\"authenticateOAuthPkce() requires authMode='oidc'\");\n }\n if (this.config.oidcIssuer === '') {\n throw new Error('oidc_issuer is required for authenticateOAuthPkce()');\n }\n if (this.config.oidcClientId === '') {\n throw new Error('oidc_client_id is required for authenticateOAuthPkce()');\n }\n if (this._oauthHolder === null) {\n throw new Error('OAuth token holder not initialized');\n }\n const verify = !this.config.tlsSkipVerify;\n const timeoutMs = Math.min(30_000, this.config.oidcAuthTimeout * 1000);\n const meta = await fetchOpenidConfiguration(this.config.oidcIssuer, {\n verify,\n timeoutMs,\n });\n const payload = await runLoopbackPkceLogin(this.config, meta, {\n verify,\n timeoutMs: this.config.oidcAuthTimeout * 1000,\n });\n this._oauthHolder.updateFromTokenResponse(payload);\n this.tokenCache.save(cachedTokenFromResponse(this.config, payload));\n console.log('Authenticated with OAuth PKCE');\n console.log('Access token acquired.');\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { existsSync } from 'node:fs';\nimport { env } from 'node:process';\n\n/**\n * Authentication mode for Directory client connections.\n *\n * @public\n */\nexport type AuthMode = '' | 'x509' | 'jwt' | 'tls' | 'oidc';\n\nfunction parseBoolEnv(value: string | undefined, defaultVal: boolean): boolean {\n if (value === undefined || value === '') {\n return defaultVal;\n }\n return ['1', 'true', 'yes', 'on'].includes(value.trim().toLowerCase());\n}\n\nfunction parseIntEnv(value: string | undefined, defaultVal: number): number {\n if (value === undefined || value === '') {\n return defaultVal;\n }\n return Number.parseInt(value, 10);\n}\n\nfunction parseFloatEnv(value: string | undefined, defaultVal: number): number {\n if (value === undefined || value === '') {\n return defaultVal;\n }\n return Number.parseFloat(value);\n}\n\nfunction parseCommaScopes(value: string | undefined, defaultList: string[]): string[] {\n if (value === undefined || value === '') {\n return [...defaultList];\n }\n return value\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/**\n * Docker invocation settings for running dirctl in a container.\n *\n * @public\n */\nexport class DockerConfig {\n static DEFAULT_DIRCTL_IMAGE = 'ghcr.io/agntcy/dir-ctl';\n static DEFAULT_DIRCTL_IMAGE_TAG = 'latest';\n\n dirctlImage: string;\n dirctlImageTag: string;\n envs: Map<string, string>;\n mounts: string[];\n user: string;\n\n constructor(\n dirctlImage: string,\n dirctlImageTag: string,\n envs: Map<string, string>,\n mounts: string[],\n user: string,\n ) {\n this.dirctlImage = dirctlImage;\n this.dirctlImageTag = dirctlImageTag;\n this.envs = envs;\n this.mounts = mounts;\n this.user = user;\n }\n\n getDockerArgs(): string[] {\n this.pruneMounts();\n const commands = ['container', 'run', '--name=dir-ctl', '--rm', '--network', 'host'];\n if (this.user) {\n commands.push('--user');\n commands.push(this.user);\n }\n this.envs.forEach((value: string, key: string) => {\n commands.push('--env');\n commands.push(`${key}=${value}`);\n });\n this.mounts.forEach((value: string) => {\n commands.push('--mount');\n commands.push(value);\n });\n commands.push(`${this.dirctlImage}:${this.dirctlImageTag}`);\n return commands;\n }\n\n pruneMounts(): void {\n this.mounts = this.mounts.filter((mount: string) => {\n if (mount.startsWith('type=bind')) {\n const parts = mount.split(',');\n const srcPart = parts.find((p) => p.startsWith('src='));\n if (srcPart === undefined) {\n return false;\n }\n const _src = srcPart.split('=')[1];\n return existsSync(_src);\n }\n return false;\n });\n }\n}\n\n/**\n * Configuration class for the AGNTCY Directory client.\n *\n * @public\n */\nexport class Config {\n static DEFAULT_SERVER_ADDRESS = '127.0.0.1:8888';\n static DEFAULT_DIRCTL_PATH = 'dirctl';\n static DEFAULT_SPIFFE_ENDPOINT_SOCKET = '';\n static DEFAULT_AUTH_MODE = '';\n static DEFAULT_AUTH_TOKEN = '';\n static DEFAULT_JWT_AUDIENCE = '';\n static DEFAULT_TLS_CA_FILE = '';\n static DEFAULT_TLS_CERT_FILE = '';\n static DEFAULT_TLS_KEY_FILE = '';\n static DEFAULT_TLS_SERVER_NAME = '';\n static DEFAULT_TLS_SKIP_VERIFY = false;\n static DEFAULT_OIDC_ISSUER = '';\n static DEFAULT_OIDC_CLIENT_ID = '';\n static DEFAULT_OIDC_CLIENT_SECRET = '';\n static DEFAULT_OIDC_REDIRECT_URI = 'http://localhost:8484/callback';\n static DEFAULT_OIDC_CALLBACK_PORT = 8484;\n static DEFAULT_OIDC_AUTH_TIMEOUT = 300;\n static DEFAULT_OIDC_SCOPES = ['openid', 'profile', 'email'];\n\n serverAddress: string;\n dirctlPath: string;\n spiffeEndpointSocket: string;\n authMode: AuthMode;\n authToken: string;\n /** Backward-compatible alias for `authToken`. */\n oidcAccessToken: string;\n jwtAudience: string;\n tlsCaFile: string;\n tlsCertFile: string;\n tlsKeyFile: string;\n tlsServerName: string;\n tlsSkipVerify: boolean;\n oidcIssuer: string;\n oidcClientId: string;\n oidcClientSecret: string;\n oidcRedirectUri: string;\n oidcCallbackPort: number;\n oidcAuthTimeout: number;\n oidcScopes: string[];\n dockerConfig: DockerConfig | undefined;\n\n constructor(\n serverAddress = Config.DEFAULT_SERVER_ADDRESS,\n dirctlPath = Config.DEFAULT_DIRCTL_PATH,\n spiffeEndpointSocket = Config.DEFAULT_SPIFFE_ENDPOINT_SOCKET,\n authMode: AuthMode = Config.DEFAULT_AUTH_MODE as AuthMode,\n jwtAudience = Config.DEFAULT_JWT_AUDIENCE,\n tlsCaFile = Config.DEFAULT_TLS_CA_FILE,\n tlsCertFile = Config.DEFAULT_TLS_CERT_FILE,\n tlsKeyFile = Config.DEFAULT_TLS_KEY_FILE,\n authToken = Config.DEFAULT_AUTH_TOKEN,\n tlsServerName = Config.DEFAULT_TLS_SERVER_NAME,\n tlsSkipVerify = Config.DEFAULT_TLS_SKIP_VERIFY,\n oidcIssuer = Config.DEFAULT_OIDC_ISSUER,\n oidcClientId = Config.DEFAULT_OIDC_CLIENT_ID,\n oidcClientSecret = Config.DEFAULT_OIDC_CLIENT_SECRET,\n oidcRedirectUri = Config.DEFAULT_OIDC_REDIRECT_URI,\n oidcCallbackPort = Config.DEFAULT_OIDC_CALLBACK_PORT,\n oidcAuthTimeout = Config.DEFAULT_OIDC_AUTH_TIMEOUT,\n oidcScopes: string[] | undefined = undefined,\n oidcAccessToken: string | undefined = undefined,\n dockerConfig: DockerConfig | undefined = undefined,\n ) {\n const resolvedAuthToken = [authToken, oidcAccessToken].find(Boolean) ?? '';\n\n if (!serverAddress.startsWith('http://') && !serverAddress.startsWith('https://')) {\n if (authMode === 'x509' || authMode === 'jwt' || authMode === 'tls' || authMode === 'oidc') {\n serverAddress = `https://${serverAddress}`;\n } else {\n serverAddress = `http://${serverAddress}`;\n }\n }\n\n this.serverAddress = serverAddress;\n this.dirctlPath = dirctlPath;\n this.spiffeEndpointSocket = spiffeEndpointSocket;\n this.authMode = authMode;\n this.authToken = resolvedAuthToken;\n this.oidcAccessToken = resolvedAuthToken;\n this.jwtAudience = jwtAudience;\n this.tlsCaFile = tlsCaFile;\n this.tlsCertFile = tlsCertFile;\n this.tlsKeyFile = tlsKeyFile;\n this.tlsServerName = tlsServerName;\n this.tlsSkipVerify = tlsSkipVerify;\n this.oidcIssuer = oidcIssuer;\n this.oidcClientId = oidcClientId;\n this.oidcClientSecret = oidcClientSecret;\n this.oidcRedirectUri = oidcRedirectUri;\n this.oidcCallbackPort = oidcCallbackPort;\n this.oidcAuthTimeout = oidcAuthTimeout;\n this.oidcScopes = oidcScopes !== undefined ? [...oidcScopes] : [...Config.DEFAULT_OIDC_SCOPES];\n this.dockerConfig = dockerConfig;\n }\n\n static loadFromEnv(prefix = 'DIRECTORY_CLIENT_') {\n const dirctlPath = env.DIRCTL_PATH ?? Config.DEFAULT_DIRCTL_PATH;\n\n const serverAddress = env[`${prefix}SERVER_ADDRESS`] ?? Config.DEFAULT_SERVER_ADDRESS;\n const spiffeEndpointSocketPath =\n env[`${prefix}SPIFFE_SOCKET_PATH`] ?? Config.DEFAULT_SPIFFE_ENDPOINT_SOCKET;\n const authMode = (env[`${prefix}AUTH_MODE`] ?? Config.DEFAULT_AUTH_MODE) as AuthMode;\n const authToken = env[`${prefix}AUTH_TOKEN`] ?? Config.DEFAULT_AUTH_TOKEN;\n const jwtAudience = env[`${prefix}JWT_AUDIENCE`] ?? Config.DEFAULT_JWT_AUDIENCE;\n const tlsCaFile = env[`${prefix}TLS_CA_FILE`] ?? Config.DEFAULT_TLS_CA_FILE;\n const tlsCertFile = env[`${prefix}TLS_CERT_FILE`] ?? Config.DEFAULT_TLS_CERT_FILE;\n const tlsKeyFile = env[`${prefix}TLS_KEY_FILE`] ?? Config.DEFAULT_TLS_KEY_FILE;\n const tlsServerName = env[`${prefix}TLS_SERVER_NAME`] ?? Config.DEFAULT_TLS_SERVER_NAME;\n const tlsSkipVerify = parseBoolEnv(\n env[`${prefix}TLS_SKIP_VERIFY`],\n Config.DEFAULT_TLS_SKIP_VERIFY,\n );\n const oidcIssuer = env[`${prefix}OIDC_ISSUER`] ?? Config.DEFAULT_OIDC_ISSUER;\n const oidcClientId = env[`${prefix}OIDC_CLIENT_ID`] ?? Config.DEFAULT_OIDC_CLIENT_ID;\n const oidcClientSecret =\n env[`${prefix}OIDC_CLIENT_SECRET`] ?? Config.DEFAULT_OIDC_CLIENT_SECRET;\n const oidcRedirectUri = env[`${prefix}OIDC_REDIRECT_URI`] ?? Config.DEFAULT_OIDC_REDIRECT_URI;\n const oidcCallbackPort = parseIntEnv(\n env[`${prefix}OIDC_CALLBACK_PORT`],\n Config.DEFAULT_OIDC_CALLBACK_PORT,\n );\n const oidcAuthTimeout = parseFloatEnv(\n env[`${prefix}OIDC_AUTH_TIMEOUT`],\n Config.DEFAULT_OIDC_AUTH_TIMEOUT,\n );\n const oidcScopes = parseCommaScopes(env[`${prefix}OIDC_SCOPES`], Config.DEFAULT_OIDC_SCOPES);\n\n let dockerConfig: DockerConfig | undefined = undefined;\n const dirctlImage = env.DIRCTL_IMAGE;\n const dirctlImageTag = env.DIRCTL_IMAGE_TAG;\n if (dirctlImage || dirctlImageTag) {\n dockerConfig = new DockerConfig(\n dirctlImage ?? DockerConfig.DEFAULT_DIRCTL_IMAGE,\n dirctlImageTag ?? DockerConfig.DEFAULT_DIRCTL_IMAGE_TAG,\n new Map<string, string>(),\n [],\n '0:0',\n );\n }\n\n return new Config(\n serverAddress,\n dirctlPath,\n spiffeEndpointSocketPath,\n authMode,\n jwtAudience,\n tlsCaFile,\n tlsCertFile,\n tlsKeyFile,\n authToken,\n tlsServerName,\n tlsSkipVerify,\n oidcIssuer,\n oidcClientId,\n oidcClientSecret,\n oidcRedirectUri,\n oidcCallbackPort,\n oidcAuthTimeout,\n oidcScopes,\n undefined,\n dockerConfig,\n );\n }\n\n getCommandAndArgs(args: string[]): [string, string[]] {\n if (this.dockerConfig) {\n const dockerArgs = this.dockerConfig.getDockerArgs();\n return ['docker', dockerArgs.concat(args)];\n }\n return [`${this.dirctlPath}`, args];\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport async function* requestGenerator<T>(reqs: T[]): AsyncIterable<T> {\n for (const req of reqs) {\n yield req;\n }\n}\n\nexport async function collectStream<T>(stream: AsyncIterable<T>): Promise<T[]> {\n const results: T[] = [];\n for await (const item of stream) {\n results.push(item);\n }\n return results;\n}\n\nexport async function invoke<T>(opName: string, call: () => Promise<T>): Promise<T> {\n try {\n return await call();\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`${opName} failed: ${msg}`);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream, requestGenerator } from './base.js';\n\nexport class StoreService {\n private readonly storeClient: Client<typeof models.store_v1.StoreService>;\n\n constructor(storeClient: Client<typeof models.store_v1.StoreService>) {\n this.storeClient = storeClient;\n }\n\n async push(records: models.core_v1.Record[]): Promise<models.core_v1.RecordRef[]> {\n return collectStream(this.storeClient.push(requestGenerator(records)));\n }\n\n async push_referrer(\n requests: models.store_v1.PushReferrerRequest[],\n ): Promise<models.store_v1.PushReferrerResponse[]> {\n return collectStream(this.storeClient.pushReferrer(requestGenerator(requests)));\n }\n\n async pull(refs: models.core_v1.RecordRef[]): Promise<models.core_v1.Record[]> {\n return collectStream(this.storeClient.pull(requestGenerator(refs)));\n }\n\n async pull_referrer(\n requests: models.store_v1.PullReferrerRequest[],\n ): Promise<models.store_v1.PullReferrerResponse[]> {\n return collectStream(this.storeClient.pullReferrer(requestGenerator(requests)));\n }\n\n async lookup(refs: models.core_v1.RecordRef[]): Promise<models.core_v1.RecordMeta[]> {\n return collectStream(this.storeClient.lookup(requestGenerator(refs)));\n }\n\n async delete(refs: models.core_v1.RecordRef[]): Promise<void> {\n await this.storeClient.delete(requestGenerator(refs));\n }\n\n async deleteReferrer(\n request: models.store_v1.DeleteReferrerRequest,\n ): Promise<models.store_v1.DeleteReferrerResponse> {\n async function* requests() {\n yield request;\n }\n const responses = await collectStream(this.storeClient.deleteReferrer(requests()));\n if (responses.length === 0) {\n throw new Error('deleteReferrer failed: empty response');\n }\n return responses[0];\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class RoutingService {\n private readonly routingClient: Client<typeof models.routing_v1.RoutingService>;\n\n constructor(routingClient: Client<typeof models.routing_v1.RoutingService>) {\n this.routingClient = routingClient;\n }\n\n async publish(request: models.routing_v1.PublishRequest): Promise<void> {\n await this.routingClient.publish(request);\n }\n\n async list(request: models.routing_v1.ListRequest): Promise<models.routing_v1.ListResponse[]> {\n return collectStream(this.routingClient.list(request));\n }\n\n async searchRouting(\n request: models.routing_v1.SearchRequest,\n ): Promise<models.routing_v1.SearchResponse[]> {\n return collectStream(this.routingClient.search(request));\n }\n\n async unpublish(request: models.routing_v1.UnpublishRequest): Promise<void> {\n await this.routingClient.unpublish(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class SearchService {\n private readonly searchClient: Client<typeof models.search_v1.SearchService>;\n\n constructor(searchClient: Client<typeof models.search_v1.SearchService>) {\n this.searchClient = searchClient;\n }\n\n async searchCIDs(\n request: models.search_v1.SearchCIDsRequest,\n ): Promise<models.search_v1.SearchCIDsResponse[]> {\n return collectStream(this.searchClient.searchCIDs(request));\n }\n\n async searchRecords(\n request: models.search_v1.SearchRecordsRequest,\n ): Promise<models.search_v1.SearchRecordsResponse[]> {\n return collectStream(this.searchClient.searchRecords(request));\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class PublicationService {\n private readonly publicationClient: Client<typeof models.routing_v1.PublicationService>;\n\n constructor(publicationClient: Client<typeof models.routing_v1.PublicationService>) {\n this.publicationClient = publicationClient;\n }\n\n async create_publication(\n request: models.routing_v1.PublishRequest,\n ): Promise<models.routing_v1.CreatePublicationResponse> {\n return await this.publicationClient.createPublication(request);\n }\n\n async list_publication(\n request: models.routing_v1.ListPublicationsRequest,\n ): Promise<models.routing_v1.ListPublicationsItem[]> {\n return collectStream(this.publicationClient.listPublications(request));\n }\n\n async get_publication(\n request: models.routing_v1.GetPublicationRequest,\n ): Promise<models.routing_v1.GetPublicationResponse> {\n return await this.publicationClient.getPublication(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class SyncService {\n private readonly syncClient: Client<typeof models.store_v1.SyncService>;\n\n constructor(syncClient: Client<typeof models.store_v1.SyncService>) {\n this.syncClient = syncClient;\n }\n\n async create_sync(\n request: models.store_v1.CreateSyncRequest,\n ): Promise<models.store_v1.CreateSyncResponse> {\n return await this.syncClient.createSync(request);\n }\n\n async list_syncs(\n request: models.store_v1.ListSyncsRequest,\n ): Promise<models.store_v1.ListSyncsItem[]> {\n return collectStream(this.syncClient.listSyncs(request));\n }\n\n async get_sync(\n request: models.store_v1.GetSyncRequest,\n ): Promise<models.store_v1.GetSyncResponse> {\n return await this.syncClient.getSync(request);\n }\n\n async delete_sync(\n request: models.store_v1.DeleteSyncRequest,\n ): Promise<models.store_v1.DeleteSyncResponse> {\n return await this.syncClient.deleteSync(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\n\nexport class EventService {\n private readonly eventClient: Client<typeof models.events_v1.EventService>;\n\n constructor(eventClient: Client<typeof models.events_v1.EventService>) {\n this.eventClient = eventClient;\n }\n\n listen(request: models.events_v1.ListenRequest): AsyncIterable<models.events_v1.ListenResponse> {\n return this.eventClient.listen(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\n\nexport class NamingService {\n private readonly namingClient: Client<typeof models.naming_v1.NamingService>;\n\n constructor(namingClient: Client<typeof models.naming_v1.NamingService>) {\n this.namingClient = namingClient;\n }\n\n async resolve(\n request: models.naming_v1.ResolveRequest,\n ): Promise<models.naming_v1.ResolveResponse> {\n return await this.namingClient.resolve(request);\n }\n\n async getVerificationInfo(\n request: models.naming_v1.GetVerificationInfoRequest,\n ): Promise<models.naming_v1.GetVerificationInfoResponse> {\n return await this.namingClient.getVerificationInfo(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { spawnSync, type SpawnSyncReturns } from 'node:child_process';\nimport { env } from 'node:process';\n\nimport type { Config } from '../config.js';\nimport * as models from '../../models/index.js';\n\nexport function signWithKey(\n config: Config,\n cid: string,\n req: models.sign_v1.SignWithKey,\n): SpawnSyncReturns<string> {\n // NOTE: dirctl appends :80 or :443 to server address if has http or https:// prefix\n const dirctlServerAddress = config.serverAddress.replace(/^https?:\\/\\//, '');\n\n const shell_env = { ...env };\n shell_env.COSIGN_PASSWORD = req.password ? String(req.password) : '';\n if (config.dockerConfig) {\n config.dockerConfig.envs.set('COSIGN_PASSWORD', shell_env.COSIGN_PASSWORD);\n config.dockerConfig.envs.set('DIRECTORY_CLIENT_SERVER_ADDRESS', dirctlServerAddress);\n }\n\n const args = ['sign', cid, '--key', req.privateKey];\n const [command, commandArgs] = config.getCommandAndArgs(args);\n\n return spawnSync(command, commandArgs, {\n env: { ...env, DIRECTORY_CLIENT_SERVER_ADDRESS: dirctlServerAddress },\n encoding: 'utf8',\n stdio: 'pipe',\n });\n}\n\nexport function signWithOidc(\n config: Config,\n cid: string,\n req: models.sign_v1.SignWithOIDC,\n): SpawnSyncReturns<string> {\n const args = ['sign', cid];\n if (req.idToken !== '') {\n args.push(...['--oidc-token', req.idToken]);\n }\n if (req.options?.oidcProviderUrl !== undefined && req.options.oidcProviderUrl !== '') {\n args.push(...['--oidc-provider-url', req.options.oidcProviderUrl]);\n }\n if (req.options?.oidcClientId !== undefined && req.options.oidcClientId !== '') {\n args.push(...['--oidc-client-id', req.options.oidcClientId]);\n }\n if (req.options?.oidcClientSecret !== undefined && req.options.oidcClientSecret !== '') {\n args.push(...['--oidc-client-secret', req.options.oidcClientSecret]);\n }\n if (req.options?.skipTlog !== undefined && req.options.skipTlog) {\n args.push('--skip-tlog');\n }\n if (req.options?.fulcioUrl !== undefined && req.options.fulcioUrl !== '') {\n args.push(...['--fulcio-url', req.options.fulcioUrl]);\n }\n if (req.options?.rekorUrl !== undefined && req.options.rekorUrl !== '') {\n args.push(...['--rekor-url', req.options.rekorUrl]);\n }\n if (req.options?.timestampUrl !== undefined && req.options.timestampUrl !== '') {\n args.push(...['--timestamp-url', req.options.timestampUrl]);\n }\n\n const [command, commandArgs] = config.getCommandAndArgs(args);\n\n // NOTE: dirctl appends :80 or :443 to server address if has http or https:// prefix\n const dirctlServerAddress = config.serverAddress.replace(/^https?:\\/\\//, '');\n\n return spawnSync(command, commandArgs, {\n env: { ...env, DIRECTORY_CLIENT_SERVER_ADDRESS: dirctlServerAddress },\n encoding: 'utf8',\n stdio: 'pipe',\n });\n}\n\nexport function signRecord(config: Config, req: models.sign_v1.SignRequest): void {\n const cid = req.recordRef?.cid ?? '';\n let output: SpawnSyncReturns<string>;\n\n switch (req.provider?.request.case) {\n case 'oidc':\n output = signWithOidc(config, cid, req.provider.request.value);\n break;\n case 'key':\n output = signWithKey(config, cid, req.provider.request.value);\n break;\n default:\n throw new Error('unsupported provider was supplied');\n }\n\n if (output.status !== 0) {\n throw output.error ?? output.stderr;\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_core_v1_record,\n RecordRef,\n RecordRefSchema,\n NamedRecordRef,\n NamedRecordRefSchema,\n RecordMeta,\n RecordMetaSchema,\n Record,\n RecordSchema,\n RecordReferrer,\n RecordReferrerSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/core/v1/record_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport * as core_v1 from './core_v1';\nexport * as naming_v1 from './naming_v1';\nexport * as routing_v1 from './routing_v1';\nexport * as search_v1 from './search_v1';\nexport * as sign_v1 from './sign_v1';\nexport * as store_v1 from './store_v1';\nexport * as events_v1 from './events_v1';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { closeSync, mkdtempSync, openSync, readFileSync, existsSync, rmSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport { env } from 'node:process';\n\nimport { fromJsonString } from '@bufbuild/protobuf';\n\nimport type { Config } from '../config.js';\nimport * as models from '../../models/index.js';\n\nfunction runVerifyCommand(config: Config, args: string[]): void {\n const [command, commandArgs] = config.getCommandAndArgs(args);\n const output = spawnSync(command, commandArgs, {\n env: { ...env, DIRECTORY_CLIENT_SERVER_ADDRESS: config.serverAddress },\n encoding: 'utf8',\n stdio: 'pipe',\n });\n\n if (output.status !== 0) {\n throw new Error(output.stderr || output.stdout || 'Verification failed');\n }\n}\n\nexport function verifyWithKey(\n config: Config,\n cid: string,\n req: models.sign_v1.VerifyWithKey,\n outputPath: string,\n): void {\n const args = ['verify', cid, '--key', req.publicKey, '--output-file', outputPath];\n runVerifyCommand(config, args);\n}\n\nexport function verifyWithAny(\n config: Config,\n cid: string,\n req: models.sign_v1.VerifyWithAny | undefined,\n outputPath: string,\n): void {\n const args = ['verify', cid, '--output-file', outputPath];\n\n if (req?.oidcOptions !== undefined) {\n if (req.oidcOptions.tufMirrorUrl !== undefined && req.oidcOptions.tufMirrorUrl !== '') {\n args.push(...['--tuf-mirror-url', req.oidcOptions.tufMirrorUrl]);\n }\n if (req.oidcOptions.trustedRootPath !== undefined && req.oidcOptions.trustedRootPath !== '') {\n args.push(...['--trusted-root-path', req.oidcOptions.trustedRootPath]);\n }\n if (req.oidcOptions.ignoreTlog === true) {\n args.push('--ignore-tlog');\n }\n if (req.oidcOptions.ignoreTsa === true) {\n args.push('--ignore-tsa');\n }\n if (req.oidcOptions.ignoreSct === true) {\n args.push('--ignore-sct');\n }\n }\n\n runVerifyCommand(config, args);\n}\n\nexport function verifyWithOidc(\n config: Config,\n cid: string,\n req: models.sign_v1.VerifyWithOIDC | undefined,\n outputPath: string,\n): void {\n const args = ['verify', cid, '--output-file', outputPath];\n\n if (req !== undefined) {\n if (req.issuer !== undefined && req.issuer !== '') {\n args.push(...['--oidc-issuer', req.issuer]);\n }\n if (req.subject !== undefined && req.subject !== '') {\n args.push(...['--oidc-subject', req.subject]);\n }\n\n if (req.options !== undefined) {\n if (req.options.tufMirrorUrl !== undefined && req.options.tufMirrorUrl !== '') {\n args.push(...['--tuf-mirror-url', req.options.tufMirrorUrl]);\n }\n if (req.options.trustedRootPath !== undefined && req.options.trustedRootPath !== '') {\n args.push(...['--trusted-root-path', req.options.trustedRootPath]);\n }\n if (req.options.ignoreTlog === true) {\n args.push('--ignore-tlog');\n }\n if (req.options.ignoreTsa === true) {\n args.push('--ignore-tsa');\n }\n if (req.options.ignoreSct === true) {\n args.push('--ignore-sct');\n }\n }\n }\n\n runVerifyCommand(config, args);\n}\n\nexport function verifyRecord(\n config: Config,\n request: models.sign_v1.VerifyRequest,\n): models.sign_v1.VerifyResponse {\n const tempDir = mkdtempSync(join(tmpdir(), 'dirctl-verify-'));\n const outputPath = join(tempDir, 'output.json');\n closeSync(openSync(outputPath, 'w'));\n let resolvedOutputPath = outputPath;\n\n if (config.dockerConfig) {\n resolvedOutputPath = outputPath.split('/').reverse()[0];\n config.dockerConfig.mounts.push(`type=bind,src=${outputPath},dst=/${resolvedOutputPath}`);\n }\n\n try {\n const cid = request.recordRef?.cid ?? '';\n\n switch (request.provider?.request.case) {\n case 'oidc':\n verifyWithOidc(config, cid, request.provider.request.value, resolvedOutputPath);\n break;\n case 'key':\n verifyWithKey(config, cid, request.provider.request.value, resolvedOutputPath);\n break;\n case 'any':\n verifyWithAny(config, cid, request.provider.request.value, resolvedOutputPath);\n break;\n default:\n throw new Error('unsupported provider was supplied');\n }\n\n if (!existsSync(outputPath)) {\n throw new Error('verification output file was not created');\n }\n\n const jsonContent = readFileSync(outputPath, 'utf8');\n\n return fromJsonString(models.sign_v1.VerifyResponseSchema, jsonContent);\n } catch (e) {\n throw new Error(`Failed to parse verification response: ${e}`);\n } finally {\n try {\n rmSync(tempDir, { recursive: true, force: true });\n } catch {\n // ignore cleanup errors\n }\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport type { Config } from '../config.js';\nimport { signRecord } from '../dirctl/signing.js';\nimport { verifyRecord } from '../dirctl/verification.js';\nimport * as models from '../../models/index.js';\n\nexport class SignService {\n private readonly config: Config;\n private readonly signClient: Client<typeof models.sign_v1.SignService>;\n\n constructor(config: Config, signClient: Client<typeof models.sign_v1.SignService>) {\n this.config = config;\n this.signClient = signClient;\n }\n\n sign(req: models.sign_v1.SignRequest): void {\n signRecord(this.config, req);\n }\n\n async verify(request: models.sign_v1.VerifyRequest): Promise<models.sign_v1.VerifyResponse> {\n if (request.fromServer) {\n if (!request.recordRef?.cid) {\n throw new Error('VerifyRequest.recordRef with cid is required');\n }\n return await this.signClient.verify(request);\n }\n return verifyRecord(this.config, request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Interceptor } from '@connectrpc/connect';\nimport { createClient as createClientSpiffe } from 'spiffe';\n\nimport type { Config } from '../config.js';\nimport type { OAuthTokenHolder } from '../auth/oauthPkce.js';\n\nexport function createBearerAuthInterceptor(holder: OAuthTokenHolder): Interceptor {\n return (next) => async (req) => {\n req.header.set('authorization', `Bearer ${holder.getAccessToken()}`);\n return await next(req);\n };\n}\n\nexport function createJwtAuthInterceptor(config: Config): Interceptor {\n if (config.spiffeEndpointSocket === '') {\n throw new Error('SPIFFE socket path is required for JWT authentication');\n }\n if (config.jwtAudience === '') {\n throw new Error('JWT audience is required for JWT authentication');\n }\n\n const client = createClientSpiffe(config.spiffeEndpointSocket);\n\n return (next) => async (req) => {\n const jwtCall = client.fetchJWTSVID({\n spiffeId: '',\n audience: [config.jwtAudience],\n });\n\n const response = await jwtCall.response;\n\n if (!response.svids || response.svids.length === 0) {\n throw new Error('Failed to fetch JWT-SVID from SPIRE: no SVIDs returned');\n }\n\n const jwtToken = response.svids[0].svid;\n req.header.set('authorization', `Bearer ${jwtToken}`);\n\n return await next(req);\n };\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { readFileSync } from 'node:fs';\nimport type * as http2 from 'node:http2';\n\nimport type { Transport } from '@connectrpc/connect';\nimport { createGrpcTransport as createConnectGrpcTransport } from '@connectrpc/connect-node';\nimport { createClient as createClientSpiffe, type X509SVID } from 'spiffe';\n\nimport type { Config } from '../config.js';\nimport type { OAuthTokenHolder } from '../auth/oauthPkce.js';\nimport { createBearerAuthInterceptor, createJwtAuthInterceptor } from './interceptors.js';\n\nfunction convertToPEM(bytes: Uint8Array, label: string): string {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n const base64String = btoa(binary);\n const lines = base64String.match(/.{1,64}/g) ?? [];\n return [`-----BEGIN ${label}-----`, ...lines, `-----END ${label}-----`].join('\\n');\n}\n\nfunction secureNodeOptions(\n config: Config,\n base: http2.SecureClientSessionOptions,\n): http2.SecureClientSessionOptions {\n const out: http2.SecureClientSessionOptions = { ...base };\n const sn = config.tlsServerName.trim();\n if (sn !== '') {\n out.servername = sn;\n }\n return out;\n}\n\nexport function createOidcTransport(config: Config, holder: OAuthTokenHolder): Transport {\n let ca: string | undefined;\n if (config.tlsCaFile !== '') {\n try {\n ca = readFileSync(config.tlsCaFile).toString();\n } catch (e) {\n throw new Error(`Failed to read TLS CA file: ${(e as Error).message}`);\n }\n }\n const nodeBase: http2.SecureClientSessionOptions = {};\n if (ca !== undefined) {\n nodeBase.ca = ca;\n }\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n interceptors: [createBearerAuthInterceptor(holder)],\n nodeOptions: secureNodeOptions(config, nodeBase),\n });\n}\n\nasync function createX509Transport(config: Config): Promise<Transport> {\n if (config.spiffeEndpointSocket === '') {\n throw new Error('SPIFFE socket path is required for X.509 authentication');\n }\n\n const client = createClientSpiffe(config.spiffeEndpointSocket);\n\n let svid: X509SVID = {\n spiffeId: '',\n hint: '',\n x509Svid: new Uint8Array(),\n x509SvidKey: new Uint8Array(),\n bundle: new Uint8Array(),\n };\n\n const svidStream = client.fetchX509SVID({});\n for await (const message of svidStream.responses) {\n message.svids.forEach((_svid) => {\n svid = _svid;\n });\n\n if (message.svids.length > 0) {\n break;\n }\n }\n\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n nodeOptions: secureNodeOptions(config, {\n ca: convertToPEM(svid.bundle, 'TRUSTED CERTIFICATE'),\n cert: convertToPEM(svid.x509Svid, 'CERTIFICATE'),\n key: convertToPEM(svid.x509SvidKey, 'PRIVATE KEY'),\n }),\n });\n}\n\nasync function createJWTTransport(config: Config): Promise<Transport> {\n if (config.spiffeEndpointSocket === '') {\n throw new Error('SPIFFE socket path is required for JWT authentication');\n }\n\n const client = createClientSpiffe(config.spiffeEndpointSocket);\n\n let bundle: Uint8Array | null = null;\n const bundleStream = client.fetchX509Bundles({});\n for await (const message of bundleStream.responses) {\n for (const [, bundleData] of Object.entries(message.bundles)) {\n bundle = new Uint8Array(bundleData);\n break;\n }\n if (bundle !== null) {\n break;\n }\n }\n\n if (bundle === null || bundle.length === 0) {\n throw new Error('Failed to fetch X.509 bundle from SPIRE: no bundles returned');\n }\n\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n interceptors: [createJwtAuthInterceptor(config)],\n nodeOptions: secureNodeOptions(config, {\n ca: convertToPEM(bundle, 'CERTIFICATE'),\n }),\n });\n}\n\nasync function createTLSTransport(config: Config): Promise<Transport> {\n if (config.tlsCaFile === '') {\n throw new Error('TLS CA file is required for TLS authentication');\n }\n if (config.tlsCertFile === '') {\n throw new Error('TLS certificate file is required for TLS authentication');\n }\n if (config.tlsKeyFile === '') {\n throw new Error('TLS key file is required for TLS authentication');\n }\n\n let root_ca: string;\n let cert_chain: string;\n let private_key: string;\n\n try {\n root_ca = readFileSync(config.tlsCaFile).toString();\n cert_chain = readFileSync(config.tlsCertFile).toString();\n private_key = readFileSync(config.tlsKeyFile).toString();\n } catch (e) {\n console.error('Error reading file:', (e as Error).message);\n throw e;\n }\n\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n nodeOptions: secureNodeOptions(config, {\n ca: root_ca,\n cert: cert_chain,\n key: private_key,\n }),\n });\n}\n\nexport async function createGrpcTransport(\n config: Config,\n options?: { oidcTokenHolder?: OAuthTokenHolder },\n): Promise<Transport> {\n switch (config.authMode) {\n case '':\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n });\n\n case 'jwt':\n return await createJWTTransport(config);\n\n case 'x509':\n return await createX509Transport(config);\n\n case 'tls':\n return await createTLSTransport(config);\n\n case 'oidc': {\n const holder = options?.oidcTokenHolder;\n if (holder === undefined) {\n throw new Error('createGrpcTransport: authMode oidc requires options.oidcTokenHolder');\n }\n return createOidcTransport(config, holder);\n }\n\n default:\n throw new Error(`Unsupported auth mode: ${config.authMode}`);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Client as GrpcClient, createClient, type Transport } from '@connectrpc/connect';\nimport { createGrpcTransport as createConnectGrpcTransport } from '@connectrpc/connect-node';\n\nimport type { Record, RecordMeta, RecordRef } from '../models/core_v1';\nimport type { ListenRequest, ListenResponse } from '../models/events_v1';\nimport type {\n GetVerificationInfoRequest,\n GetVerificationInfoResponse,\n ResolveRequest,\n ResolveResponse,\n} from '../models/naming_v1';\nimport type {\n CreatePublicationResponse,\n GetPublicationRequest,\n GetPublicationResponse,\n ListPublicationsItem,\n ListPublicationsRequest,\n ListRequest,\n ListResponse,\n PublishRequest,\n SearchRequest,\n SearchResponse,\n UnpublishRequest,\n} from '../models/routing_v1';\nimport type {\n SearchCIDsRequest,\n SearchCIDsResponse,\n SearchRecordsRequest,\n SearchRecordsResponse,\n} from '../models/search_v1';\nimport type { SignRequest, VerifyRequest, VerifyResponse } from '../models/sign_v1';\nimport type {\n CreateSyncRequest,\n CreateSyncResponse,\n DeleteReferrerRequest,\n DeleteReferrerResponse,\n DeleteSyncRequest,\n DeleteSyncResponse,\n GetSyncRequest,\n GetSyncResponse,\n ListSyncsItem,\n ListSyncsRequest,\n PullReferrerRequest,\n PullReferrerResponse,\n PushReferrerRequest,\n PushReferrerResponse,\n} from '../models/store_v1';\nimport * as events_v1 from '../models/events_v1';\nimport * as naming_v1 from '../models/naming_v1';\nimport * as routing_v1 from '../models/routing_v1';\nimport * as search_v1 from '../models/search_v1';\nimport * as sign_v1 from '../models/sign_v1';\nimport * as store_v1 from '../models/store_v1';\nimport { OAuthSessionManager } from './auth/session.js';\nimport { Config } from './config.js';\nimport {\n EventService,\n NamingService,\n PublicationService,\n RoutingService,\n SearchService,\n SignService,\n StoreService,\n SyncService,\n} from './services/index.js';\nimport { createGrpcTransport, createOidcTransport } from './transport/channels.js';\nimport type { OAuthTokenHolder } from './auth/oauthPkce.js';\n\n/**\n * High-level client for interacting with AGNTCY Directory services.\n *\n * @public\n */\nexport class Client {\n config: Config;\n readonly oauthSession: OAuthSessionManager;\n\n /** @internal */\n storeClient: GrpcClient<typeof store_v1.StoreService>;\n /** @internal */\n routingClient: GrpcClient<typeof routing_v1.RoutingService>;\n /** @internal */\n publicationClient: GrpcClient<typeof routing_v1.PublicationService>;\n /** @internal */\n searchClient: GrpcClient<typeof search_v1.SearchService>;\n /** @internal */\n signClient: GrpcClient<typeof sign_v1.SignService>;\n /** @internal */\n syncClient: GrpcClient<typeof store_v1.SyncService>;\n /** @internal */\n eventClient: GrpcClient<typeof events_v1.EventService>;\n /** @internal */\n namingClient: GrpcClient<typeof naming_v1.NamingService>;\n\n /** @internal */\n storeService: StoreService;\n /** @internal */\n routingService: RoutingService;\n /** @internal */\n publicationService: PublicationService;\n /** @internal */\n searchService: SearchService;\n /** @internal */\n signService: SignService;\n /** @internal */\n syncService: SyncService;\n /** @internal */\n eventService: EventService;\n /** @internal */\n namingService: NamingService;\n\n constructor(config?: Config, grpcTransport?: Transport) {\n const resolvedConfig = config ?? Config.loadFromEnv();\n this.config = resolvedConfig;\n this.oauthSession = new OAuthSessionManager(resolvedConfig);\n\n let transport = grpcTransport;\n if (transport === undefined) {\n if (resolvedConfig.authMode === 'oidc') {\n const holder = this.oauthSession.oauthHolder;\n if (holder === null) {\n throw new Error('OAuth token holder not initialized');\n }\n transport = createOidcTransport(resolvedConfig, holder);\n } else {\n transport = createConnectGrpcTransport({\n baseUrl: resolvedConfig.serverAddress,\n });\n }\n }\n\n this.storeClient = createClient(store_v1.StoreService, transport);\n this.routingClient = createClient(routing_v1.RoutingService, transport);\n this.publicationClient = createClient(routing_v1.PublicationService, transport);\n this.searchClient = createClient(search_v1.SearchService, transport);\n this.signClient = createClient(sign_v1.SignService, transport);\n this.syncClient = createClient(store_v1.SyncService, transport);\n this.eventClient = createClient(events_v1.EventService, transport);\n this.namingClient = createClient(naming_v1.NamingService, transport);\n\n this.storeService = new StoreService(this.storeClient);\n this.routingService = new RoutingService(this.routingClient);\n this.publicationService = new PublicationService(this.publicationClient);\n this.searchService = new SearchService(this.searchClient);\n this.signService = new SignService(resolvedConfig, this.signClient);\n this.syncService = new SyncService(this.syncClient);\n this.eventService = new EventService(this.eventClient);\n this.namingService = new NamingService(this.namingClient);\n }\n\n static async createGRPCTransport(\n config: Config,\n options?: { oidcTokenHolder?: OAuthTokenHolder },\n ): Promise<Transport> {\n return createGrpcTransport(config, {\n oidcTokenHolder: options?.oidcTokenHolder,\n });\n }\n\n hasCachedOAuthToken(): boolean {\n return this.oauthSession.hasAccessToken();\n }\n\n getAccessToken(): string {\n const holder = this.oauthSession.oauthHolder;\n if (holder === null) {\n throw new Error('OAuth token holder not initialized');\n }\n return holder.getAccessToken();\n }\n\n async authenticateOAuthPkce(): Promise<void> {\n await this.oauthSession.authenticate();\n }\n\n async push(records: Record[]): Promise<RecordRef[]> {\n return this.storeService.push(records);\n }\n\n async push_referrer(requests: PushReferrerRequest[]): Promise<PushReferrerResponse[]> {\n return this.storeService.push_referrer(requests);\n }\n\n async pull(refs: RecordRef[]): Promise<Record[]> {\n return this.storeService.pull(refs);\n }\n\n async pull_referrer(requests: PullReferrerRequest[]): Promise<PullReferrerResponse[]> {\n return this.storeService.pull_referrer(requests);\n }\n\n async searchCIDs(request: SearchCIDsRequest): Promise<SearchCIDsResponse[]> {\n return this.searchService.searchCIDs(request);\n }\n\n async searchRecords(request: SearchRecordsRequest): Promise<SearchRecordsResponse[]> {\n return this.searchService.searchRecords(request);\n }\n\n async lookup(refs: RecordRef[]): Promise<RecordMeta[]> {\n return this.storeService.lookup(refs);\n }\n\n async list(request: ListRequest): Promise<ListResponse[]> {\n return this.routingService.list(request);\n }\n\n async searchRouting(request: SearchRequest): Promise<SearchResponse[]> {\n return this.routingService.searchRouting(request);\n }\n\n async publish(request: PublishRequest): Promise<void> {\n return this.routingService.publish(request);\n }\n\n async unpublish(request: UnpublishRequest): Promise<void> {\n return this.routingService.unpublish(request);\n }\n\n async delete(refs: RecordRef[]): Promise<void> {\n return this.storeService.delete(refs);\n }\n\n async deleteReferrer(request: DeleteReferrerRequest): Promise<DeleteReferrerResponse> {\n return this.storeService.deleteReferrer(request);\n }\n\n sign(req: SignRequest): void {\n this.signService.sign(req);\n }\n\n async verify(request: VerifyRequest): Promise<VerifyResponse> {\n return this.signService.verify(request);\n }\n\n async create_sync(request: CreateSyncRequest): Promise<CreateSyncResponse> {\n return this.syncService.create_sync(request);\n }\n\n async list_syncs(request: ListSyncsRequest): Promise<ListSyncsItem[]> {\n return this.syncService.list_syncs(request);\n }\n\n async get_sync(request: GetSyncRequest): Promise<GetSyncResponse> {\n return this.syncService.get_sync(request);\n }\n\n async delete_sync(request: DeleteSyncRequest): Promise<DeleteSyncResponse> {\n return this.syncService.delete_sync(request);\n }\n\n listen(request: ListenRequest): AsyncIterable<ListenResponse> {\n return this.eventService.listen(request);\n }\n\n async create_publication(request: PublishRequest): Promise<CreatePublicationResponse> {\n return this.publicationService.create_publication(request);\n }\n\n async list_publication(request: ListPublicationsRequest): Promise<ListPublicationsItem[]> {\n return this.publicationService.list_publication(request);\n }\n\n async get_publication(request: GetPublicationRequest): Promise<GetPublicationResponse> {\n return this.publicationService.get_publication(request);\n }\n\n async resolve(request: ResolveRequest): Promise<ResolveResponse> {\n return this.namingService.resolve(request);\n }\n\n async getVerificationInfo(\n request: GetVerificationInfoRequest,\n ): Promise<GetVerificationInfoResponse> {\n return this.namingService.getVerificationInfo(request);\n }\n}\n"],"names":["models.sign_v1.VerifyResponseSchema","createClientSpiffe","createConnectGrpcTransport","createClient","store_v1.StoreService","routing_v1.RoutingService","routing_v1.PublicationService","search_v1.SearchService","sign_v1.SignService","store_v1.SyncService","events_v1.EventService","naming_v1.NamingService"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../node_modules/@buf/googleapis_googleapis.bufbuild_es/google/api/httpbody_pb.js","../src/models/catalog_v1.ts","../src/models/events_v1.ts","../src/models/naming_v1.ts","../src/models/routing_v1.ts","../src/models/search_v1.ts","../src/models/sign_v1.ts","../src/models/store_v1.ts","../src/client/auth/oauthPkce.ts","../src/client/auth/tokenCache.ts","../src/client/auth/session.ts","../src/client/config.ts","../src/client/services/base.ts","../src/client/services/aiFinder.ts","../src/client/services/store.ts","../src/client/services/routing.ts","../src/client/services/search.ts","../src/client/services/publication.ts","../src/client/services/sync.ts","../src/client/services/events.ts","../src/client/services/naming.ts","../src/client/dirctl/signing.ts","../src/models/core_v1.ts","../src/models/index.ts","../src/client/dirctl/verification.ts","../src/client/services/signing.ts","../src/client/transport/interceptors.ts","../src/client/transport/channels.ts","../src/client/client.ts"],"sourcesContent":["// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"import_extension=js\"\n// @generated from file google/api/httpbody.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_google_protobuf_any } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file google/api/httpbody.proto.\n */\nexport const file_google_api_httpbody = /*@__PURE__*/\n fileDesc(\"Chlnb29nbGUvYXBpL2h0dHBib2R5LnByb3RvEgpnb29nbGUuYXBpIlgKCEh0dHBCb2R5EhQKDGNvbnRlbnRfdHlwZRgBIAEoCRIMCgRkYXRhGAIgASgMEigKCmV4dGVuc2lvbnMYAyADKAsyFC5nb29nbGUucHJvdG9idWYuQW55QmUKDmNvbS5nb29nbGUuYXBpQg1IdHRwQm9keVByb3RvUAFaO2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2h0dHBib2R5O2h0dHBib2R5ogIER0FQSWIGcHJvdG8z\", [file_google_protobuf_any]);\n\n/**\n * Describes the message google.api.HttpBody.\n * Use `create(HttpBodySchema)` to create a new message.\n */\nexport const HttpBodySchema = /*@__PURE__*/\n messageDesc(file_google_api_httpbody, 0);\n\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_catalog_v1_ai_finder_service,\n AIFinderService,\n ExportAgentRequest,\n ExportAgentRequestSchema,\n GetAgentRequest,\n GetAgentRequestSchema,\n GetAgentResponse,\n GetAgentResponseSchema,\n GetWellKnownCatalogRequest,\n GetWellKnownCatalogRequestSchema,\n GetWellKnownCatalogResponse,\n GetWellKnownCatalogResponseSchema,\n ListAgentsRequest,\n ListAgentsRequestSchema,\n ListAgentsResponse,\n ListAgentsResponseSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/ai_finder_service_pb';\nexport {\n file_agntcy_dir_catalog_v1_models,\n AICatalog,\n AICatalogSchema,\n CatalogCollection,\n CatalogCollectionSchema,\n CatalogEntry,\n CatalogEntrySchema,\n HostInfo,\n HostInfoSchema,\n WellKnownCatalog,\n WellKnownCatalogSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/catalog/v1/models_pb';\nexport {\n HttpBody,\n HttpBodySchema,\n} from '@buf/googleapis_googleapis.bufbuild_es/google/api/httpbody_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_events_v1_event_service,\n ListenRequest,\n ListenRequestSchema,\n ListenResponse,\n ListenResponseSchema,\n Event,\n EventSchema,\n EventType,\n EventTypeSchema,\n EventService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/events/v1/event_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_naming_v1_naming_service,\n GetVerificationInfoRequest,\n GetVerificationInfoRequestSchema,\n GetVerificationInfoResponse,\n GetVerificationInfoResponseSchema,\n ResolveRequest,\n ResolveRequestSchema,\n ResolveResponse,\n ResolveResponseSchema,\n NamingService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/naming_service_pb';\nexport {\n file_agntcy_dir_naming_v1_name_verification,\n Verification,\n VerificationSchema,\n DomainVerification,\n DomainVerificationSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/naming/v1/name_verification_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_routing_v1_peer,\n Peer,\n PeerSchema,\n PeerConnectionType,\n PeerConnectionTypeSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/peer_pb';\nexport {\n file_agntcy_dir_routing_v1_publication_service,\n CreatePublicationResponse,\n CreatePublicationResponseSchema,\n ListPublicationsRequest,\n ListPublicationsRequestSchema,\n ListPublicationsItem,\n ListPublicationsItemSchema,\n GetPublicationRequest,\n GetPublicationRequestSchema,\n GetPublicationResponse,\n GetPublicationResponseSchema,\n PublicationStatus,\n PublicationStatusSchema,\n PublicationService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/publication_service_pb';\nexport {\n file_agntcy_dir_routing_v1_record_query,\n RecordQuery,\n RecordQuerySchema,\n RecordQueryType,\n RecordQueryTypeSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/record_query_pb';\nexport {\n file_agntcy_dir_routing_v1_routing_service,\n PublishRequest,\n PublishRequestSchema,\n UnpublishRequest,\n UnpublishRequestSchema,\n RecordRefs,\n RecordRefsSchema,\n RecordQueries,\n RecordQueriesSchema,\n SearchRequest,\n SearchRequestSchema,\n SearchResponse,\n SearchResponseSchema,\n ListRequest,\n ListRequestSchema,\n ListResponse,\n ListResponseSchema,\n RoutingService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/routing/v1/routing_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_search_v1_record_query,\n RecordQuery,\n RecordQuerySchema,\n RecordQueryType,\n RecordQueryTypeSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/search/v1/record_query_pb';\nexport {\n file_agntcy_dir_search_v1_search_service,\n SearchCIDsRequest,\n SearchCIDsRequestSchema,\n SearchRecordsRequest,\n SearchRecordsRequestSchema,\n SearchCIDsResponse,\n SearchCIDsResponseSchema,\n SearchRecordsResponse,\n SearchRecordsResponseSchema,\n SearchService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/search/v1/search_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_sign_v1_sign_service,\n SignOptionsOIDC,\n SignOptionsOIDCSchema,\n VerifyOptionsOIDC,\n VerifyOptionsOIDCSchema,\n SignRequest,\n SignRequestSchema,\n SignRequestProvider,\n SignRequestProviderSchema,\n SignWithKey,\n SignWithKeySchema,\n SignWithOIDC,\n SignWithOIDCSchema,\n SignResponse,\n SignResponseSchema,\n VerifyRequest,\n VerifyRequestSchema,\n VerifyRequestProvider,\n VerifyRequestProviderSchema,\n VerifyWithKey,\n VerifyWithKeySchema,\n VerifyWithOIDC,\n VerifyWithOIDCSchema,\n VerifyWithAny,\n VerifyWithAnySchema,\n VerifyResponse,\n VerifyResponseSchema,\n SignerInfo,\n SignerInfoSchema,\n SignerInfoKey,\n SignerInfoKeySchema,\n SignerInfoOIDC,\n SignerInfoOIDCSchema,\n SignService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/sign_service_pb';\nexport {\n file_agntcy_dir_sign_v1_signature,\n Signature,\n SignatureSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/signature_pb';\nexport {\n file_agntcy_dir_sign_v1_public_key,\n PublicKey,\n PublicKeySchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/sign/v1/public_key_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_store_v1_store_service,\n PushReferrerRequest,\n PushReferrerRequestSchema,\n PushReferrerResponse,\n PushReferrerResponseSchema,\n PullReferrerRequest,\n PullReferrerRequestSchema,\n PullReferrerResponse,\n PullReferrerResponseSchema,\n DeleteReferrerRequest,\n DeleteReferrerRequestSchema,\n DeleteReferrerResponse,\n DeleteReferrerResponseSchema,\n StoreService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/store_service_pb';\nexport {\n file_agntcy_dir_store_v1_sync_service,\n CreateSyncRequest,\n CreateSyncRequestSchema,\n CreateSyncResponse,\n CreateSyncResponseSchema,\n ListSyncsRequest,\n ListSyncsRequestSchema,\n ListSyncsItem,\n ListSyncsItemSchema,\n GetSyncRequest,\n GetSyncRequestSchema,\n GetSyncResponse,\n GetSyncResponseSchema,\n DeleteSyncRequest,\n DeleteSyncRequestSchema,\n DeleteSyncResponse,\n DeleteSyncResponseSchema,\n RequestRegistryCredentialsRequest,\n RequestRegistryCredentialsRequestSchema,\n RequestRegistryCredentialsResponse,\n RequestRegistryCredentialsResponseSchema,\n BasicAuthCredentials,\n BasicAuthCredentialsSchema,\n SyncStatus,\n SyncStatusSchema,\n SyncService,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/store/v1/sync_service_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createHash, randomBytes } from 'node:crypto';\nimport { spawn } from 'node:child_process';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport { platform } from 'node:process';\nimport { URL } from 'node:url';\n\n/**\n * Error thrown when OAuth PKCE authentication fails.\n *\n * @public\n */\nexport class OAuthPkceError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'OAuthPkceError';\n }\n}\n\n/** Subset of client config used by PKCE helpers (avoids circular imports). */\nexport interface OidcPkceConfig {\n oidcIssuer: string;\n oidcClientId: string;\n oidcClientSecret: string;\n oidcRedirectUri: string;\n oidcCallbackPort: number;\n oidcAuthTimeout: number;\n oidcScopes: string[];\n}\n\nexport function normalizeIssuer(issuer: string): string {\n const u = issuer.replace(/\\/+$/, '');\n if (!u.startsWith('https://') && !u.startsWith('http://')) {\n throw new Error('oidc_issuer must be an absolute URL (https:// recommended)');\n }\n return u;\n}\n\nexport interface OpenIdConfiguration {\n authorization_endpoint: string;\n token_endpoint: string;\n [key: string]: unknown;\n}\n\nasync function httpRequest(\n method: string,\n urlStr: string,\n body: string | undefined,\n headers: Record<string, string>,\n options: { timeoutMs: number; rejectUnauthorized: boolean },\n): Promise<{ status: number; text: string }> {\n return new Promise((resolve, reject) => {\n const u = new URL(urlStr);\n const isHttps = u.protocol === 'https:';\n const lib = isHttps ? https : http;\n const port = u.port !== '' ? Number(u.port) : isHttps ? 443 : 80;\n const req = lib.request(\n {\n hostname: u.hostname,\n port,\n path: `${u.pathname}${u.search}`,\n method,\n headers,\n ...(isHttps ? { rejectUnauthorized: options.rejectUnauthorized } : {}),\n },\n (res) => {\n const chunks: Buffer[] = [];\n res.on('data', (c: Buffer) => chunks.push(c));\n res.on('end', () => {\n resolve({\n status: res.statusCode ?? 0,\n text: Buffer.concat(chunks).toString('utf-8'),\n });\n });\n },\n );\n req.setTimeout(options.timeoutMs, () => {\n req.destroy();\n reject(new Error('Request timeout'));\n });\n req.on('error', reject);\n if (body !== undefined) {\n req.write(body);\n }\n req.end();\n });\n}\n\nexport async function fetchOpenidConfiguration(\n issuer: string,\n options: { verify: boolean; timeoutMs: number },\n): Promise<OpenIdConfiguration> {\n const base = normalizeIssuer(issuer);\n const url = `${base}/.well-known/openid-configuration`;\n let response: { status: number; text: string };\n try {\n response = await httpRequest(\n 'GET',\n url,\n undefined,\n {},\n {\n timeoutMs: options.timeoutMs,\n rejectUnauthorized: options.verify,\n },\n );\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new OAuthPkceError(`OpenID discovery failed: ${msg}`);\n }\n if (response.status < 200 || response.status >= 300) {\n throw new OAuthPkceError(\n `OpenID discovery HTTP ${response.status}: ${response.text.slice(0, 500)}`,\n );\n }\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(response.text) as Record<string, unknown>;\n } catch {\n throw new OAuthPkceError('OpenID discovery response is not valid JSON');\n }\n if (typeof data.authorization_endpoint !== 'string' || typeof data.token_endpoint !== 'string') {\n throw new OAuthPkceError(\n 'OpenID configuration missing authorization_endpoint or token_endpoint',\n );\n }\n return data as OpenIdConfiguration;\n}\n\nfunction urlEncodeForm(body: Record<string, string>): string {\n return new URLSearchParams(body).toString();\n}\n\nexport async function exchangeAuthorizationCode(\n tokenEndpoint: string,\n params: {\n code: string;\n redirectUri: string;\n clientId: string;\n codeVerifier: string;\n clientSecret: string;\n verify: boolean;\n timeoutMs: number;\n },\n): Promise<Record<string, unknown>> {\n const body: Record<string, string> = {\n grant_type: 'authorization_code',\n code: params.code,\n redirect_uri: params.redirectUri,\n client_id: params.clientId,\n code_verifier: params.codeVerifier,\n };\n if (params.clientSecret) {\n body.client_secret = params.clientSecret;\n }\n const encoded = urlEncodeForm(body);\n const response = await httpRequest(\n 'POST',\n tokenEndpoint,\n encoded,\n {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Content-Length': String(Buffer.byteLength(encoded)),\n },\n { timeoutMs: params.timeoutMs, rejectUnauthorized: params.verify },\n );\n let json: Record<string, unknown>;\n try {\n json = JSON.parse(response.text) as Record<string, unknown>;\n } catch {\n throw new OAuthPkceError(`Token response not JSON: ${response.text.slice(0, 500)}`);\n }\n if (response.status < 200 || response.status >= 300) {\n throw new OAuthPkceError(`Token HTTP ${response.status}: ${response.text.slice(0, 500)}`);\n }\n return json;\n}\n\nfunction base64Url(buf: Buffer): string {\n return buf.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nfunction createS256CodeChallenge(verifier: string): string {\n const hash = createHash('sha256').update(verifier, 'utf8').digest();\n return base64Url(hash);\n}\n\nfunction openBrowser(url: string): void {\n const os = platform;\n if (os === 'darwin') {\n spawn('open', [url], { stdio: 'ignore', detached: true }).unref();\n } else if (os === 'win32') {\n spawn('cmd', ['/c', 'start', '\"\"', url], {\n stdio: 'ignore',\n detached: true,\n shell: false,\n }).unref();\n } else {\n spawn('xdg-open', [url], { stdio: 'ignore', detached: true }).unref();\n }\n}\n\n/**\n * Holds an OAuth access token for Connect transport interceptors.\n *\n * @public\n */\nexport class OAuthTokenHolder {\n private accessToken: string | undefined;\n\n setTokens(accessToken: string): void {\n this.accessToken = accessToken;\n }\n\n updateFromTokenResponse(payload: Record<string, unknown>): void {\n const access = payload.access_token;\n if (!access || typeof access !== 'string') {\n throw new OAuthPkceError('Token response missing access_token');\n }\n this.setTokens(access);\n }\n\n getAccessToken(): string {\n if (this.accessToken === undefined) {\n throw new Error(\n 'No OAuth access token: set DIRECTORY_CLIENT_AUTH_TOKEN or call Client.authenticateOAuthPkce()',\n );\n }\n return this.accessToken;\n }\n}\n\nexport async function runLoopbackPkceLogin(\n config: OidcPkceConfig,\n metadata: OpenIdConfiguration | undefined,\n options: { verify: boolean; timeoutMs: number },\n): Promise<Record<string, unknown>> {\n if (!config.oidcIssuer) {\n throw new Error('oidc_issuer is required for OAuth PKCE');\n }\n if (!config.oidcClientId) {\n throw new Error('oidc_client_id is required for OAuth PKCE');\n }\n\n const redirectUri = config.oidcRedirectUri.trim();\n const parsed = new URL(redirectUri);\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new Error('oidc_redirect_uri must be an absolute http(s) URL');\n }\n if (parsed.hostname !== 'localhost' && parsed.hostname !== '127.0.0.1') {\n throw new Error('loopback PKCE requires redirect host localhost or 127.0.0.1');\n }\n let path = parsed.pathname || '/';\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n\n const port = config.oidcCallbackPort;\n\n const meta =\n metadata ??\n (await fetchOpenidConfiguration(config.oidcIssuer, {\n verify: options.verify,\n timeoutMs: Math.min(30_000, options.timeoutMs),\n }));\n\n const authEp = meta.authorization_endpoint;\n const tokenEp = meta.token_endpoint;\n\n const codeVerifier = base64Url(randomBytes(48));\n const codeChallenge = createS256CodeChallenge(codeVerifier);\n const state = base64Url(randomBytes(24));\n\n const result: { code?: string } = {};\n const errorHolder: string[] = [];\n\n let settled = false;\n let resolveDone!: () => void;\n const donePromise = new Promise<void>((r) => {\n resolveDone = r;\n });\n function settle(): void {\n if (!settled) {\n settled = true;\n resolveDone();\n }\n }\n\n const server = http.createServer((req, res) => {\n try {\n if (!req.url) {\n errorHolder.push('missing url');\n res.writeHead(400);\n res.end();\n return;\n }\n const u = new URL(req.url, `http://127.0.0.1:${port}`);\n if (u.pathname !== path) {\n errorHolder.push('redirect path does not match oidc_redirect_uri');\n res.writeHead(404, { 'Content-Type': 'text/plain' });\n res.end('Not Found');\n return;\n }\n const err = u.searchParams.get('error');\n if (err) {\n const desc = u.searchParams.get('error_description') ?? '';\n errorHolder.push(`${err}: ${desc}`);\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Authorization failed. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n return;\n }\n if (u.searchParams.get('state') !== state) {\n errorHolder.push('state mismatch');\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Invalid state. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n return;\n }\n const code = u.searchParams.get('code');\n if (!code) {\n errorHolder.push('missing code');\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Missing code. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n return;\n }\n result.code = code;\n const body = Buffer.from(\n '<!DOCTYPE html><html><body><p>Login successful. You may close this window.</p></body></html>',\n 'utf-8',\n );\n res.writeHead(200, {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(body.length),\n 'Cache-Control': 'no-store',\n });\n res.end(body);\n } finally {\n settle();\n }\n });\n\n await new Promise<void>((resolve, reject) => {\n server.once('error', reject);\n server.listen(port, '127.0.0.1', () => resolve());\n });\n\n const scopeStr =\n config.oidcScopes && config.oidcScopes.length > 0 ? config.oidcScopes.join(' ') : 'openid';\n const authParams = new URLSearchParams({\n response_type: 'code',\n client_id: config.oidcClientId,\n redirect_uri: redirectUri,\n scope: scopeStr,\n state,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n });\n const sep = authEp.includes('?') ? '&' : '?';\n const authorizeUrl = `${authEp}${sep}${authParams.toString()}`;\n\n openBrowser(authorizeUrl);\n\n const waitMs = config.oidcAuthTimeout * 1000;\n try {\n await Promise.race([\n donePromise,\n new Promise<never>((_, rej) => {\n setTimeout(() => {\n rej(new OAuthPkceError(`OAuth callback timed out after ${config.oidcAuthTimeout}s`));\n }, waitMs);\n }),\n ]);\n } finally {\n await new Promise<void>((r) => {\n server.close(() => r());\n });\n }\n\n if (errorHolder.length > 0) {\n throw new OAuthPkceError(errorHolder[0] ?? 'unknown error');\n }\n const code = result.code;\n if (!code) {\n throw new OAuthPkceError('Authorization did not return a code');\n }\n\n return exchangeAuthorizationCode(tokenEp, {\n code,\n redirectUri: redirectUri,\n clientId: config.oidcClientId,\n codeVerifier,\n clientSecret: config.oidcClientSecret,\n verify: options.verify,\n timeoutMs: Math.min(30_000, options.timeoutMs),\n });\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\nexport const DEFAULT_TOKEN_CACHE_DIR = 'dirctl';\nexport const TOKEN_CACHE_FILE = 'auth-token.json';\n\nconst DEFAULT_TOKEN_VALIDITY_MS = 8 * 60 * 60 * 1000;\nconst TOKEN_EXPIRY_BUFFER_MS = 5 * 60 * 1000;\nconst CACHE_DIR_PERMS = 0o700;\nconst CACHE_FILE_PERMS = 0o600;\n\nfunction utcNow(): Date {\n return new Date();\n}\n\nfunction parseTimestamp(value: string | undefined | null): Date | undefined {\n if (!value) {\n return undefined;\n }\n const normalized = value.replace('Z', '+00:00');\n const d = new Date(normalized);\n return Number.isNaN(d.getTime()) ? undefined : d;\n}\n\nfunction formatTimestamp(value: Date | undefined): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n return value.toISOString();\n}\n\nexport interface CachedTokenJson {\n access_token: string;\n token_type?: string;\n provider?: string;\n issuer?: string;\n refresh_token?: string;\n expires_at?: string;\n user?: string;\n user_id?: string;\n email?: string;\n created_at?: string;\n}\n\nexport class CachedToken {\n accessToken: string;\n tokenType: string;\n provider: string;\n issuer: string;\n refreshToken: string;\n expiresAt: Date | undefined;\n user: string;\n userId: string;\n email: string;\n createdAt: Date | undefined;\n\n constructor(\n accessToken: string,\n tokenType = '',\n provider = '',\n issuer = '',\n refreshToken = '',\n expiresAt: Date | undefined = undefined,\n user = '',\n userId = '',\n email = '',\n createdAt: Date | undefined = undefined,\n ) {\n this.accessToken = accessToken;\n this.tokenType = tokenType;\n this.provider = provider;\n this.issuer = issuer;\n this.refreshToken = refreshToken;\n this.expiresAt = expiresAt;\n this.user = user;\n this.userId = userId;\n this.email = email;\n this.createdAt = createdAt;\n }\n\n static fromJson(payload: CachedTokenJson): CachedToken {\n return new CachedToken(\n String(payload.access_token ?? ''),\n String(payload.token_type ?? ''),\n String(payload.provider ?? ''),\n String(payload.issuer ?? ''),\n String(payload.refresh_token ?? ''),\n parseTimestamp(payload.expires_at),\n String(payload.user ?? ''),\n String(payload.user_id ?? ''),\n String(payload.email ?? ''),\n parseTimestamp(payload.created_at),\n );\n }\n\n toJson(): Record<string, string> {\n const payload: Record<string, string> = {\n access_token: this.accessToken,\n created_at: formatTimestamp(this.createdAt ?? utcNow()) ?? '',\n };\n if (this.tokenType) {\n payload.token_type = this.tokenType;\n }\n if (this.provider) {\n payload.provider = this.provider;\n }\n if (this.issuer) {\n payload.issuer = this.issuer;\n }\n if (this.refreshToken) {\n payload.refresh_token = this.refreshToken;\n }\n const exp = formatTimestamp(this.expiresAt);\n if (exp !== undefined) {\n payload.expires_at = exp;\n }\n if (this.user) {\n payload.user = this.user;\n }\n if (this.userId) {\n payload.user_id = this.userId;\n }\n if (this.email) {\n payload.email = this.email;\n }\n return payload;\n }\n}\n\n/** @internal */\nexport class TokenCache {\n readonly cacheDir: string;\n\n constructor(cacheDir?: string) {\n if (cacheDir !== undefined) {\n this.cacheDir = cacheDir;\n } else {\n const baseDir = env.XDG_CONFIG_HOME ?? join(homedir(), '.config');\n this.cacheDir = join(baseDir, DEFAULT_TOKEN_CACHE_DIR);\n }\n }\n\n getCachePath(): string {\n return join(this.cacheDir, TOKEN_CACHE_FILE);\n }\n\n load(): CachedToken | undefined {\n const path = this.getCachePath();\n if (!existsSync(path)) {\n return undefined;\n }\n const raw = readFileSync(path, 'utf-8');\n const payload = JSON.parse(raw) as CachedTokenJson;\n return CachedToken.fromJson(payload);\n }\n\n save(token: CachedToken): void {\n mkdirSync(this.cacheDir, { mode: CACHE_DIR_PERMS, recursive: true });\n try {\n chmodSync(this.cacheDir, CACHE_DIR_PERMS);\n } catch {\n // ignore chmod failures (e.g. Windows)\n }\n token.createdAt ??= utcNow();\n const serialized = `${JSON.stringify(token.toJson(), null, 2)}\\n`;\n const path = this.getCachePath();\n writeFileSync(path, serialized, { encoding: 'utf-8', mode: CACHE_FILE_PERMS });\n try {\n chmodSync(path, CACHE_FILE_PERMS);\n } catch {\n // ignore chmod failures\n }\n }\n\n clear(): void {\n const path = this.getCachePath();\n if (existsSync(path)) {\n unlinkSync(path);\n }\n }\n\n isValid(token: CachedToken | undefined): boolean {\n if (!token?.accessToken) {\n return false;\n }\n const now = utcNow().getTime();\n if (token.expiresAt === undefined) {\n const createdAt = token.createdAt ?? new Date(now);\n return now < createdAt.getTime() + DEFAULT_TOKEN_VALIDITY_MS;\n }\n return now + TOKEN_EXPIRY_BUFFER_MS < token.expiresAt.getTime();\n }\n\n getValidToken(): CachedToken | undefined {\n const token = this.load();\n if (!this.isValid(token)) {\n return undefined;\n }\n return token;\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Config } from '../config.js';\nimport { fetchOpenidConfiguration, OAuthTokenHolder, runLoopbackPkceLogin } from './oauthPkce.js';\nimport { CachedToken, TokenCache } from './tokenCache.js';\n\nexport function cachedTokenFromResponse(\n config: Config,\n payload: Record<string, unknown>,\n): CachedToken {\n const expiresIn = payload.expires_in;\n let expiresAt: Date | undefined;\n if (typeof expiresIn === 'number' && Number.isFinite(expiresIn)) {\n expiresAt = new Date(Date.now() + expiresIn * 1000);\n } else if (typeof expiresIn === 'string' && expiresIn !== '') {\n const n = Number(expiresIn);\n if (Number.isFinite(n)) {\n expiresAt = new Date(Date.now() + n * 1000);\n }\n }\n const refreshToken = payload.refresh_token;\n const tokenType = payload.token_type;\n return new CachedToken(\n String(payload.access_token),\n typeof tokenType === 'string' ? tokenType : '',\n 'oidc',\n config.oidcIssuer,\n typeof refreshToken === 'string' ? refreshToken : '',\n expiresAt,\n '',\n '',\n '',\n new Date(),\n );\n}\n\n/**\n * Coordinates OIDC token state with interactive PKCE flow and cache.\n *\n * @public\n */\nexport class OAuthSessionManager {\n readonly config: Config;\n private readonly tokenCache: TokenCache;\n private _oauthHolder: OAuthTokenHolder | null = null;\n\n constructor(config: Config) {\n this.config = config;\n this.tokenCache = new TokenCache();\n\n if (this.config.authMode === 'oidc') {\n this._oauthHolder = new OAuthTokenHolder();\n if (this.config.authToken) {\n this._oauthHolder.setTokens(this.config.authToken);\n } else {\n const cachedToken = this.tokenCache.getValidToken();\n if (cachedToken !== undefined) {\n this._oauthHolder.setTokens(cachedToken.accessToken);\n }\n }\n }\n }\n\n get oauthHolder(): OAuthTokenHolder | null {\n return this._oauthHolder;\n }\n\n hasAccessToken(): boolean {\n if (this._oauthHolder === null) {\n return false;\n }\n try {\n this._oauthHolder.getAccessToken();\n return true;\n } catch {\n return false;\n }\n }\n\n async authenticate(): Promise<void> {\n if (this.config.authMode !== 'oidc') {\n throw new Error(\"authenticateOAuthPkce() requires authMode='oidc'\");\n }\n if (this.config.oidcIssuer === '') {\n throw new Error('oidc_issuer is required for authenticateOAuthPkce()');\n }\n if (this.config.oidcClientId === '') {\n throw new Error('oidc_client_id is required for authenticateOAuthPkce()');\n }\n if (this._oauthHolder === null) {\n throw new Error('OAuth token holder not initialized');\n }\n const verify = !this.config.tlsSkipVerify;\n const timeoutMs = Math.min(30_000, this.config.oidcAuthTimeout * 1000);\n const meta = await fetchOpenidConfiguration(this.config.oidcIssuer, {\n verify,\n timeoutMs,\n });\n const payload = await runLoopbackPkceLogin(this.config, meta, {\n verify,\n timeoutMs: this.config.oidcAuthTimeout * 1000,\n });\n this._oauthHolder.updateFromTokenResponse(payload);\n this.tokenCache.save(cachedTokenFromResponse(this.config, payload));\n console.log('Authenticated with OAuth PKCE');\n console.log('Access token acquired.');\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { existsSync } from 'node:fs';\nimport { env } from 'node:process';\n\n/**\n * Authentication mode for Directory client connections.\n *\n * @public\n */\nexport type AuthMode = '' | 'x509' | 'jwt' | 'tls' | 'oidc';\n\nfunction parseBoolEnv(value: string | undefined, defaultVal: boolean): boolean {\n if (value === undefined || value === '') {\n return defaultVal;\n }\n return ['1', 'true', 'yes', 'on'].includes(value.trim().toLowerCase());\n}\n\nfunction parseIntEnv(value: string | undefined, defaultVal: number): number {\n if (value === undefined || value === '') {\n return defaultVal;\n }\n return Number.parseInt(value, 10);\n}\n\nfunction parseFloatEnv(value: string | undefined, defaultVal: number): number {\n if (value === undefined || value === '') {\n return defaultVal;\n }\n return Number.parseFloat(value);\n}\n\nfunction parseCommaScopes(value: string | undefined, defaultList: string[]): string[] {\n if (value === undefined || value === '') {\n return [...defaultList];\n }\n return value\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/**\n * Docker invocation settings for running dirctl in a container.\n *\n * @public\n */\nexport class DockerConfig {\n static DEFAULT_DIRCTL_IMAGE = 'ghcr.io/agntcy/dir-ctl';\n static DEFAULT_DIRCTL_IMAGE_TAG = 'latest';\n\n dirctlImage: string;\n dirctlImageTag: string;\n envs: Map<string, string>;\n mounts: string[];\n user: string;\n\n constructor(\n dirctlImage: string,\n dirctlImageTag: string,\n envs: Map<string, string>,\n mounts: string[],\n user: string,\n ) {\n this.dirctlImage = dirctlImage;\n this.dirctlImageTag = dirctlImageTag;\n this.envs = envs;\n this.mounts = mounts;\n this.user = user;\n }\n\n getDockerArgs(): string[] {\n this.pruneMounts();\n const commands = ['container', 'run', '--name=dir-ctl', '--rm', '--network', 'host'];\n if (this.user) {\n commands.push('--user');\n commands.push(this.user);\n }\n this.envs.forEach((value: string, key: string) => {\n commands.push('--env');\n commands.push(`${key}=${value}`);\n });\n this.mounts.forEach((value: string) => {\n commands.push('--mount');\n commands.push(value);\n });\n commands.push(`${this.dirctlImage}:${this.dirctlImageTag}`);\n return commands;\n }\n\n pruneMounts(): void {\n this.mounts = this.mounts.filter((mount: string) => {\n if (mount.startsWith('type=bind')) {\n const parts = mount.split(',');\n const srcPart = parts.find((p) => p.startsWith('src='));\n if (srcPart === undefined) {\n return false;\n }\n const _src = srcPart.split('=')[1];\n return existsSync(_src);\n }\n return false;\n });\n }\n}\n\n/**\n * Configuration class for the AGNTCY Directory client.\n *\n * @public\n */\nexport class Config {\n static DEFAULT_SERVER_ADDRESS = '127.0.0.1:8888';\n static DEFAULT_DIRCTL_PATH = 'dirctl';\n static DEFAULT_SPIFFE_ENDPOINT_SOCKET = '';\n static DEFAULT_AUTH_MODE = '';\n static DEFAULT_AUTH_TOKEN = '';\n static DEFAULT_JWT_AUDIENCE = '';\n static DEFAULT_TLS_CA_FILE = '';\n static DEFAULT_TLS_CERT_FILE = '';\n static DEFAULT_TLS_KEY_FILE = '';\n static DEFAULT_TLS_SERVER_NAME = '';\n static DEFAULT_TLS_SKIP_VERIFY = false;\n static DEFAULT_OIDC_ISSUER = '';\n static DEFAULT_OIDC_CLIENT_ID = '';\n static DEFAULT_OIDC_CLIENT_SECRET = '';\n static DEFAULT_OIDC_REDIRECT_URI = 'http://localhost:8484/callback';\n static DEFAULT_OIDC_CALLBACK_PORT = 8484;\n static DEFAULT_OIDC_AUTH_TIMEOUT = 300;\n static DEFAULT_OIDC_SCOPES = ['openid', 'profile', 'email'];\n\n serverAddress: string;\n dirctlPath: string;\n spiffeEndpointSocket: string;\n authMode: AuthMode;\n authToken: string;\n /** Backward-compatible alias for `authToken`. */\n oidcAccessToken: string;\n jwtAudience: string;\n tlsCaFile: string;\n tlsCertFile: string;\n tlsKeyFile: string;\n tlsServerName: string;\n tlsSkipVerify: boolean;\n oidcIssuer: string;\n oidcClientId: string;\n oidcClientSecret: string;\n oidcRedirectUri: string;\n oidcCallbackPort: number;\n oidcAuthTimeout: number;\n oidcScopes: string[];\n dockerConfig: DockerConfig | undefined;\n\n constructor(\n serverAddress = Config.DEFAULT_SERVER_ADDRESS,\n dirctlPath = Config.DEFAULT_DIRCTL_PATH,\n spiffeEndpointSocket = Config.DEFAULT_SPIFFE_ENDPOINT_SOCKET,\n authMode: AuthMode = Config.DEFAULT_AUTH_MODE as AuthMode,\n jwtAudience = Config.DEFAULT_JWT_AUDIENCE,\n tlsCaFile = Config.DEFAULT_TLS_CA_FILE,\n tlsCertFile = Config.DEFAULT_TLS_CERT_FILE,\n tlsKeyFile = Config.DEFAULT_TLS_KEY_FILE,\n authToken = Config.DEFAULT_AUTH_TOKEN,\n tlsServerName = Config.DEFAULT_TLS_SERVER_NAME,\n tlsSkipVerify = Config.DEFAULT_TLS_SKIP_VERIFY,\n oidcIssuer = Config.DEFAULT_OIDC_ISSUER,\n oidcClientId = Config.DEFAULT_OIDC_CLIENT_ID,\n oidcClientSecret = Config.DEFAULT_OIDC_CLIENT_SECRET,\n oidcRedirectUri = Config.DEFAULT_OIDC_REDIRECT_URI,\n oidcCallbackPort = Config.DEFAULT_OIDC_CALLBACK_PORT,\n oidcAuthTimeout = Config.DEFAULT_OIDC_AUTH_TIMEOUT,\n oidcScopes: string[] | undefined = undefined,\n oidcAccessToken: string | undefined = undefined,\n dockerConfig: DockerConfig | undefined = undefined,\n ) {\n const resolvedAuthToken = [authToken, oidcAccessToken].find(Boolean) ?? '';\n\n if (!serverAddress.startsWith('http://') && !serverAddress.startsWith('https://')) {\n if (authMode === 'x509' || authMode === 'jwt' || authMode === 'tls' || authMode === 'oidc') {\n serverAddress = `https://${serverAddress}`;\n } else {\n serverAddress = `http://${serverAddress}`;\n }\n }\n\n this.serverAddress = serverAddress;\n this.dirctlPath = dirctlPath;\n this.spiffeEndpointSocket = spiffeEndpointSocket;\n this.authMode = authMode;\n this.authToken = resolvedAuthToken;\n this.oidcAccessToken = resolvedAuthToken;\n this.jwtAudience = jwtAudience;\n this.tlsCaFile = tlsCaFile;\n this.tlsCertFile = tlsCertFile;\n this.tlsKeyFile = tlsKeyFile;\n this.tlsServerName = tlsServerName;\n this.tlsSkipVerify = tlsSkipVerify;\n this.oidcIssuer = oidcIssuer;\n this.oidcClientId = oidcClientId;\n this.oidcClientSecret = oidcClientSecret;\n this.oidcRedirectUri = oidcRedirectUri;\n this.oidcCallbackPort = oidcCallbackPort;\n this.oidcAuthTimeout = oidcAuthTimeout;\n this.oidcScopes = oidcScopes !== undefined ? [...oidcScopes] : [...Config.DEFAULT_OIDC_SCOPES];\n this.dockerConfig = dockerConfig;\n }\n\n static loadFromEnv(prefix = 'DIRECTORY_CLIENT_') {\n const dirctlPath = env.DIRCTL_PATH ?? Config.DEFAULT_DIRCTL_PATH;\n\n const serverAddress = env[`${prefix}SERVER_ADDRESS`] ?? Config.DEFAULT_SERVER_ADDRESS;\n const spiffeEndpointSocketPath =\n env[`${prefix}SPIFFE_SOCKET_PATH`] ?? Config.DEFAULT_SPIFFE_ENDPOINT_SOCKET;\n const authMode = (env[`${prefix}AUTH_MODE`] ?? Config.DEFAULT_AUTH_MODE) as AuthMode;\n const authToken = env[`${prefix}AUTH_TOKEN`] ?? Config.DEFAULT_AUTH_TOKEN;\n const jwtAudience = env[`${prefix}JWT_AUDIENCE`] ?? Config.DEFAULT_JWT_AUDIENCE;\n const tlsCaFile = env[`${prefix}TLS_CA_FILE`] ?? Config.DEFAULT_TLS_CA_FILE;\n const tlsCertFile = env[`${prefix}TLS_CERT_FILE`] ?? Config.DEFAULT_TLS_CERT_FILE;\n const tlsKeyFile = env[`${prefix}TLS_KEY_FILE`] ?? Config.DEFAULT_TLS_KEY_FILE;\n const tlsServerName = env[`${prefix}TLS_SERVER_NAME`] ?? Config.DEFAULT_TLS_SERVER_NAME;\n const tlsSkipVerify = parseBoolEnv(\n env[`${prefix}TLS_SKIP_VERIFY`],\n Config.DEFAULT_TLS_SKIP_VERIFY,\n );\n const oidcIssuer = env[`${prefix}OIDC_ISSUER`] ?? Config.DEFAULT_OIDC_ISSUER;\n const oidcClientId = env[`${prefix}OIDC_CLIENT_ID`] ?? Config.DEFAULT_OIDC_CLIENT_ID;\n const oidcClientSecret =\n env[`${prefix}OIDC_CLIENT_SECRET`] ?? Config.DEFAULT_OIDC_CLIENT_SECRET;\n const oidcRedirectUri = env[`${prefix}OIDC_REDIRECT_URI`] ?? Config.DEFAULT_OIDC_REDIRECT_URI;\n const oidcCallbackPort = parseIntEnv(\n env[`${prefix}OIDC_CALLBACK_PORT`],\n Config.DEFAULT_OIDC_CALLBACK_PORT,\n );\n const oidcAuthTimeout = parseFloatEnv(\n env[`${prefix}OIDC_AUTH_TIMEOUT`],\n Config.DEFAULT_OIDC_AUTH_TIMEOUT,\n );\n const oidcScopes = parseCommaScopes(env[`${prefix}OIDC_SCOPES`], Config.DEFAULT_OIDC_SCOPES);\n\n let dockerConfig: DockerConfig | undefined = undefined;\n const dirctlImage = env.DIRCTL_IMAGE;\n const dirctlImageTag = env.DIRCTL_IMAGE_TAG;\n if (dirctlImage || dirctlImageTag) {\n dockerConfig = new DockerConfig(\n dirctlImage ?? DockerConfig.DEFAULT_DIRCTL_IMAGE,\n dirctlImageTag ?? DockerConfig.DEFAULT_DIRCTL_IMAGE_TAG,\n new Map<string, string>(),\n [],\n '0:0',\n );\n }\n\n return new Config(\n serverAddress,\n dirctlPath,\n spiffeEndpointSocketPath,\n authMode,\n jwtAudience,\n tlsCaFile,\n tlsCertFile,\n tlsKeyFile,\n authToken,\n tlsServerName,\n tlsSkipVerify,\n oidcIssuer,\n oidcClientId,\n oidcClientSecret,\n oidcRedirectUri,\n oidcCallbackPort,\n oidcAuthTimeout,\n oidcScopes,\n undefined,\n dockerConfig,\n );\n }\n\n getCommandAndArgs(args: string[]): [string, string[]] {\n if (this.dockerConfig) {\n const dockerArgs = this.dockerConfig.getDockerArgs();\n return ['docker', dockerArgs.concat(args)];\n }\n return [`${this.dirctlPath}`, args];\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport async function* requestGenerator<T>(reqs: T[]): AsyncIterable<T> {\n for (const req of reqs) {\n yield req;\n }\n}\n\nexport async function collectStream<T>(stream: AsyncIterable<T>): Promise<T[]> {\n const results: T[] = [];\n for await (const item of stream) {\n results.push(item);\n }\n return results;\n}\n\nexport async function invoke<T>(opName: string, call: () => Promise<T>): Promise<T> {\n try {\n return await call();\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`${opName} failed: ${msg}`);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { invoke } from './base.js';\n\nexport class AIFinderService {\n private readonly aiFinderClient: Client<typeof models.catalog_v1.AIFinderService>;\n\n constructor(aiFinderClient: Client<typeof models.catalog_v1.AIFinderService>) {\n this.aiFinderClient = aiFinderClient;\n }\n\n async listAgents(\n request: models.catalog_v1.ListAgentsRequest,\n ): Promise<models.catalog_v1.ListAgentsResponse> {\n return invoke('listAgents', () => this.aiFinderClient.listAgents(request));\n }\n\n async getAgent(\n request: models.catalog_v1.GetAgentRequest,\n ): Promise<models.catalog_v1.GetAgentResponse> {\n return invoke('getAgent', () => this.aiFinderClient.getAgent(request));\n }\n\n async exportAgent(\n request: models.catalog_v1.ExportAgentRequest,\n ): Promise<models.catalog_v1.HttpBody> {\n return invoke('exportAgent', () => this.aiFinderClient.exportAgent(request));\n }\n\n async getWellKnownCatalog(\n request: models.catalog_v1.GetWellKnownCatalogRequest,\n ): Promise<models.catalog_v1.GetWellKnownCatalogResponse> {\n return invoke('getWellKnownCatalog', () => this.aiFinderClient.getWellKnownCatalog(request));\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream, requestGenerator } from './base.js';\n\nexport class StoreService {\n private readonly storeClient: Client<typeof models.store_v1.StoreService>;\n\n constructor(storeClient: Client<typeof models.store_v1.StoreService>) {\n this.storeClient = storeClient;\n }\n\n async push(records: models.core_v1.Record[]): Promise<models.core_v1.RecordRef[]> {\n return collectStream(this.storeClient.push(requestGenerator(records)));\n }\n\n async push_referrer(\n requests: models.store_v1.PushReferrerRequest[],\n ): Promise<models.store_v1.PushReferrerResponse[]> {\n return collectStream(this.storeClient.pushReferrer(requestGenerator(requests)));\n }\n\n async pull(refs: models.core_v1.RecordRef[]): Promise<models.core_v1.Record[]> {\n return collectStream(this.storeClient.pull(requestGenerator(refs)));\n }\n\n async pull_referrer(\n requests: models.store_v1.PullReferrerRequest[],\n ): Promise<models.store_v1.PullReferrerResponse[]> {\n return collectStream(this.storeClient.pullReferrer(requestGenerator(requests)));\n }\n\n async lookup(refs: models.core_v1.RecordRef[]): Promise<models.core_v1.RecordMeta[]> {\n return collectStream(this.storeClient.lookup(requestGenerator(refs)));\n }\n\n async delete(refs: models.core_v1.RecordRef[]): Promise<void> {\n await this.storeClient.delete(requestGenerator(refs));\n }\n\n async deleteReferrer(\n request: models.store_v1.DeleteReferrerRequest,\n ): Promise<models.store_v1.DeleteReferrerResponse> {\n async function* requests() {\n yield request;\n }\n const responses = await collectStream(this.storeClient.deleteReferrer(requests()));\n if (responses.length === 0) {\n throw new Error('deleteReferrer failed: empty response');\n }\n return responses[0];\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class RoutingService {\n private readonly routingClient: Client<typeof models.routing_v1.RoutingService>;\n\n constructor(routingClient: Client<typeof models.routing_v1.RoutingService>) {\n this.routingClient = routingClient;\n }\n\n async publish(request: models.routing_v1.PublishRequest): Promise<void> {\n await this.routingClient.publish(request);\n }\n\n async list(request: models.routing_v1.ListRequest): Promise<models.routing_v1.ListResponse[]> {\n return collectStream(this.routingClient.list(request));\n }\n\n async searchRouting(\n request: models.routing_v1.SearchRequest,\n ): Promise<models.routing_v1.SearchResponse[]> {\n return collectStream(this.routingClient.search(request));\n }\n\n async unpublish(request: models.routing_v1.UnpublishRequest): Promise<void> {\n await this.routingClient.unpublish(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class SearchService {\n private readonly searchClient: Client<typeof models.search_v1.SearchService>;\n\n constructor(searchClient: Client<typeof models.search_v1.SearchService>) {\n this.searchClient = searchClient;\n }\n\n async searchCIDs(\n request: models.search_v1.SearchCIDsRequest,\n ): Promise<models.search_v1.SearchCIDsResponse[]> {\n return collectStream(this.searchClient.searchCIDs(request));\n }\n\n async searchRecords(\n request: models.search_v1.SearchRecordsRequest,\n ): Promise<models.search_v1.SearchRecordsResponse[]> {\n return collectStream(this.searchClient.searchRecords(request));\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class PublicationService {\n private readonly publicationClient: Client<typeof models.routing_v1.PublicationService>;\n\n constructor(publicationClient: Client<typeof models.routing_v1.PublicationService>) {\n this.publicationClient = publicationClient;\n }\n\n async create_publication(\n request: models.routing_v1.PublishRequest,\n ): Promise<models.routing_v1.CreatePublicationResponse> {\n return await this.publicationClient.createPublication(request);\n }\n\n async list_publication(\n request: models.routing_v1.ListPublicationsRequest,\n ): Promise<models.routing_v1.ListPublicationsItem[]> {\n return collectStream(this.publicationClient.listPublications(request));\n }\n\n async get_publication(\n request: models.routing_v1.GetPublicationRequest,\n ): Promise<models.routing_v1.GetPublicationResponse> {\n return await this.publicationClient.getPublication(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\nimport { collectStream } from './base.js';\n\nexport class SyncService {\n private readonly syncClient: Client<typeof models.store_v1.SyncService>;\n\n constructor(syncClient: Client<typeof models.store_v1.SyncService>) {\n this.syncClient = syncClient;\n }\n\n async create_sync(\n request: models.store_v1.CreateSyncRequest,\n ): Promise<models.store_v1.CreateSyncResponse> {\n return await this.syncClient.createSync(request);\n }\n\n async list_syncs(\n request: models.store_v1.ListSyncsRequest,\n ): Promise<models.store_v1.ListSyncsItem[]> {\n return collectStream(this.syncClient.listSyncs(request));\n }\n\n async get_sync(\n request: models.store_v1.GetSyncRequest,\n ): Promise<models.store_v1.GetSyncResponse> {\n return await this.syncClient.getSync(request);\n }\n\n async delete_sync(\n request: models.store_v1.DeleteSyncRequest,\n ): Promise<models.store_v1.DeleteSyncResponse> {\n return await this.syncClient.deleteSync(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\n\nexport class EventService {\n private readonly eventClient: Client<typeof models.events_v1.EventService>;\n\n constructor(eventClient: Client<typeof models.events_v1.EventService>) {\n this.eventClient = eventClient;\n }\n\n listen(request: models.events_v1.ListenRequest): AsyncIterable<models.events_v1.ListenResponse> {\n return this.eventClient.listen(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport * as models from '../../models/index.js';\n\nexport class NamingService {\n private readonly namingClient: Client<typeof models.naming_v1.NamingService>;\n\n constructor(namingClient: Client<typeof models.naming_v1.NamingService>) {\n this.namingClient = namingClient;\n }\n\n async resolve(\n request: models.naming_v1.ResolveRequest,\n ): Promise<models.naming_v1.ResolveResponse> {\n return await this.namingClient.resolve(request);\n }\n\n async getVerificationInfo(\n request: models.naming_v1.GetVerificationInfoRequest,\n ): Promise<models.naming_v1.GetVerificationInfoResponse> {\n return await this.namingClient.getVerificationInfo(request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { spawnSync, type SpawnSyncReturns } from 'node:child_process';\nimport { env } from 'node:process';\n\nimport type { Config } from '../config.js';\nimport * as models from '../../models/index.js';\n\nexport function signWithKey(\n config: Config,\n cid: string,\n req: models.sign_v1.SignWithKey,\n): SpawnSyncReturns<string> {\n // NOTE: dirctl appends :80 or :443 to server address if has http or https:// prefix\n const dirctlServerAddress = config.serverAddress.replace(/^https?:\\/\\//, '');\n\n const shell_env = { ...env };\n shell_env.COSIGN_PASSWORD = req.password ? String(req.password) : '';\n if (config.dockerConfig) {\n config.dockerConfig.envs.set('COSIGN_PASSWORD', shell_env.COSIGN_PASSWORD);\n config.dockerConfig.envs.set('DIRECTORY_CLIENT_SERVER_ADDRESS', dirctlServerAddress);\n }\n\n const args = ['sign', cid, '--key', req.privateKey];\n const [command, commandArgs] = config.getCommandAndArgs(args);\n\n return spawnSync(command, commandArgs, {\n env: { ...env, DIRECTORY_CLIENT_SERVER_ADDRESS: dirctlServerAddress },\n encoding: 'utf8',\n stdio: 'pipe',\n });\n}\n\nexport function signWithOidc(\n config: Config,\n cid: string,\n req: models.sign_v1.SignWithOIDC,\n): SpawnSyncReturns<string> {\n const args = ['sign', cid];\n if (req.idToken !== '') {\n args.push(...['--oidc-token', req.idToken]);\n }\n if (req.options?.oidcProviderUrl !== undefined && req.options.oidcProviderUrl !== '') {\n args.push(...['--oidc-provider-url', req.options.oidcProviderUrl]);\n }\n if (req.options?.oidcClientId !== undefined && req.options.oidcClientId !== '') {\n args.push(...['--oidc-client-id', req.options.oidcClientId]);\n }\n if (req.options?.oidcClientSecret !== undefined && req.options.oidcClientSecret !== '') {\n args.push(...['--oidc-client-secret', req.options.oidcClientSecret]);\n }\n if (req.options?.skipTlog !== undefined && req.options.skipTlog) {\n args.push('--skip-tlog');\n }\n if (req.options?.fulcioUrl !== undefined && req.options.fulcioUrl !== '') {\n args.push(...['--fulcio-url', req.options.fulcioUrl]);\n }\n if (req.options?.rekorUrl !== undefined && req.options.rekorUrl !== '') {\n args.push(...['--rekor-url', req.options.rekorUrl]);\n }\n if (req.options?.timestampUrl !== undefined && req.options.timestampUrl !== '') {\n args.push(...['--timestamp-url', req.options.timestampUrl]);\n }\n\n const [command, commandArgs] = config.getCommandAndArgs(args);\n\n // NOTE: dirctl appends :80 or :443 to server address if has http or https:// prefix\n const dirctlServerAddress = config.serverAddress.replace(/^https?:\\/\\//, '');\n\n return spawnSync(command, commandArgs, {\n env: { ...env, DIRECTORY_CLIENT_SERVER_ADDRESS: dirctlServerAddress },\n encoding: 'utf8',\n stdio: 'pipe',\n });\n}\n\nexport function signRecord(config: Config, req: models.sign_v1.SignRequest): void {\n const cid = req.recordRef?.cid ?? '';\n let output: SpawnSyncReturns<string>;\n\n switch (req.provider?.request.case) {\n case 'oidc':\n output = signWithOidc(config, cid, req.provider.request.value);\n break;\n case 'key':\n output = signWithKey(config, cid, req.provider.request.value);\n break;\n default:\n throw new Error('unsupported provider was supplied');\n }\n\n if (output.status !== 0) {\n throw output.error ?? output.stderr;\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n file_agntcy_dir_core_v1_record,\n RecordRef,\n RecordRefSchema,\n NamedRecordRef,\n NamedRecordRefSchema,\n RecordMeta,\n RecordMetaSchema,\n Record,\n RecordSchema,\n RecordReferrer,\n RecordReferrerSchema,\n} from '@buf/agntcy_dir.bufbuild_es/agntcy/dir/core/v1/record_pb';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nexport * as catalog_v1 from './catalog_v1';\nexport * as core_v1 from './core_v1';\nexport * as naming_v1 from './naming_v1';\nexport * as routing_v1 from './routing_v1';\nexport * as search_v1 from './search_v1';\nexport * as sign_v1 from './sign_v1';\nexport * as store_v1 from './store_v1';\nexport * as events_v1 from './events_v1';\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { closeSync, mkdtempSync, openSync, readFileSync, existsSync, rmSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport { env } from 'node:process';\n\nimport { fromJsonString } from '@bufbuild/protobuf';\n\nimport type { Config } from '../config.js';\nimport * as models from '../../models/index.js';\n\nfunction runVerifyCommand(config: Config, args: string[]): void {\n const [command, commandArgs] = config.getCommandAndArgs(args);\n const output = spawnSync(command, commandArgs, {\n env: { ...env, DIRECTORY_CLIENT_SERVER_ADDRESS: config.serverAddress },\n encoding: 'utf8',\n stdio: 'pipe',\n });\n\n if (output.status !== 0) {\n throw new Error(output.stderr || output.stdout || 'Verification failed');\n }\n}\n\nexport function verifyWithKey(\n config: Config,\n cid: string,\n req: models.sign_v1.VerifyWithKey,\n outputPath: string,\n): void {\n const args = ['verify', cid, '--key', req.publicKey, '--output-file', outputPath];\n runVerifyCommand(config, args);\n}\n\nexport function verifyWithAny(\n config: Config,\n cid: string,\n req: models.sign_v1.VerifyWithAny | undefined,\n outputPath: string,\n): void {\n const args = ['verify', cid, '--output-file', outputPath];\n\n if (req?.oidcOptions !== undefined) {\n if (req.oidcOptions.tufMirrorUrl !== undefined && req.oidcOptions.tufMirrorUrl !== '') {\n args.push(...['--tuf-mirror-url', req.oidcOptions.tufMirrorUrl]);\n }\n if (req.oidcOptions.trustedRootPath !== undefined && req.oidcOptions.trustedRootPath !== '') {\n args.push(...['--trusted-root-path', req.oidcOptions.trustedRootPath]);\n }\n if (req.oidcOptions.ignoreTlog === true) {\n args.push('--ignore-tlog');\n }\n if (req.oidcOptions.ignoreTsa === true) {\n args.push('--ignore-tsa');\n }\n if (req.oidcOptions.ignoreSct === true) {\n args.push('--ignore-sct');\n }\n }\n\n runVerifyCommand(config, args);\n}\n\nexport function verifyWithOidc(\n config: Config,\n cid: string,\n req: models.sign_v1.VerifyWithOIDC | undefined,\n outputPath: string,\n): void {\n const args = ['verify', cid, '--output-file', outputPath];\n\n if (req !== undefined) {\n if (req.issuer !== undefined && req.issuer !== '') {\n args.push(...['--oidc-issuer', req.issuer]);\n }\n if (req.subject !== undefined && req.subject !== '') {\n args.push(...['--oidc-subject', req.subject]);\n }\n\n if (req.options !== undefined) {\n if (req.options.tufMirrorUrl !== undefined && req.options.tufMirrorUrl !== '') {\n args.push(...['--tuf-mirror-url', req.options.tufMirrorUrl]);\n }\n if (req.options.trustedRootPath !== undefined && req.options.trustedRootPath !== '') {\n args.push(...['--trusted-root-path', req.options.trustedRootPath]);\n }\n if (req.options.ignoreTlog === true) {\n args.push('--ignore-tlog');\n }\n if (req.options.ignoreTsa === true) {\n args.push('--ignore-tsa');\n }\n if (req.options.ignoreSct === true) {\n args.push('--ignore-sct');\n }\n }\n }\n\n runVerifyCommand(config, args);\n}\n\nexport function verifyRecord(\n config: Config,\n request: models.sign_v1.VerifyRequest,\n): models.sign_v1.VerifyResponse {\n const tempDir = mkdtempSync(join(tmpdir(), 'dirctl-verify-'));\n const outputPath = join(tempDir, 'output.json');\n closeSync(openSync(outputPath, 'w'));\n let resolvedOutputPath = outputPath;\n\n if (config.dockerConfig) {\n resolvedOutputPath = outputPath.split('/').reverse()[0];\n config.dockerConfig.mounts.push(`type=bind,src=${outputPath},dst=/${resolvedOutputPath}`);\n }\n\n try {\n const cid = request.recordRef?.cid ?? '';\n\n switch (request.provider?.request.case) {\n case 'oidc':\n verifyWithOidc(config, cid, request.provider.request.value, resolvedOutputPath);\n break;\n case 'key':\n verifyWithKey(config, cid, request.provider.request.value, resolvedOutputPath);\n break;\n case 'any':\n verifyWithAny(config, cid, request.provider.request.value, resolvedOutputPath);\n break;\n default:\n throw new Error('unsupported provider was supplied');\n }\n\n if (!existsSync(outputPath)) {\n throw new Error('verification output file was not created');\n }\n\n const jsonContent = readFileSync(outputPath, 'utf8');\n\n return fromJsonString(models.sign_v1.VerifyResponseSchema, jsonContent);\n } catch (e) {\n throw new Error(`Failed to parse verification response: ${e}`);\n } finally {\n try {\n rmSync(tempDir, { recursive: true, force: true });\n } catch {\n // ignore cleanup errors\n }\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Client } from '@connectrpc/connect';\n\nimport type { Config } from '../config.js';\nimport { signRecord } from '../dirctl/signing.js';\nimport { verifyRecord } from '../dirctl/verification.js';\nimport * as models from '../../models/index.js';\n\nexport class SignService {\n private readonly config: Config;\n private readonly signClient: Client<typeof models.sign_v1.SignService>;\n\n constructor(config: Config, signClient: Client<typeof models.sign_v1.SignService>) {\n this.config = config;\n this.signClient = signClient;\n }\n\n sign(req: models.sign_v1.SignRequest): void {\n signRecord(this.config, req);\n }\n\n async verify(request: models.sign_v1.VerifyRequest): Promise<models.sign_v1.VerifyResponse> {\n if (request.fromServer) {\n if (!request.recordRef?.cid) {\n throw new Error('VerifyRequest.recordRef with cid is required');\n }\n return await this.signClient.verify(request);\n }\n return verifyRecord(this.config, request);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Interceptor } from '@connectrpc/connect';\nimport { createClient as createClientSpiffe } from 'spiffe';\n\nimport type { Config } from '../config.js';\nimport type { OAuthTokenHolder } from '../auth/oauthPkce.js';\n\nexport function createBearerAuthInterceptor(holder: OAuthTokenHolder): Interceptor {\n return (next) => async (req) => {\n req.header.set('authorization', `Bearer ${holder.getAccessToken()}`);\n return await next(req);\n };\n}\n\nexport function createJwtAuthInterceptor(config: Config): Interceptor {\n if (config.spiffeEndpointSocket === '') {\n throw new Error('SPIFFE socket path is required for JWT authentication');\n }\n if (config.jwtAudience === '') {\n throw new Error('JWT audience is required for JWT authentication');\n }\n\n const client = createClientSpiffe(config.spiffeEndpointSocket);\n\n return (next) => async (req) => {\n const jwtCall = client.fetchJWTSVID({\n spiffeId: '',\n audience: [config.jwtAudience],\n });\n\n const response = await jwtCall.response;\n\n if (!response.svids || response.svids.length === 0) {\n throw new Error('Failed to fetch JWT-SVID from SPIRE: no SVIDs returned');\n }\n\n const jwtToken = response.svids[0].svid;\n req.header.set('authorization', `Bearer ${jwtToken}`);\n\n return await next(req);\n };\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { readFileSync } from 'node:fs';\nimport type * as http2 from 'node:http2';\n\nimport type { Transport } from '@connectrpc/connect';\nimport { createGrpcTransport as createConnectGrpcTransport } from '@connectrpc/connect-node';\nimport { createClient as createClientSpiffe, type X509SVID } from 'spiffe';\n\nimport type { Config } from '../config.js';\nimport type { OAuthTokenHolder } from '../auth/oauthPkce.js';\nimport { createBearerAuthInterceptor, createJwtAuthInterceptor } from './interceptors.js';\n\nfunction convertToPEM(bytes: Uint8Array, label: string): string {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n const base64String = btoa(binary);\n const lines = base64String.match(/.{1,64}/g) ?? [];\n return [`-----BEGIN ${label}-----`, ...lines, `-----END ${label}-----`].join('\\n');\n}\n\nfunction secureNodeOptions(\n config: Config,\n base: http2.SecureClientSessionOptions,\n): http2.SecureClientSessionOptions {\n const out: http2.SecureClientSessionOptions = { ...base };\n const sn = config.tlsServerName.trim();\n if (sn !== '') {\n out.servername = sn;\n }\n return out;\n}\n\nexport function createOidcTransport(config: Config, holder: OAuthTokenHolder): Transport {\n let ca: string | undefined;\n if (config.tlsCaFile !== '') {\n try {\n ca = readFileSync(config.tlsCaFile).toString();\n } catch (e) {\n throw new Error(`Failed to read TLS CA file: ${(e as Error).message}`);\n }\n }\n const nodeBase: http2.SecureClientSessionOptions = {};\n if (ca !== undefined) {\n nodeBase.ca = ca;\n }\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n interceptors: [createBearerAuthInterceptor(holder)],\n nodeOptions: secureNodeOptions(config, nodeBase),\n });\n}\n\nasync function createX509Transport(config: Config): Promise<Transport> {\n if (config.spiffeEndpointSocket === '') {\n throw new Error('SPIFFE socket path is required for X.509 authentication');\n }\n\n const client = createClientSpiffe(config.spiffeEndpointSocket);\n\n let svid: X509SVID = {\n spiffeId: '',\n hint: '',\n x509Svid: new Uint8Array(),\n x509SvidKey: new Uint8Array(),\n bundle: new Uint8Array(),\n };\n\n const svidStream = client.fetchX509SVID({});\n for await (const message of svidStream.responses) {\n message.svids.forEach((_svid) => {\n svid = _svid;\n });\n\n if (message.svids.length > 0) {\n break;\n }\n }\n\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n nodeOptions: secureNodeOptions(config, {\n ca: convertToPEM(svid.bundle, 'TRUSTED CERTIFICATE'),\n cert: convertToPEM(svid.x509Svid, 'CERTIFICATE'),\n key: convertToPEM(svid.x509SvidKey, 'PRIVATE KEY'),\n }),\n });\n}\n\nasync function createJWTTransport(config: Config): Promise<Transport> {\n if (config.spiffeEndpointSocket === '') {\n throw new Error('SPIFFE socket path is required for JWT authentication');\n }\n\n const client = createClientSpiffe(config.spiffeEndpointSocket);\n\n let bundle: Uint8Array | null = null;\n const bundleStream = client.fetchX509Bundles({});\n for await (const message of bundleStream.responses) {\n for (const [, bundleData] of Object.entries(message.bundles)) {\n bundle = new Uint8Array(bundleData);\n break;\n }\n if (bundle !== null) {\n break;\n }\n }\n\n if (bundle === null || bundle.length === 0) {\n throw new Error('Failed to fetch X.509 bundle from SPIRE: no bundles returned');\n }\n\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n interceptors: [createJwtAuthInterceptor(config)],\n nodeOptions: secureNodeOptions(config, {\n ca: convertToPEM(bundle, 'CERTIFICATE'),\n }),\n });\n}\n\nasync function createTLSTransport(config: Config): Promise<Transport> {\n if (config.tlsCaFile === '') {\n throw new Error('TLS CA file is required for TLS authentication');\n }\n if (config.tlsCertFile === '') {\n throw new Error('TLS certificate file is required for TLS authentication');\n }\n if (config.tlsKeyFile === '') {\n throw new Error('TLS key file is required for TLS authentication');\n }\n\n let root_ca: string;\n let cert_chain: string;\n let private_key: string;\n\n try {\n root_ca = readFileSync(config.tlsCaFile).toString();\n cert_chain = readFileSync(config.tlsCertFile).toString();\n private_key = readFileSync(config.tlsKeyFile).toString();\n } catch (e) {\n console.error('Error reading file:', (e as Error).message);\n throw e;\n }\n\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n nodeOptions: secureNodeOptions(config, {\n ca: root_ca,\n cert: cert_chain,\n key: private_key,\n }),\n });\n}\n\nexport async function createGrpcTransport(\n config: Config,\n options?: { oidcTokenHolder?: OAuthTokenHolder },\n): Promise<Transport> {\n switch (config.authMode) {\n case '':\n return createConnectGrpcTransport({\n baseUrl: config.serverAddress,\n });\n\n case 'jwt':\n return await createJWTTransport(config);\n\n case 'x509':\n return await createX509Transport(config);\n\n case 'tls':\n return await createTLSTransport(config);\n\n case 'oidc': {\n const holder = options?.oidcTokenHolder;\n if (holder === undefined) {\n throw new Error('createGrpcTransport: authMode oidc requires options.oidcTokenHolder');\n }\n return createOidcTransport(config, holder);\n }\n\n default:\n throw new Error(`Unsupported auth mode: ${config.authMode}`);\n }\n}\n","// Copyright AGNTCY Contributors (https://github.com/agntcy)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Client as GrpcClient, createClient, type Transport } from '@connectrpc/connect';\nimport { createGrpcTransport as createConnectGrpcTransport } from '@connectrpc/connect-node';\n\nimport type {\n ExportAgentRequest,\n GetAgentRequest,\n GetAgentResponse,\n GetWellKnownCatalogRequest,\n GetWellKnownCatalogResponse,\n HttpBody,\n ListAgentsRequest,\n ListAgentsResponse,\n} from '../models/catalog_v1';\nimport type { Record, RecordMeta, RecordRef } from '../models/core_v1';\nimport type { ListenRequest, ListenResponse } from '../models/events_v1';\nimport type {\n GetVerificationInfoRequest,\n GetVerificationInfoResponse,\n ResolveRequest,\n ResolveResponse,\n} from '../models/naming_v1';\nimport type {\n CreatePublicationResponse,\n GetPublicationRequest,\n GetPublicationResponse,\n ListPublicationsItem,\n ListPublicationsRequest,\n ListRequest,\n ListResponse,\n PublishRequest,\n SearchRequest,\n SearchResponse,\n UnpublishRequest,\n} from '../models/routing_v1';\nimport type {\n SearchCIDsRequest,\n SearchCIDsResponse,\n SearchRecordsRequest,\n SearchRecordsResponse,\n} from '../models/search_v1';\nimport type { SignRequest, VerifyRequest, VerifyResponse } from '../models/sign_v1';\nimport type {\n CreateSyncRequest,\n CreateSyncResponse,\n DeleteReferrerRequest,\n DeleteReferrerResponse,\n DeleteSyncRequest,\n DeleteSyncResponse,\n GetSyncRequest,\n GetSyncResponse,\n ListSyncsItem,\n ListSyncsRequest,\n PullReferrerRequest,\n PullReferrerResponse,\n PushReferrerRequest,\n PushReferrerResponse,\n} from '../models/store_v1';\nimport * as catalog_v1 from '../models/catalog_v1';\nimport * as events_v1 from '../models/events_v1';\nimport * as naming_v1 from '../models/naming_v1';\nimport * as routing_v1 from '../models/routing_v1';\nimport * as search_v1 from '../models/search_v1';\nimport * as sign_v1 from '../models/sign_v1';\nimport * as store_v1 from '../models/store_v1';\nimport { OAuthSessionManager } from './auth/session.js';\nimport { Config } from './config.js';\nimport {\n AIFinderService,\n EventService,\n NamingService,\n PublicationService,\n RoutingService,\n SearchService,\n SignService,\n StoreService,\n SyncService,\n} from './services/index.js';\nimport { createGrpcTransport, createOidcTransport } from './transport/channels.js';\nimport type { OAuthTokenHolder } from './auth/oauthPkce.js';\n\n/**\n * High-level client for interacting with AGNTCY Directory services.\n *\n * @public\n */\nexport class Client {\n config: Config;\n readonly oauthSession: OAuthSessionManager;\n\n /** @internal */\n storeClient: GrpcClient<typeof store_v1.StoreService>;\n /** @internal */\n routingClient: GrpcClient<typeof routing_v1.RoutingService>;\n /** @internal */\n publicationClient: GrpcClient<typeof routing_v1.PublicationService>;\n /** @internal */\n searchClient: GrpcClient<typeof search_v1.SearchService>;\n /** @internal */\n signClient: GrpcClient<typeof sign_v1.SignService>;\n /** @internal */\n syncClient: GrpcClient<typeof store_v1.SyncService>;\n /** @internal */\n eventClient: GrpcClient<typeof events_v1.EventService>;\n /** @internal */\n namingClient: GrpcClient<typeof naming_v1.NamingService>;\n /** @internal */\n aiFinderClient: GrpcClient<typeof catalog_v1.AIFinderService>;\n\n /** @internal */\n storeService: StoreService;\n /** @internal */\n routingService: RoutingService;\n /** @internal */\n publicationService: PublicationService;\n /** @internal */\n searchService: SearchService;\n /** @internal */\n signService: SignService;\n /** @internal */\n syncService: SyncService;\n /** @internal */\n eventService: EventService;\n /** @internal */\n namingService: NamingService;\n /** @internal */\n aiFinderService: AIFinderService;\n\n constructor(config?: Config, grpcTransport?: Transport) {\n const resolvedConfig = config ?? Config.loadFromEnv();\n this.config = resolvedConfig;\n this.oauthSession = new OAuthSessionManager(resolvedConfig);\n\n let transport = grpcTransport;\n if (transport === undefined) {\n if (resolvedConfig.authMode === 'oidc') {\n const holder = this.oauthSession.oauthHolder;\n if (holder === null) {\n throw new Error('OAuth token holder not initialized');\n }\n transport = createOidcTransport(resolvedConfig, holder);\n } else {\n transport = createConnectGrpcTransport({\n baseUrl: resolvedConfig.serverAddress,\n });\n }\n }\n\n this.storeClient = createClient(store_v1.StoreService, transport);\n this.routingClient = createClient(routing_v1.RoutingService, transport);\n this.publicationClient = createClient(routing_v1.PublicationService, transport);\n this.searchClient = createClient(search_v1.SearchService, transport);\n this.signClient = createClient(sign_v1.SignService, transport);\n this.syncClient = createClient(store_v1.SyncService, transport);\n this.eventClient = createClient(events_v1.EventService, transport);\n this.namingClient = createClient(naming_v1.NamingService, transport);\n this.aiFinderClient = createClient(catalog_v1.AIFinderService, transport);\n\n this.storeService = new StoreService(this.storeClient);\n this.routingService = new RoutingService(this.routingClient);\n this.publicationService = new PublicationService(this.publicationClient);\n this.searchService = new SearchService(this.searchClient);\n this.signService = new SignService(resolvedConfig, this.signClient);\n this.syncService = new SyncService(this.syncClient);\n this.eventService = new EventService(this.eventClient);\n this.namingService = new NamingService(this.namingClient);\n this.aiFinderService = new AIFinderService(this.aiFinderClient);\n }\n\n static async createGRPCTransport(\n config: Config,\n options?: { oidcTokenHolder?: OAuthTokenHolder },\n ): Promise<Transport> {\n return createGrpcTransport(config, {\n oidcTokenHolder: options?.oidcTokenHolder,\n });\n }\n\n hasCachedOAuthToken(): boolean {\n return this.oauthSession.hasAccessToken();\n }\n\n getAccessToken(): string {\n const holder = this.oauthSession.oauthHolder;\n if (holder === null) {\n throw new Error('OAuth token holder not initialized');\n }\n return holder.getAccessToken();\n }\n\n async authenticateOAuthPkce(): Promise<void> {\n await this.oauthSession.authenticate();\n }\n\n async push(records: Record[]): Promise<RecordRef[]> {\n return this.storeService.push(records);\n }\n\n async push_referrer(requests: PushReferrerRequest[]): Promise<PushReferrerResponse[]> {\n return this.storeService.push_referrer(requests);\n }\n\n async pull(refs: RecordRef[]): Promise<Record[]> {\n return this.storeService.pull(refs);\n }\n\n async pull_referrer(requests: PullReferrerRequest[]): Promise<PullReferrerResponse[]> {\n return this.storeService.pull_referrer(requests);\n }\n\n async searchCIDs(request: SearchCIDsRequest): Promise<SearchCIDsResponse[]> {\n return this.searchService.searchCIDs(request);\n }\n\n async searchRecords(request: SearchRecordsRequest): Promise<SearchRecordsResponse[]> {\n return this.searchService.searchRecords(request);\n }\n\n async lookup(refs: RecordRef[]): Promise<RecordMeta[]> {\n return this.storeService.lookup(refs);\n }\n\n async list(request: ListRequest): Promise<ListResponse[]> {\n return this.routingService.list(request);\n }\n\n async searchRouting(request: SearchRequest): Promise<SearchResponse[]> {\n return this.routingService.searchRouting(request);\n }\n\n async publish(request: PublishRequest): Promise<void> {\n return this.routingService.publish(request);\n }\n\n async unpublish(request: UnpublishRequest): Promise<void> {\n return this.routingService.unpublish(request);\n }\n\n async delete(refs: RecordRef[]): Promise<void> {\n return this.storeService.delete(refs);\n }\n\n async deleteReferrer(request: DeleteReferrerRequest): Promise<DeleteReferrerResponse> {\n return this.storeService.deleteReferrer(request);\n }\n\n sign(req: SignRequest): void {\n this.signService.sign(req);\n }\n\n async verify(request: VerifyRequest): Promise<VerifyResponse> {\n return this.signService.verify(request);\n }\n\n async create_sync(request: CreateSyncRequest): Promise<CreateSyncResponse> {\n return this.syncService.create_sync(request);\n }\n\n async list_syncs(request: ListSyncsRequest): Promise<ListSyncsItem[]> {\n return this.syncService.list_syncs(request);\n }\n\n async get_sync(request: GetSyncRequest): Promise<GetSyncResponse> {\n return this.syncService.get_sync(request);\n }\n\n async delete_sync(request: DeleteSyncRequest): Promise<DeleteSyncResponse> {\n return this.syncService.delete_sync(request);\n }\n\n listen(request: ListenRequest): AsyncIterable<ListenResponse> {\n return this.eventService.listen(request);\n }\n\n async create_publication(request: PublishRequest): Promise<CreatePublicationResponse> {\n return this.publicationService.create_publication(request);\n }\n\n async list_publication(request: ListPublicationsRequest): Promise<ListPublicationsItem[]> {\n return this.publicationService.list_publication(request);\n }\n\n async get_publication(request: GetPublicationRequest): Promise<GetPublicationResponse> {\n return this.publicationService.get_publication(request);\n }\n\n async resolve(request: ResolveRequest): Promise<ResolveResponse> {\n return this.namingService.resolve(request);\n }\n\n async getVerificationInfo(\n request: GetVerificationInfoRequest,\n ): Promise<GetVerificationInfoResponse> {\n return this.namingService.getVerificationInfo(request);\n }\n\n async listAgents(request: ListAgentsRequest): Promise<ListAgentsResponse> {\n return this.aiFinderService.listAgents(request);\n }\n\n async getAgent(request: GetAgentRequest): Promise<GetAgentResponse> {\n return this.aiFinderService.getAgent(request);\n }\n\n async exportAgent(request: ExportAgentRequest): Promise<HttpBody> {\n return this.aiFinderService.exportAgent(request);\n }\n\n async getWellKnownCatalog(\n request: GetWellKnownCatalogRequest,\n ): Promise<GetWellKnownCatalogResponse> {\n return this.aiFinderService.getWellKnownCatalog(request);\n }\n}\n"],"names":["models.sign_v1.VerifyResponseSchema","createClientSpiffe","createConnectGrpcTransport","createClient","store_v1.StoreService","routing_v1.RoutingService","routing_v1.PublicationService","search_v1.SearchService","sign_v1.SignService","store_v1.SyncService","events_v1.EventService","naming_v1.NamingService","catalog_v1.AIFinderService"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agntcy-dir",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Directory SDK",
5
5
  "homepage": "https://github.com/agntcy/dir-sdk-javascript",
6
6
  "bugs": {
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "packageManager": "npm@11.16.0",
45
45
  "dependencies": {
46
- "@buf/agntcy_dir.bufbuild_es": "2.12.0-20260528135443-85b61b2b84a9.1",
46
+ "@buf/agntcy_dir.bufbuild_es": "2.12.0-20260617162622-804385aa416f.1",
47
47
  "@bufbuild/protobuf": "^2.12.0",
48
48
  "@connectrpc/connect": "^2.1.0",
49
49
  "@connectrpc/connect-node": "^2.1.0",
@@ -81,5 +81,9 @@
81
81
  "dist/index.cjs",
82
82
  "dist/index.mjs.map"
83
83
  ],
84
- "author": ""
84
+ "author": "",
85
+ "allowScripts": {
86
+ "fsevents@2.3.3": true,
87
+ "protobufjs@7.6.4": true
88
+ }
85
89
  }