@hashgraphonline/standards-sdk 0.1.176 → 0.1.178

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.
Files changed (151) hide show
  1. package/dist/browser/hcs-11/client.d.ts +30 -30
  2. package/dist/browser/hcs-21/types.d.ts +23 -23
  3. package/dist/browser/inscribe/inscriber.d.ts.map +1 -1
  4. package/dist/browser/services/registry-broker/client/base-client.d.ts +19 -4
  5. package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
  6. package/dist/browser/services/registry-broker/client/credits.d.ts +6 -1
  7. package/dist/browser/services/registry-broker/client/credits.d.ts.map +1 -1
  8. package/dist/browser/services/registry-broker/client/guard.d.ts +10 -0
  9. package/dist/browser/services/registry-broker/client/guard.d.ts.map +1 -0
  10. package/dist/browser/services/registry-broker/client/skills.d.ts +5 -3
  11. package/dist/browser/services/registry-broker/client/skills.d.ts.map +1 -1
  12. package/dist/browser/services/registry-broker/schemas.d.ts +7631 -24215
  13. package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
  14. package/dist/browser/services/registry-broker/types.d.ts +64 -26
  15. package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
  16. package/dist/browser/standards-sdk.browser.js +381 -225
  17. package/dist/browser/standards-sdk.browser.js.map +1 -1
  18. package/dist/browser/utils/dynamic-import.d.ts.map +1 -1
  19. package/dist/browser-root/hcs-11/client.d.ts +30 -30
  20. package/dist/browser-root/hcs-21/types.d.ts +23 -23
  21. package/dist/browser-root/inscribe/inscriber.d.ts.map +1 -1
  22. package/dist/browser-root/services/registry-broker/client/base-client.d.ts +19 -4
  23. package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -1
  24. package/dist/browser-root/services/registry-broker/client/credits.d.ts +6 -1
  25. package/dist/browser-root/services/registry-broker/client/credits.d.ts.map +1 -1
  26. package/dist/browser-root/services/registry-broker/client/guard.d.ts +10 -0
  27. package/dist/browser-root/services/registry-broker/client/guard.d.ts.map +1 -0
  28. package/dist/browser-root/services/registry-broker/client/skills.d.ts +5 -3
  29. package/dist/browser-root/services/registry-broker/client/skills.d.ts.map +1 -1
  30. package/dist/browser-root/services/registry-broker/schemas.d.ts +7631 -24215
  31. package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -1
  32. package/dist/browser-root/services/registry-broker/types.d.ts +64 -26
  33. package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -1
  34. package/dist/browser-root/standards-sdk.root-browser.js +699 -397
  35. package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
  36. package/dist/browser-root/utils/dynamic-import.d.ts.map +1 -1
  37. package/dist/cjs/hcs-11/client.d.ts +30 -30
  38. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  39. package/dist/cjs/services/registry-broker/client/base-client.d.ts +19 -4
  40. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  41. package/dist/cjs/services/registry-broker/client/credits.d.ts +6 -1
  42. package/dist/cjs/services/registry-broker/client/credits.d.ts.map +1 -1
  43. package/dist/cjs/services/registry-broker/client/guard.d.ts +10 -0
  44. package/dist/cjs/services/registry-broker/client/guard.d.ts.map +1 -0
  45. package/dist/cjs/services/registry-broker/client/skills.d.ts +5 -3
  46. package/dist/cjs/services/registry-broker/client/skills.d.ts.map +1 -1
  47. package/dist/cjs/services/registry-broker/schemas.d.ts +7612 -24196
  48. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  49. package/dist/cjs/services/registry-broker/types.d.ts +64 -26
  50. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  51. package/dist/cjs/standards-sdk.cjs +2 -2
  52. package/dist/cjs/standards-sdk.cjs.map +1 -1
  53. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  54. package/dist/es/hcs-11/client.d.ts +30 -30
  55. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  56. package/dist/es/services/registry-broker/client/base-client.d.ts +19 -4
  57. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  58. package/dist/es/services/registry-broker/client/credits.d.ts +6 -1
  59. package/dist/es/services/registry-broker/client/credits.d.ts.map +1 -1
  60. package/dist/es/services/registry-broker/client/guard.d.ts +10 -0
  61. package/dist/es/services/registry-broker/client/guard.d.ts.map +1 -0
  62. package/dist/es/services/registry-broker/client/skills.d.ts +5 -3
  63. package/dist/es/services/registry-broker/client/skills.d.ts.map +1 -1
  64. package/dist/es/services/registry-broker/schemas.d.ts +7612 -24196
  65. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  66. package/dist/es/services/registry-broker/types.d.ts +64 -26
  67. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  68. package/dist/es/standards-sdk.es116.js +1 -1
  69. package/dist/es/standards-sdk.es121.js +1 -1
  70. package/dist/es/standards-sdk.es127.js +1 -1
  71. package/dist/es/standards-sdk.es128.js +5 -5
  72. package/dist/es/standards-sdk.es138.js +1 -1
  73. package/dist/es/standards-sdk.es139.js +1 -1
  74. package/dist/es/standards-sdk.es140.js +5 -5
  75. package/dist/es/standards-sdk.es142.js +9 -6
  76. package/dist/es/standards-sdk.es142.js.map +1 -1
  77. package/dist/es/standards-sdk.es143.js +1 -1
  78. package/dist/es/standards-sdk.es145.js +63 -15
  79. package/dist/es/standards-sdk.es145.js.map +1 -1
  80. package/dist/es/standards-sdk.es147.js +2 -2
  81. package/dist/es/standards-sdk.es148.js +1 -1
  82. package/dist/es/standards-sdk.es16.js +1 -1
  83. package/dist/es/standards-sdk.es160.js +12461 -1778
  84. package/dist/es/standards-sdk.es160.js.map +1 -1
  85. package/dist/es/standards-sdk.es161.js +1936 -12461
  86. package/dist/es/standards-sdk.es161.js.map +1 -1
  87. package/dist/es/standards-sdk.es162.js +54 -15
  88. package/dist/es/standards-sdk.es162.js.map +1 -1
  89. package/dist/es/standards-sdk.es163.js +102 -47
  90. package/dist/es/standards-sdk.es163.js.map +1 -1
  91. package/dist/es/standards-sdk.es164.js +65 -88
  92. package/dist/es/standards-sdk.es164.js.map +1 -1
  93. package/dist/es/standards-sdk.es165.js +180 -61
  94. package/dist/es/standards-sdk.es165.js.map +1 -1
  95. package/dist/es/standards-sdk.es166.js +14 -197
  96. package/dist/es/standards-sdk.es166.js.map +1 -1
  97. package/dist/es/standards-sdk.es167.js +68 -707
  98. package/dist/es/standards-sdk.es167.js.map +1 -1
  99. package/dist/es/standards-sdk.es168.js +165 -66
  100. package/dist/es/standards-sdk.es168.js.map +1 -1
  101. package/dist/es/standards-sdk.es169.js +289 -139
  102. package/dist/es/standards-sdk.es169.js.map +1 -1
  103. package/dist/es/standards-sdk.es170.js +298 -274
  104. package/dist/es/standards-sdk.es170.js.map +1 -1
  105. package/dist/es/standards-sdk.es171.js +369 -262
  106. package/dist/es/standards-sdk.es171.js.map +1 -1
  107. package/dist/es/standards-sdk.es172.js +194 -316
  108. package/dist/es/standards-sdk.es172.js.map +1 -1
  109. package/dist/es/standards-sdk.es173.js +64 -319
  110. package/dist/es/standards-sdk.es173.js.map +1 -1
  111. package/dist/es/standards-sdk.es174.js +664 -68
  112. package/dist/es/standards-sdk.es174.js.map +1 -1
  113. package/dist/es/standards-sdk.es175.js +1 -1
  114. package/dist/es/standards-sdk.es176.js +2 -2
  115. package/dist/es/standards-sdk.es178.js +2 -2
  116. package/dist/es/standards-sdk.es179.js +2 -2
  117. package/dist/es/standards-sdk.es18.js +2 -2
  118. package/dist/es/standards-sdk.es180.js +1 -1
  119. package/dist/es/standards-sdk.es181.js +61 -3
  120. package/dist/es/standards-sdk.es181.js.map +1 -1
  121. package/dist/es/standards-sdk.es182.js +80 -168
  122. package/dist/es/standards-sdk.es182.js.map +1 -1
  123. package/dist/es/standards-sdk.es183.js +156 -206
  124. package/dist/es/standards-sdk.es183.js.map +1 -1
  125. package/dist/es/standards-sdk.es184.js +219 -223
  126. package/dist/es/standards-sdk.es184.js.map +1 -1
  127. package/dist/es/standards-sdk.es185.js +242 -0
  128. package/dist/es/standards-sdk.es185.js.map +1 -0
  129. package/dist/es/standards-sdk.es19.js +2 -2
  130. package/dist/es/standards-sdk.es27.js +2 -2
  131. package/dist/es/standards-sdk.es30.js +1 -1
  132. package/dist/es/standards-sdk.es31.js +1 -1
  133. package/dist/es/standards-sdk.es35.js +2 -2
  134. package/dist/es/standards-sdk.es36.js +1 -1
  135. package/dist/es/standards-sdk.es37.js +1 -1
  136. package/dist/es/standards-sdk.es56.js +1 -1
  137. package/dist/es/standards-sdk.es59.js +1 -1
  138. package/dist/es/standards-sdk.es60.js +1 -1
  139. package/dist/es/standards-sdk.es62.js +1 -1
  140. package/dist/es/standards-sdk.es63.js +2 -2
  141. package/dist/es/standards-sdk.es64.js +1 -1
  142. package/dist/es/standards-sdk.es65.js +1 -1
  143. package/dist/es/standards-sdk.es66.js +1 -1
  144. package/dist/es/standards-sdk.es67.js +1 -1
  145. package/dist/es/standards-sdk.es69.js +1 -1
  146. package/dist/es/standards-sdk.es71.js +1 -1
  147. package/dist/es/standards-sdk.es72.js +1 -1
  148. package/dist/es/standards-sdk.es75.js +1 -1
  149. package/dist/es/standards-sdk.es84.js +1 -1
  150. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  151. package/package.json +1 -1
@@ -1,242 +1,238 @@
1
- const DEFAULT_USER_AGENT = "@hol-org/rb-client";
2
- const DEFAULT_PROGRESS_INTERVAL_MS = 1500;
3
- const DEFAULT_PROGRESS_TIMEOUT_MS = 5 * 60 * 1e3;
4
- const DEFAULT_BASE_URL = "https://hol.org/registry/api/v1";
5
- const JSON_CONTENT_TYPE = /application\/json/i;
6
- const DEFAULT_HISTORY_TOP_UP_HBAR = 0.25;
7
- const MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS = 1;
8
- const stripTrailingSlashes = (value) => {
9
- let end = value.length;
10
- while (end > 0 && value.charCodeAt(end - 1) === 47) {
11
- end -= 1;
12
- }
13
- return end === value.length ? value : value.slice(0, end);
14
- };
15
- const createAbortError = () => typeof DOMException === "function" ? new DOMException("Aborted", "AbortError") : new Error("The operation was aborted");
16
- const normaliseHeaderName = (name) => name.trim().toLowerCase();
17
- const isBrowserRuntime = () => typeof window !== "undefined" && typeof window.fetch === "function";
18
- const toJsonValue = (value) => {
19
- if (value === null) {
20
- return null;
21
- }
22
- if (value instanceof Date) {
23
- return value.toISOString();
24
- }
25
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
26
- return value;
27
- }
28
- if (Array.isArray(value)) {
29
- return value.map((item) => item === void 0 ? null : toJsonValue(item));
30
- }
31
- if (typeof value === "object") {
32
- const result = {};
33
- Object.entries(value).forEach(
34
- ([key, entryValue]) => {
35
- if (entryValue !== void 0) {
36
- result[key] = toJsonValue(entryValue);
37
- }
38
- }
39
- );
40
- return result;
41
- }
42
- throw new TypeError("Only JSON-compatible values are supported");
43
- };
44
- const isJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
45
- const toJsonObject = (value) => {
46
- const normalised = toJsonValue(value);
47
- if (isJsonObject(normalised)) {
48
- return normalised;
49
- }
50
- throw new TypeError("Expected JSON object value");
51
- };
52
- const serialiseAuthConfig = (auth) => {
53
- const authPayload = {};
54
- if (auth.type) {
55
- authPayload.type = auth.type;
56
- }
57
- if (auth.token) {
58
- authPayload.token = auth.token;
59
- }
60
- if (auth.username) {
61
- authPayload.username = auth.username;
62
- }
63
- if (auth.password) {
64
- authPayload.password = auth.password;
65
- }
66
- if (auth.headerName) {
67
- authPayload.headerName = auth.headerName;
68
- }
69
- if (auth.headerValue) {
70
- authPayload.headerValue = auth.headerValue;
71
- }
72
- if (auth.headers) {
73
- authPayload.headers = { ...auth.headers };
74
- }
75
- return authPayload;
76
- };
77
- const serialiseAgentRegistrationRequest = (payload) => {
78
- const body = {
79
- profile: toJsonObject(payload.profile)
1
+ import { searchResponseSchema, delegationPlanResponseSchema, statsResponseSchema, registriesResponseSchema, additionalRegistryCatalogResponseSchema, popularResponseSchema, protocolsResponseSchema, detectProtocolResponseSchema, registrySearchByNamespaceSchema, vectorSearchResponseSchema, searchStatusResponseSchema, websocketStatsResponseSchema, metricsSummaryResponseSchema, searchFacetsResponseSchema } from "./standards-sdk.es161.js";
2
+ import { buildSearchQuery } from "./standards-sdk.es185.js";
3
+ import { RegistryBrokerError } from "./standards-sdk.es146.js";
4
+ function buildVectorFallbackSearchParams(request) {
5
+ const params = {
6
+ q: request.query
80
7
  };
81
- if (payload.endpoint !== void 0) {
82
- body.endpoint = payload.endpoint;
83
- }
84
- if (payload.protocol !== void 0) {
85
- body.protocol = payload.protocol;
86
- }
87
- if (payload.communicationProtocol !== void 0) {
88
- body.communicationProtocol = payload.communicationProtocol;
89
- }
90
- if (payload.registry !== void 0) {
91
- body.registry = payload.registry;
8
+ let effectiveLimit;
9
+ if (typeof request.limit === "number" && Number.isFinite(request.limit)) {
10
+ effectiveLimit = request.limit;
11
+ params.limit = request.limit;
92
12
  }
93
- if (payload.additionalRegistries !== void 0) {
94
- body.additionalRegistries = payload.additionalRegistries;
13
+ if (typeof request.offset === "number" && Number.isFinite(request.offset) && request.offset > 0) {
14
+ const limit = effectiveLimit && effectiveLimit > 0 ? effectiveLimit : 20;
15
+ params.limit = limit;
16
+ params.page = Math.floor(request.offset / limit) + 1;
95
17
  }
96
- if (payload.metadata !== void 0) {
97
- body.metadata = toJsonObject(payload.metadata);
18
+ if (request.filter?.registry) {
19
+ params.registry = request.filter.registry;
98
20
  }
99
- return body;
100
- };
101
- const normalizeHexPrivateKey = (value) => {
102
- const trimmed = value.trim();
103
- if (!trimmed) {
104
- throw new Error("evmPrivateKey is required");
21
+ if (request.filter?.protocols?.length) {
22
+ params.protocols = [...request.filter.protocols];
105
23
  }
106
- return trimmed.startsWith("0x") ? trimmed : `0x${trimmed}`;
107
- };
108
- function normaliseBaseUrl(input) {
109
- const trimmed = input?.trim();
110
- let baseCandidate = trimmed && trimmed.length > 0 ? trimmed : DEFAULT_BASE_URL;
111
- try {
112
- const url = new URL(stripTrailingSlashes(baseCandidate));
113
- const hostname = url.hostname.toLowerCase();
114
- const ensureRegistryPrefix = () => {
115
- if (!url.pathname.startsWith("/registry")) {
116
- url.pathname = url.pathname === "/" ? "/registry" : `/registry${url.pathname}`;
117
- }
118
- };
119
- if (hostname === "hol.org") {
120
- ensureRegistryPrefix();
121
- baseCandidate = url.toString();
122
- } else if (hostname === "registry.hashgraphonline.com" || hostname === "hashgraphonline.com") {
123
- ensureRegistryPrefix();
124
- url.hostname = "hol.org";
125
- baseCandidate = url.toString();
126
- }
127
- } catch {
24
+ if (request.filter?.adapter?.length) {
25
+ params.adapters = [...request.filter.adapter];
128
26
  }
129
- const withoutTrailing = stripTrailingSlashes(baseCandidate);
130
- if (/\/api\/v\d+$/i.test(withoutTrailing)) {
131
- return withoutTrailing;
27
+ if (request.filter?.capabilities?.length) {
28
+ params.capabilities = request.filter.capabilities.map(
29
+ (value) => typeof value === "number" ? value.toString(10) : value
30
+ );
132
31
  }
133
- if (/\/api$/i.test(withoutTrailing)) {
134
- return `${withoutTrailing}/v1`;
32
+ if (request.filter?.type) {
33
+ params.type = request.filter.type;
135
34
  }
136
- return `${withoutTrailing}/api/v1`;
35
+ return params;
137
36
  }
138
- function buildSearchQuery(params) {
139
- const query = new URLSearchParams();
140
- const appendList = (key, values) => {
141
- if (!values) {
142
- return;
143
- }
144
- values.forEach((value) => {
145
- if (typeof value === "string") {
146
- const trimmed = value.trim();
147
- if (trimmed.length > 0) {
148
- query.append(key, trimmed);
149
- }
150
- }
151
- });
37
+ function convertSearchResultToVectorResponse(result) {
38
+ const hits = result.hits.map((agent) => ({
39
+ agent,
40
+ score: 0,
41
+ highlights: {}
42
+ }));
43
+ const total = result.total;
44
+ const limit = result.limit;
45
+ const page = result.page;
46
+ const totalVisible = page * limit;
47
+ const limited = total > totalVisible || page > 1;
48
+ return {
49
+ hits,
50
+ total,
51
+ took: 0,
52
+ totalAvailable: total,
53
+ visible: hits.length,
54
+ limited,
55
+ credits_used: 0
152
56
  };
153
- if (params.q) {
154
- const trimmed = params.q.trim();
155
- if (trimmed.length > 0) {
156
- query.set("q", trimmed);
57
+ }
58
+ async function search(client, params = {}) {
59
+ const query = buildSearchQuery(params);
60
+ const raw = await client.requestJson(`/search${query}`, {
61
+ method: "GET"
62
+ });
63
+ return client.parseWithSchema(raw, searchResponseSchema, "search response");
64
+ }
65
+ async function delegate(client, request) {
66
+ const raw = await client.requestJson("/delegate", {
67
+ method: "POST",
68
+ body: request,
69
+ headers: { "content-type": "application/json" }
70
+ });
71
+ return client.parseWithSchema(
72
+ raw,
73
+ delegationPlanResponseSchema,
74
+ "delegate response"
75
+ );
76
+ }
77
+ async function stats(client) {
78
+ const raw = await client.requestJson("/stats", { method: "GET" });
79
+ return client.parseWithSchema(raw, statsResponseSchema, "stats response");
80
+ }
81
+ async function registries(client) {
82
+ const raw = await client.requestJson("/registries", {
83
+ method: "GET"
84
+ });
85
+ return client.parseWithSchema(
86
+ raw,
87
+ registriesResponseSchema,
88
+ "registries response"
89
+ );
90
+ }
91
+ async function getAdditionalRegistries(client) {
92
+ const raw = await client.requestJson(
93
+ "/register/additional-registries",
94
+ {
95
+ method: "GET"
157
96
  }
158
- }
159
- if (typeof params.page === "number") {
160
- query.set("page", params.page.toString());
161
- }
162
- if (typeof params.limit === "number") {
163
- query.set("limit", params.limit.toString());
164
- }
165
- if (params.registry) {
166
- const trimmed = params.registry.trim();
167
- if (trimmed.length > 0) {
168
- query.set("registry", trimmed);
97
+ );
98
+ return client.parseWithSchema(
99
+ raw,
100
+ additionalRegistryCatalogResponseSchema,
101
+ "additional registry catalog response"
102
+ );
103
+ }
104
+ async function popularSearches(client) {
105
+ const raw = await client.requestJson("/popular", {
106
+ method: "GET"
107
+ });
108
+ return client.parseWithSchema(
109
+ raw,
110
+ popularResponseSchema,
111
+ "popular searches response"
112
+ );
113
+ }
114
+ async function listProtocols(client) {
115
+ const raw = await client.requestJson("/protocols", {
116
+ method: "GET"
117
+ });
118
+ return client.parseWithSchema(
119
+ raw,
120
+ protocolsResponseSchema,
121
+ "protocols response"
122
+ );
123
+ }
124
+ async function detectProtocol(client, message) {
125
+ const raw = await client.requestJson("/detect-protocol", {
126
+ method: "POST",
127
+ body: { message },
128
+ headers: { "content-type": "application/json" }
129
+ });
130
+ return client.parseWithSchema(
131
+ raw,
132
+ detectProtocolResponseSchema,
133
+ "detect protocol response"
134
+ );
135
+ }
136
+ async function registrySearchByNamespace(client, registry, query) {
137
+ const params = new URLSearchParams();
138
+ if (query) {
139
+ params.set("q", query);
140
+ }
141
+ const suffix = params.size > 0 ? `?${params.toString()}` : "";
142
+ const raw = await client.requestJson(
143
+ `/registries/${encodeURIComponent(registry)}/search${suffix}`,
144
+ {
145
+ method: "GET"
169
146
  }
170
- }
171
- appendList("registries", params.registries);
172
- if (typeof params.minTrust === "number") {
173
- query.set("minTrust", params.minTrust.toString());
174
- }
175
- appendList("capabilities", params.capabilities);
176
- appendList("protocols", params.protocols);
177
- appendList("adapters", params.adapters);
178
- if (params.metadata) {
179
- Object.entries(params.metadata).forEach(([key, values]) => {
180
- if (!key || !Array.isArray(values) || values.length === 0) {
181
- return;
182
- }
183
- const trimmedKey = key.trim();
184
- if (trimmedKey.length === 0) {
185
- return;
186
- }
187
- values.forEach((value) => {
188
- if (value === void 0 || value === null) {
189
- return;
190
- }
191
- query.append(`metadata.${trimmedKey}`, String(value));
192
- });
147
+ );
148
+ return client.parseWithSchema(
149
+ raw,
150
+ registrySearchByNamespaceSchema,
151
+ "registry search response"
152
+ );
153
+ }
154
+ async function vectorSearch(client, request) {
155
+ try {
156
+ const raw = await client.requestJson("/search", {
157
+ method: "POST",
158
+ body: request,
159
+ headers: { "content-type": "application/json" }
193
160
  });
194
- }
195
- if (params.type) {
196
- const trimmedType = params.type.trim();
197
- if (trimmedType.length > 0 && trimmedType.toLowerCase() !== "all") {
198
- query.set("type", trimmedType);
199
- }
200
- }
201
- if (params.verified === true) {
202
- query.set("verified", "true");
203
- }
204
- if (params.online === true) {
205
- query.set("online", "true");
206
- }
207
- if (params.sortBy) {
208
- const trimmedSort = params.sortBy.trim();
209
- if (trimmedSort.length > 0) {
210
- query.set("sortBy", trimmedSort);
211
- }
212
- }
213
- if (params.sortOrder) {
214
- const lowered = params.sortOrder.toLowerCase();
215
- if (lowered === "asc" || lowered === "desc") {
216
- query.set("sortOrder", lowered);
161
+ return client.parseWithSchema(
162
+ raw,
163
+ vectorSearchResponseSchema,
164
+ "vector search response"
165
+ );
166
+ } catch (error) {
167
+ if (error instanceof RegistryBrokerError && error.status === 501) {
168
+ const fallback = await search(
169
+ client,
170
+ buildVectorFallbackSearchParams(request)
171
+ );
172
+ return convertSearchResultToVectorResponse(fallback);
217
173
  }
174
+ throw error;
218
175
  }
219
- const queryString = query.toString();
220
- return queryString.length > 0 ? `?${queryString}` : "";
176
+ }
177
+ async function searchStatus(client) {
178
+ const raw = await client.requestJson("/search/status", {
179
+ method: "GET"
180
+ });
181
+ return client.parseWithSchema(
182
+ raw,
183
+ searchStatusResponseSchema,
184
+ "search status response"
185
+ );
186
+ }
187
+ async function websocketStats(client) {
188
+ const raw = await client.requestJson("/websocket/stats", {
189
+ method: "GET"
190
+ });
191
+ return client.parseWithSchema(
192
+ raw,
193
+ websocketStatsResponseSchema,
194
+ "websocket stats response"
195
+ );
196
+ }
197
+ async function metricsSummary(client) {
198
+ const raw = await client.requestJson("/metrics", {
199
+ method: "GET"
200
+ });
201
+ return client.parseWithSchema(
202
+ raw,
203
+ metricsSummaryResponseSchema,
204
+ "metrics summary response"
205
+ );
206
+ }
207
+ async function facets(client, adapter) {
208
+ const params = new URLSearchParams();
209
+ if (adapter) {
210
+ params.set("adapter", adapter);
211
+ }
212
+ const suffix = params.size > 0 ? `?${params.toString()}` : "";
213
+ const raw = await client.requestJson(`/search/facets${suffix}`, {
214
+ method: "GET"
215
+ });
216
+ return client.parseWithSchema(
217
+ raw,
218
+ searchFacetsResponseSchema,
219
+ "search facets response"
220
+ );
221
221
  }
222
222
  export {
223
- DEFAULT_BASE_URL,
224
- DEFAULT_HISTORY_TOP_UP_HBAR,
225
- DEFAULT_PROGRESS_INTERVAL_MS,
226
- DEFAULT_PROGRESS_TIMEOUT_MS,
227
- DEFAULT_USER_AGENT,
228
- JSON_CONTENT_TYPE,
229
- MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,
230
- buildSearchQuery,
231
- createAbortError,
232
- isBrowserRuntime,
233
- isJsonObject,
234
- normaliseBaseUrl,
235
- normaliseHeaderName,
236
- normalizeHexPrivateKey,
237
- serialiseAgentRegistrationRequest,
238
- serialiseAuthConfig,
239
- toJsonObject,
240
- toJsonValue
223
+ delegate,
224
+ detectProtocol,
225
+ facets,
226
+ getAdditionalRegistries,
227
+ listProtocols,
228
+ metricsSummary,
229
+ popularSearches,
230
+ registries,
231
+ registrySearchByNamespace,
232
+ search,
233
+ searchStatus,
234
+ stats,
235
+ vectorSearch,
236
+ websocketStats
241
237
  };
242
238
  //# sourceMappingURL=standards-sdk.es184.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es184.js","sources":["../../src/services/registry-broker/client/utils.ts"],"sourcesContent":["import type {\n AgentAuthConfig,\n AgentRegistrationRequest,\n JsonObject,\n JsonValue,\n SearchParams,\n} from '../types';\n\nexport const DEFAULT_USER_AGENT = '@hol-org/rb-client';\nexport const DEFAULT_PROGRESS_INTERVAL_MS = 1_500;\nexport const DEFAULT_PROGRESS_TIMEOUT_MS = 5 * 60 * 1_000;\nexport const DEFAULT_BASE_URL = 'https://hol.org/registry/api/v1';\nexport const JSON_CONTENT_TYPE = /application\\/json/i;\nexport const DEFAULT_HISTORY_TOP_UP_HBAR = 0.25;\nexport const MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS = 1;\n\nconst stripTrailingSlashes = (value: string): string => {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 47) {\n end -= 1;\n }\n return end === value.length ? value : value.slice(0, end);\n};\n\nexport const createAbortError = (): Error =>\n typeof DOMException === 'function'\n ? new DOMException('Aborted', 'AbortError')\n : new Error('The operation was aborted');\n\nexport const normaliseHeaderName = (name: string): string =>\n name.trim().toLowerCase();\n\nexport const isBrowserRuntime = (): boolean =>\n typeof window !== 'undefined' && typeof window.fetch === 'function';\n\nexport const toJsonValue = (value: unknown): JsonValue => {\n if (value === null) {\n return null;\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(item => (item === undefined ? null : toJsonValue(item)));\n }\n if (typeof value === 'object') {\n const result: JsonObject = {};\n Object.entries(value as Record<string, unknown>).forEach(\n ([key, entryValue]) => {\n if (entryValue !== undefined) {\n result[key] = toJsonValue(entryValue);\n }\n },\n );\n return result;\n }\n throw new TypeError('Only JSON-compatible values are supported');\n};\n\nexport const isJsonObject = (value: JsonValue): value is JsonObject =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const toJsonObject = (value: unknown): JsonObject => {\n const normalised = toJsonValue(value);\n if (isJsonObject(normalised)) {\n return normalised;\n }\n throw new TypeError('Expected JSON object value');\n};\n\nexport const serialiseAuthConfig = (auth: AgentAuthConfig): JsonObject => {\n const authPayload: JsonObject = {};\n if (auth.type) {\n authPayload.type = auth.type;\n }\n if (auth.token) {\n authPayload.token = auth.token;\n }\n if (auth.username) {\n authPayload.username = auth.username;\n }\n if (auth.password) {\n authPayload.password = auth.password;\n }\n if (auth.headerName) {\n authPayload.headerName = auth.headerName;\n }\n if (auth.headerValue) {\n authPayload.headerValue = auth.headerValue;\n }\n if (auth.headers) {\n authPayload.headers = { ...auth.headers };\n }\n return authPayload;\n};\n\nexport const serialiseAgentRegistrationRequest = (\n payload: AgentRegistrationRequest,\n): JsonObject => {\n const body: JsonObject = {\n profile: toJsonObject(payload.profile),\n };\n if (payload.endpoint !== undefined) {\n body.endpoint = payload.endpoint;\n }\n if (payload.protocol !== undefined) {\n body.protocol = payload.protocol;\n }\n if (payload.communicationProtocol !== undefined) {\n body.communicationProtocol = payload.communicationProtocol;\n }\n if (payload.registry !== undefined) {\n body.registry = payload.registry;\n }\n if (payload.additionalRegistries !== undefined) {\n body.additionalRegistries = payload.additionalRegistries;\n }\n if (payload.metadata !== undefined) {\n body.metadata = toJsonObject(payload.metadata);\n }\n return body;\n};\n\nexport type X402NetworkId = 'base' | 'base-sepolia';\n\nexport const normalizeHexPrivateKey = (value: string): `0x${string}` => {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error('evmPrivateKey is required');\n }\n return trimmed.startsWith('0x')\n ? (trimmed as `0x${string}`)\n : (`0x${trimmed}` as `0x${string}`);\n};\n\nexport function normaliseBaseUrl(input?: string): string {\n const trimmed = input?.trim();\n let baseCandidate =\n trimmed && trimmed.length > 0 ? trimmed : DEFAULT_BASE_URL;\n\n try {\n const url = new URL(stripTrailingSlashes(baseCandidate));\n const hostname = url.hostname.toLowerCase();\n const ensureRegistryPrefix = (): void => {\n if (!url.pathname.startsWith('/registry')) {\n url.pathname =\n url.pathname === '/' ? '/registry' : `/registry${url.pathname}`;\n }\n };\n\n if (hostname === 'hol.org') {\n ensureRegistryPrefix();\n baseCandidate = url.toString();\n } else if (\n hostname === 'registry.hashgraphonline.com' ||\n hostname === 'hashgraphonline.com'\n ) {\n ensureRegistryPrefix();\n url.hostname = 'hol.org';\n baseCandidate = url.toString();\n }\n } catch {}\n\n const withoutTrailing = stripTrailingSlashes(baseCandidate);\n if (/\\/api\\/v\\d+$/i.test(withoutTrailing)) {\n return withoutTrailing;\n }\n if (/\\/api$/i.test(withoutTrailing)) {\n return `${withoutTrailing}/v1`;\n }\n return `${withoutTrailing}/api/v1`;\n}\n\nexport function buildSearchQuery(params: SearchParams): string {\n const query = new URLSearchParams();\n const appendList = (key: string, values?: string[]) => {\n if (!values) {\n return;\n }\n values.forEach(value => {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n query.append(key, trimmed);\n }\n }\n });\n };\n\n if (params.q) {\n const trimmed = params.q.trim();\n if (trimmed.length > 0) {\n query.set('q', trimmed);\n }\n }\n if (typeof params.page === 'number') {\n query.set('page', params.page.toString());\n }\n if (typeof params.limit === 'number') {\n query.set('limit', params.limit.toString());\n }\n if (params.registry) {\n const trimmed = params.registry.trim();\n if (trimmed.length > 0) {\n query.set('registry', trimmed);\n }\n }\n appendList('registries', params.registries);\n if (typeof params.minTrust === 'number') {\n query.set('minTrust', params.minTrust.toString());\n }\n appendList('capabilities', params.capabilities);\n appendList('protocols', params.protocols);\n appendList('adapters', params.adapters);\n\n if (params.metadata) {\n Object.entries(params.metadata).forEach(([key, values]) => {\n if (!key || !Array.isArray(values) || values.length === 0) {\n return;\n }\n const trimmedKey = key.trim();\n if (trimmedKey.length === 0) {\n return;\n }\n values.forEach(value => {\n if (value === undefined || value === null) {\n return;\n }\n query.append(`metadata.${trimmedKey}`, String(value));\n });\n });\n }\n\n if (params.type) {\n const trimmedType = params.type.trim();\n if (trimmedType.length > 0 && trimmedType.toLowerCase() !== 'all') {\n query.set('type', trimmedType);\n }\n }\n\n if (params.verified === true) {\n query.set('verified', 'true');\n }\n\n if (params.online === true) {\n query.set('online', 'true');\n }\n\n if (params.sortBy) {\n const trimmedSort = params.sortBy.trim();\n if (trimmedSort.length > 0) {\n query.set('sortBy', trimmedSort);\n }\n }\n\n if (params.sortOrder) {\n const lowered = params.sortOrder.toLowerCase();\n if (lowered === 'asc' || lowered === 'desc') {\n query.set('sortOrder', lowered);\n }\n }\n const queryString = query.toString();\n return queryString.length > 0 ? `?${queryString}` : '';\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es184.js","sources":["../../src/services/registry-broker/client/search.ts"],"sourcesContent":["import type {\n DelegationPlanRequest,\n DelegationPlanResponse,\n JsonValue,\n PopularSearchesResponse,\n ProtocolDetectionMessage,\n DetectProtocolResponse,\n ProtocolsResponse,\n RegistriesResponse,\n AdditionalRegistryCatalogResponse,\n RegistrySearchByNamespaceResponse,\n RegistryStatsResponse,\n SearchFacetsResponse,\n SearchParams,\n SearchResult,\n SearchStatusResponse,\n VectorSearchRequest,\n VectorSearchResponse,\n WebsocketStatsResponse,\n MetricsSummaryResponse,\n} from '../types';\nimport {\n additionalRegistryCatalogResponseSchema,\n delegationPlanResponseSchema,\n detectProtocolResponseSchema,\n metricsSummaryResponseSchema,\n popularResponseSchema,\n protocolsResponseSchema,\n registriesResponseSchema,\n registrySearchByNamespaceSchema,\n searchFacetsResponseSchema,\n searchResponseSchema,\n searchStatusResponseSchema,\n statsResponseSchema,\n vectorSearchResponseSchema,\n websocketStatsResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\nimport { buildSearchQuery } from './utils';\nimport { RegistryBrokerError } from './errors';\n\nfunction buildVectorFallbackSearchParams(\n request: VectorSearchRequest,\n): SearchParams {\n const params: SearchParams = {\n q: request.query,\n };\n let effectiveLimit: number | undefined;\n if (typeof request.limit === 'number' && Number.isFinite(request.limit)) {\n effectiveLimit = request.limit;\n params.limit = request.limit;\n }\n if (\n typeof request.offset === 'number' &&\n Number.isFinite(request.offset) &&\n request.offset > 0\n ) {\n const limit = effectiveLimit && effectiveLimit > 0 ? effectiveLimit : 20;\n params.limit = limit;\n params.page = Math.floor(request.offset / limit) + 1;\n }\n if (request.filter?.registry) {\n params.registry = request.filter.registry;\n }\n if (request.filter?.protocols?.length) {\n params.protocols = [...request.filter.protocols];\n }\n if (request.filter?.adapter?.length) {\n params.adapters = [...request.filter.adapter];\n }\n if (request.filter?.capabilities?.length) {\n params.capabilities = request.filter.capabilities.map(value =>\n typeof value === 'number' ? value.toString(10) : value,\n );\n }\n if (request.filter?.type) {\n params.type = request.filter.type;\n }\n return params;\n}\n\nfunction convertSearchResultToVectorResponse(\n result: SearchResult,\n): VectorSearchResponse {\n const hits = result.hits.map(agent => ({\n agent,\n score: 0,\n highlights: {},\n }));\n const total = result.total;\n const limit = result.limit;\n const page = result.page;\n const totalVisible = page * limit;\n const limited = total > totalVisible || page > 1;\n\n return {\n hits,\n total,\n took: 0,\n totalAvailable: total,\n visible: hits.length,\n limited,\n credits_used: 0,\n };\n}\n\nexport async function search(\n client: RegistryBrokerClient,\n params: SearchParams = {},\n): Promise<SearchResult> {\n const query = buildSearchQuery(params);\n const raw = await client.requestJson<JsonValue>(`/search${query}`, {\n method: 'GET',\n });\n return client.parseWithSchema(raw, searchResponseSchema, 'search response');\n}\n\nexport async function delegate(\n client: RegistryBrokerClient,\n request: DelegationPlanRequest,\n): Promise<DelegationPlanResponse> {\n const raw = await client.requestJson<JsonValue>('/delegate', {\n method: 'POST',\n body: request,\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n delegationPlanResponseSchema,\n 'delegate response',\n );\n}\n\nexport async function stats(\n client: RegistryBrokerClient,\n): Promise<RegistryStatsResponse> {\n const raw = await client.requestJson<JsonValue>('/stats', { method: 'GET' });\n return client.parseWithSchema(raw, statsResponseSchema, 'stats response');\n}\n\nexport async function registries(\n client: RegistryBrokerClient,\n): Promise<RegistriesResponse> {\n const raw = await client.requestJson<JsonValue>('/registries', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n registriesResponseSchema,\n 'registries response',\n );\n}\n\nexport async function getAdditionalRegistries(\n client: RegistryBrokerClient,\n): Promise<AdditionalRegistryCatalogResponse> {\n const raw = await client.requestJson<JsonValue>(\n '/register/additional-registries',\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n additionalRegistryCatalogResponseSchema,\n 'additional registry catalog response',\n );\n}\n\nexport async function popularSearches(\n client: RegistryBrokerClient,\n): Promise<PopularSearchesResponse> {\n const raw = await client.requestJson<JsonValue>('/popular', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n popularResponseSchema,\n 'popular searches response',\n );\n}\n\nexport async function listProtocols(\n client: RegistryBrokerClient,\n): Promise<ProtocolsResponse> {\n const raw = await client.requestJson<JsonValue>('/protocols', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n protocolsResponseSchema,\n 'protocols response',\n );\n}\n\nexport async function detectProtocol(\n client: RegistryBrokerClient,\n message: ProtocolDetectionMessage,\n): Promise<DetectProtocolResponse> {\n const raw = await client.requestJson<JsonValue>('/detect-protocol', {\n method: 'POST',\n body: { message },\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n detectProtocolResponseSchema,\n 'detect protocol response',\n );\n}\n\nexport async function registrySearchByNamespace(\n client: RegistryBrokerClient,\n registry: string,\n query?: string,\n): Promise<RegistrySearchByNamespaceResponse> {\n const params = new URLSearchParams();\n if (query) {\n params.set('q', query);\n }\n const suffix = params.size > 0 ? `?${params.toString()}` : '';\n const raw = await client.requestJson<JsonValue>(\n `/registries/${encodeURIComponent(registry)}/search${suffix}`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n registrySearchByNamespaceSchema,\n 'registry search response',\n );\n}\n\nexport async function vectorSearch(\n client: RegistryBrokerClient,\n request: VectorSearchRequest,\n): Promise<VectorSearchResponse> {\n try {\n const raw = await client.requestJson<JsonValue>('/search', {\n method: 'POST',\n body: request,\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n vectorSearchResponseSchema,\n 'vector search response',\n );\n } catch (error) {\n if (error instanceof RegistryBrokerError && error.status === 501) {\n const fallback = await search(\n client,\n buildVectorFallbackSearchParams(request),\n );\n return convertSearchResultToVectorResponse(fallback);\n }\n throw error;\n }\n}\n\nexport async function searchStatus(\n client: RegistryBrokerClient,\n): Promise<SearchStatusResponse> {\n const raw = await client.requestJson<JsonValue>('/search/status', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n searchStatusResponseSchema,\n 'search status response',\n );\n}\n\nexport async function websocketStats(\n client: RegistryBrokerClient,\n): Promise<WebsocketStatsResponse> {\n const raw = await client.requestJson<JsonValue>('/websocket/stats', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n websocketStatsResponseSchema,\n 'websocket stats response',\n );\n}\n\nexport async function metricsSummary(\n client: RegistryBrokerClient,\n): Promise<MetricsSummaryResponse> {\n const raw = await client.requestJson<JsonValue>('/metrics', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n metricsSummaryResponseSchema,\n 'metrics summary response',\n );\n}\n\nexport async function facets(\n client: RegistryBrokerClient,\n adapter?: string,\n): Promise<SearchFacetsResponse> {\n const params = new URLSearchParams();\n if (adapter) {\n params.set('adapter', adapter);\n }\n const suffix = params.size > 0 ? `?${params.toString()}` : '';\n const raw = await client.requestJson<JsonValue>(`/search/facets${suffix}`, {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n searchFacetsResponseSchema,\n 'search facets response',\n );\n}\n"],"names":[],"mappings":"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"}