@veraanchor/verifier 0.0.0-stage → 0.1.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.
Files changed (214) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/CONTRIBUTING.md +33 -0
  3. package/LICENSE +21 -0
  4. package/NOTICE +4 -0
  5. package/README.md +263 -2
  6. package/SECURITY.md +21 -0
  7. package/dist/cli/commandV1.d.ts +5 -0
  8. package/dist/cli/commandV1.d.ts.map +1 -0
  9. package/dist/cli/commandV1.js +440 -0
  10. package/dist/cli/commandV1.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +5 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/contracts/verification.d.ts +77 -0
  16. package/dist/contracts/verification.d.ts.map +1 -0
  17. package/dist/contracts/verification.js +6 -0
  18. package/dist/contracts/verification.js.map +1 -0
  19. package/dist/crypto/sha3.d.ts +15 -0
  20. package/dist/crypto/sha3.d.ts.map +1 -0
  21. package/dist/crypto/sha3.js +27 -0
  22. package/dist/crypto/sha3.js.map +1 -0
  23. package/dist/crypto/streamSha3.d.ts +26 -0
  24. package/dist/crypto/streamSha3.d.ts.map +1 -0
  25. package/dist/crypto/streamSha3.js +52 -0
  26. package/dist/crypto/streamSha3.js.map +1 -0
  27. package/dist/hf/hashContractV1.d.ts +48 -0
  28. package/dist/hf/hashContractV1.d.ts.map +1 -0
  29. package/dist/hf/hashContractV1.js +185 -0
  30. package/dist/hf/hashContractV1.js.map +1 -0
  31. package/dist/index.d.ts +80 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +57 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/merkle/membership.d.ts +30 -0
  36. package/dist/merkle/membership.d.ts.map +1 -0
  37. package/dist/merkle/membership.js +105 -0
  38. package/dist/merkle/membership.js.map +1 -0
  39. package/dist/policy/contractV1.d.ts +37 -0
  40. package/dist/policy/contractV1.d.ts.map +1 -0
  41. package/dist/policy/contractV1.js +2 -0
  42. package/dist/policy/contractV1.js.map +1 -0
  43. package/dist/policy/evaluateV1.d.ts +24 -0
  44. package/dist/policy/evaluateV1.d.ts.map +1 -0
  45. package/dist/policy/evaluateV1.js +320 -0
  46. package/dist/policy/evaluateV1.js.map +1 -0
  47. package/dist/profiles/dataset/sourceV1.d.ts +22 -0
  48. package/dist/profiles/dataset/sourceV1.d.ts.map +1 -0
  49. package/dist/profiles/dataset/sourceV1.js +73 -0
  50. package/dist/profiles/dataset/sourceV1.js.map +1 -0
  51. package/dist/profiles/dataset/v1.d.ts +39 -0
  52. package/dist/profiles/dataset/v1.d.ts.map +1 -0
  53. package/dist/profiles/dataset/v1.js +362 -0
  54. package/dist/profiles/dataset/v1.js.map +1 -0
  55. package/dist/profiles/execution/contractV1.d.ts +279 -0
  56. package/dist/profiles/execution/contractV1.d.ts.map +1 -0
  57. package/dist/profiles/execution/contractV1.js +364 -0
  58. package/dist/profiles/execution/contractV1.js.map +1 -0
  59. package/dist/profiles/execution/independentStandardsV1.d.ts +44 -0
  60. package/dist/profiles/execution/independentStandardsV1.d.ts.map +1 -0
  61. package/dist/profiles/execution/independentStandardsV1.js +336 -0
  62. package/dist/profiles/execution/independentStandardsV1.js.map +1 -0
  63. package/dist/profiles/execution/reasonCodesV1.d.ts +30 -0
  64. package/dist/profiles/execution/reasonCodesV1.d.ts.map +1 -0
  65. package/dist/profiles/execution/reasonCodesV1.js +20 -0
  66. package/dist/profiles/execution/reasonCodesV1.js.map +1 -0
  67. package/dist/profiles/execution/recomputationV1.d.ts +11 -0
  68. package/dist/profiles/execution/recomputationV1.d.ts.map +1 -0
  69. package/dist/profiles/execution/recomputationV1.js +144 -0
  70. package/dist/profiles/execution/recomputationV1.js.map +1 -0
  71. package/dist/profiles/execution/rulesV1.d.ts +6 -0
  72. package/dist/profiles/execution/rulesV1.d.ts.map +1 -0
  73. package/dist/profiles/execution/rulesV1.js +855 -0
  74. package/dist/profiles/execution/rulesV1.js.map +1 -0
  75. package/dist/profiles/execution/standardsPlanV1.d.ts +18 -0
  76. package/dist/profiles/execution/standardsPlanV1.d.ts.map +1 -0
  77. package/dist/profiles/execution/standardsPlanV1.js +16 -0
  78. package/dist/profiles/execution/standardsPlanV1.js.map +1 -0
  79. package/dist/profiles/execution/verificationV1.d.ts +28 -0
  80. package/dist/profiles/execution/verificationV1.d.ts.map +1 -0
  81. package/dist/profiles/execution/verificationV1.js +188 -0
  82. package/dist/profiles/execution/verificationV1.js.map +1 -0
  83. package/dist/profiles/ingest/sourceV1.d.ts +36 -0
  84. package/dist/profiles/ingest/sourceV1.d.ts.map +1 -0
  85. package/dist/profiles/ingest/sourceV1.js +99 -0
  86. package/dist/profiles/ingest/sourceV1.js.map +1 -0
  87. package/dist/profiles/ingest/v1.d.ts +65 -0
  88. package/dist/profiles/ingest/v1.d.ts.map +1 -0
  89. package/dist/profiles/ingest/v1.js +477 -0
  90. package/dist/profiles/ingest/v1.js.map +1 -0
  91. package/dist/profiles/sourceV1Helpers.d.ts +48 -0
  92. package/dist/profiles/sourceV1Helpers.d.ts.map +1 -0
  93. package/dist/profiles/sourceV1Helpers.js +141 -0
  94. package/dist/profiles/sourceV1Helpers.js.map +1 -0
  95. package/dist/reports/coreV1.d.ts +7 -0
  96. package/dist/reports/coreV1.d.ts.map +1 -0
  97. package/dist/reports/coreV1.js +195 -0
  98. package/dist/reports/coreV1.js.map +1 -0
  99. package/dist/reports/portableV1.d.ts +48 -0
  100. package/dist/reports/portableV1.d.ts.map +1 -0
  101. package/dist/reports/portableV1.js +279 -0
  102. package/dist/reports/portableV1.js.map +1 -0
  103. package/dist/reports/validationV1.d.ts +19 -0
  104. package/dist/reports/validationV1.d.ts.map +1 -0
  105. package/dist/reports/validationV1.js +441 -0
  106. package/dist/reports/validationV1.js.map +1 -0
  107. package/dist/resolvers/executionMirrorV1.d.ts +15 -0
  108. package/dist/resolvers/executionMirrorV1.d.ts.map +1 -0
  109. package/dist/resolvers/executionMirrorV1.js +206 -0
  110. package/dist/resolvers/executionMirrorV1.js.map +1 -0
  111. package/dist/resolvers/explorerExecutionV1.d.ts +17 -0
  112. package/dist/resolvers/explorerExecutionV1.d.ts.map +1 -0
  113. package/dist/resolvers/explorerExecutionV1.js +61 -0
  114. package/dist/resolvers/explorerExecutionV1.js.map +1 -0
  115. package/dist/resolvers/explorerPublicV1.d.ts +37 -0
  116. package/dist/resolvers/explorerPublicV1.d.ts.map +1 -0
  117. package/dist/resolvers/explorerPublicV1.js +210 -0
  118. package/dist/resolvers/explorerPublicV1.js.map +1 -0
  119. package/dist/resolvers/explorerPublicationV1.d.ts +20 -0
  120. package/dist/resolvers/explorerPublicationV1.d.ts.map +1 -0
  121. package/dist/resolvers/explorerPublicationV1.js +195 -0
  122. package/dist/resolvers/explorerPublicationV1.js.map +1 -0
  123. package/dist/resolvers/explorerTransportV1.d.ts +17 -0
  124. package/dist/resolvers/explorerTransportV1.d.ts.map +1 -0
  125. package/dist/resolvers/explorerTransportV1.js +112 -0
  126. package/dist/resolvers/explorerTransportV1.js.map +1 -0
  127. package/dist/resolvers/hcs11MirrorV1.d.ts +49 -0
  128. package/dist/resolvers/hcs11MirrorV1.d.ts.map +1 -0
  129. package/dist/resolvers/hcs11MirrorV1.js +293 -0
  130. package/dist/resolvers/hcs11MirrorV1.js.map +1 -0
  131. package/dist/resolvers/hcs13MirrorV1.d.ts +35 -0
  132. package/dist/resolvers/hcs13MirrorV1.d.ts.map +1 -0
  133. package/dist/resolvers/hcs13MirrorV1.js +72 -0
  134. package/dist/resolvers/hcs13MirrorV1.js.map +1 -0
  135. package/dist/resolvers/hcs1MirrorV1.d.ts +28 -0
  136. package/dist/resolvers/hcs1MirrorV1.d.ts.map +1 -0
  137. package/dist/resolvers/hcs1MirrorV1.js +220 -0
  138. package/dist/resolvers/hcs1MirrorV1.js.map +1 -0
  139. package/dist/resolvers/hcs26MirrorV1.d.ts +67 -0
  140. package/dist/resolvers/hcs26MirrorV1.d.ts.map +1 -0
  141. package/dist/resolvers/hcs26MirrorV1.js +218 -0
  142. package/dist/resolvers/hcs26MirrorV1.js.map +1 -0
  143. package/dist/resolvers/hcs26RegistryMirrorV1.d.ts +26 -0
  144. package/dist/resolvers/hcs26RegistryMirrorV1.d.ts.map +1 -0
  145. package/dist/resolvers/hcs26RegistryMirrorV1.js +200 -0
  146. package/dist/resolvers/hcs26RegistryMirrorV1.js.map +1 -0
  147. package/dist/resolvers/hcs2MirrorV1.d.ts +26 -0
  148. package/dist/resolvers/hcs2MirrorV1.d.ts.map +1 -0
  149. package/dist/resolvers/hcs2MirrorV1.js +196 -0
  150. package/dist/resolvers/hcs2MirrorV1.js.map +1 -0
  151. package/dist/resolvers/hederaMirrorV1.d.ts +22 -0
  152. package/dist/resolvers/hederaMirrorV1.d.ts.map +1 -0
  153. package/dist/resolvers/hederaMirrorV1.js +338 -0
  154. package/dist/resolvers/hederaMirrorV1.js.map +1 -0
  155. package/dist/standards/hcs/hcs11V1.d.ts +51 -0
  156. package/dist/standards/hcs/hcs11V1.d.ts.map +1 -0
  157. package/dist/standards/hcs/hcs11V1.js +289 -0
  158. package/dist/standards/hcs/hcs11V1.js.map +1 -0
  159. package/dist/standards/hcs/hcs13V1.d.ts +39 -0
  160. package/dist/standards/hcs/hcs13V1.d.ts.map +1 -0
  161. package/dist/standards/hcs/hcs13V1.js +114 -0
  162. package/dist/standards/hcs/hcs13V1.js.map +1 -0
  163. package/dist/standards/hcs/hcs14V1.d.ts +35 -0
  164. package/dist/standards/hcs/hcs14V1.d.ts.map +1 -0
  165. package/dist/standards/hcs/hcs14V1.js +168 -0
  166. package/dist/standards/hcs/hcs14V1.js.map +1 -0
  167. package/dist/standards/hcs/hcs1V1.d.ts +30 -0
  168. package/dist/standards/hcs/hcs1V1.d.ts.map +1 -0
  169. package/dist/standards/hcs/hcs1V1.js +140 -0
  170. package/dist/standards/hcs/hcs1V1.js.map +1 -0
  171. package/dist/standards/hcs/hcs26V1.d.ts +58 -0
  172. package/dist/standards/hcs/hcs26V1.d.ts.map +1 -0
  173. package/dist/standards/hcs/hcs26V1.js +339 -0
  174. package/dist/standards/hcs/hcs26V1.js.map +1 -0
  175. package/dist/standards/hcs/hcs2V1.d.ts +36 -0
  176. package/dist/standards/hcs/hcs2V1.d.ts.map +1 -0
  177. package/dist/standards/hcs/hcs2V1.js +181 -0
  178. package/dist/standards/hcs/hcs2V1.js.map +1 -0
  179. package/dist/standards/hcs/jsonCanonicalV1.d.ts +15 -0
  180. package/dist/standards/hcs/jsonCanonicalV1.d.ts.map +1 -0
  181. package/dist/standards/hcs/jsonCanonicalV1.js +160 -0
  182. package/dist/standards/hcs/jsonCanonicalV1.js.map +1 -0
  183. package/dist/triangulation/compareV1.d.ts +50 -0
  184. package/dist/triangulation/compareV1.d.ts.map +1 -0
  185. package/dist/triangulation/compareV1.js +236 -0
  186. package/dist/triangulation/compareV1.js.map +1 -0
  187. package/dist/triangulation/executionPlanV1.d.ts +39 -0
  188. package/dist/triangulation/executionPlanV1.d.ts.map +1 -0
  189. package/dist/triangulation/executionPlanV1.js +208 -0
  190. package/dist/triangulation/executionPlanV1.js.map +1 -0
  191. package/dist/triangulation/executionPublicV1.d.ts +22 -0
  192. package/dist/triangulation/executionPublicV1.d.ts.map +1 -0
  193. package/dist/triangulation/executionPublicV1.js +39 -0
  194. package/dist/triangulation/executionPublicV1.js.map +1 -0
  195. package/dist/triangulation/messageObservationV1.d.ts +26 -0
  196. package/dist/triangulation/messageObservationV1.d.ts.map +1 -0
  197. package/dist/triangulation/messageObservationV1.js +69 -0
  198. package/dist/triangulation/messageObservationV1.js.map +1 -0
  199. package/dist/triangulation/publicV1.d.ts +29 -0
  200. package/dist/triangulation/publicV1.d.ts.map +1 -0
  201. package/dist/triangulation/publicV1.js +170 -0
  202. package/dist/triangulation/publicV1.js.map +1 -0
  203. package/dist/verification/sourceIntentV1.d.ts +15 -0
  204. package/dist/verification/sourceIntentV1.d.ts.map +1 -0
  205. package/dist/verification/sourceIntentV1.js +206 -0
  206. package/dist/verification/sourceIntentV1.js.map +1 -0
  207. package/docs/cli-v0.1.md +237 -0
  208. package/docs/conformance.md +38 -0
  209. package/docs/threat-model.md +37 -0
  210. package/docs/verification-semantics.md +65 -0
  211. package/examples/README.md +35 -0
  212. package/examples/dataset-offline.mjs +58 -0
  213. package/examples/dataset-policy.mjs +59 -0
  214. package/package.json +65 -4
@@ -0,0 +1,289 @@
1
+ /** Pinned HCS-11 Draft 1.1 AI-agent profile (type 1), offline only.
2
+ * Does not authenticate Hedera account memo, DID control, or publication.
3
+ */
4
+ import { createHash } from "node:crypto";
5
+ import { parseHcs14DidUaidV1, verifyHcs14DidBindingV1, Hcs14V1Error } from "./hcs14V1.js";
6
+ export const MAX_HCS11_V1_PROFILE_BYTES = 128 * 1024;
7
+ const REF = /^hcs:\/\/(1|2)\/(0\.0\.[0-9]+)$/;
8
+ const TOP_KEYS = new Set(["version", "type", "display_name", "uaid", "alias", "bio", "profileImage", "properties", "aiAgent"]);
9
+ const AGENT_KEYS = new Set(["type", "capabilities", "model", "creator"]);
10
+ export class Hcs11V1Error extends Error {
11
+ code;
12
+ constructor(code) {
13
+ super(code);
14
+ this.code = code;
15
+ this.name = "Hcs11V1Error";
16
+ }
17
+ }
18
+ function fail(code) { throw new Hcs11V1Error(code); }
19
+ function record(value) {
20
+ if (!value || typeof value !== "object" || Array.isArray(value))
21
+ return fail("HCS11_FIELD_INVALID");
22
+ const proto = Object.getPrototypeOf(value);
23
+ if (proto !== null && proto !== Object.prototype)
24
+ return fail("HCS11_FIELD_INVALID");
25
+ return value;
26
+ }
27
+ function keysOnly(value, allowed) {
28
+ for (const key of Object.keys(value))
29
+ if (!allowed.has(key))
30
+ fail("HCS11_FIELD_UNSUPPORTED");
31
+ }
32
+ function requiredText(value, max) {
33
+ if (typeof value !== "string")
34
+ return fail("HCS11_FIELD_INVALID");
35
+ const out = value.trim();
36
+ if (!out || out.length > max || /[\u0000-\u001f\u007f]/.test(out))
37
+ return fail("HCS11_FIELD_INVALID");
38
+ return out;
39
+ }
40
+ function optionalText(value, max) {
41
+ if (value == null || value === "")
42
+ return null;
43
+ if (typeof value === "string" && !value.trim())
44
+ return null;
45
+ return requiredText(value, max);
46
+ }
47
+ export function parseHcs11AccountMemoV1(value) {
48
+ if (typeof value !== "string")
49
+ return fail("HCS11_MEMO_INVALID");
50
+ if (value.length > 4096)
51
+ return fail("HCS11_MEMO_TOO_LARGE");
52
+ const memo = value.trim();
53
+ if (!memo.startsWith("hcs-11:"))
54
+ return fail("HCS11_MEMO_INVALID");
55
+ if (Buffer.byteLength(memo, "utf8") > 100)
56
+ return fail("HCS11_MEMO_TOO_LARGE");
57
+ const reference = memo.slice(7);
58
+ const match = REF.exec(reference);
59
+ if (!match)
60
+ return fail("HCS11_PROFILE_REF_INVALID");
61
+ return Object.freeze({ memo, profile_reference: reference,
62
+ protocol: `hcs-${match[1]}`, topic_id: match[2] });
63
+ }
64
+ /** Reject ambiguous JSON duplicate keys, including nested and escaped key aliases. */
65
+ function assertUniqueJsonKeys(source) {
66
+ let i = 0;
67
+ const space = () => { while (i < source.length && /\s/.test(source[i]))
68
+ i++; };
69
+ const jsonString = () => {
70
+ const start = i++;
71
+ while (i < source.length) {
72
+ if (source[i] === "\\") {
73
+ i += 2;
74
+ continue;
75
+ }
76
+ if (source[i++] === '"')
77
+ return JSON.parse(source.slice(start, i));
78
+ }
79
+ return fail("HCS11_PROFILE_JSON_INVALID");
80
+ };
81
+ const visit = (depth) => {
82
+ if (depth > 32)
83
+ return fail("HCS11_PROFILE_TOO_LARGE");
84
+ space();
85
+ if (source[i] === '{') {
86
+ i++;
87
+ space();
88
+ const keys = new Set();
89
+ while (source[i] !== '}') {
90
+ const key = jsonString();
91
+ if (keys.has(key))
92
+ return fail("HCS11_PROFILE_JSON_INVALID");
93
+ keys.add(key);
94
+ space();
95
+ i++;
96
+ space(); // validated colon (JSON.parse called first)
97
+ visit(depth + 1);
98
+ space();
99
+ if (source[i] !== ',')
100
+ break;
101
+ i++;
102
+ space();
103
+ }
104
+ i++;
105
+ }
106
+ else if (source[i] === '[') {
107
+ i++;
108
+ space();
109
+ while (source[i] !== ']') {
110
+ visit(depth + 1);
111
+ space();
112
+ if (source[i] !== ',')
113
+ break;
114
+ i++;
115
+ space();
116
+ }
117
+ i++;
118
+ }
119
+ else if (source[i] === '"') {
120
+ jsonString();
121
+ }
122
+ else {
123
+ while (i < source.length && !/[\s,\]}]/.test(source[i]))
124
+ i++;
125
+ }
126
+ };
127
+ visit(0);
128
+ }
129
+ function freezeJson(value, depth = 0) {
130
+ if (depth > 32)
131
+ return fail("HCS11_PROFILE_TOO_LARGE");
132
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
133
+ for (const child of Object.values(value))
134
+ freezeJson(child, depth + 1);
135
+ Object.freeze(value);
136
+ }
137
+ return value;
138
+ }
139
+ export function parseHcs11AiAgentProfileV1(value) {
140
+ let bytes;
141
+ if (typeof value === "string") {
142
+ if (value.length > MAX_HCS11_V1_PROFILE_BYTES)
143
+ return fail("HCS11_PROFILE_TOO_LARGE");
144
+ bytes = Buffer.from(value, "utf8");
145
+ }
146
+ else if (value instanceof Uint8Array)
147
+ bytes = value;
148
+ else
149
+ return fail("HCS11_PROFILE_JSON_INVALID");
150
+ if (!bytes.byteLength || bytes.byteLength > MAX_HCS11_V1_PROFILE_BYTES) {
151
+ return fail(bytes.byteLength ? "HCS11_PROFILE_TOO_LARGE" : "HCS11_PROFILE_JSON_INVALID");
152
+ }
153
+ let obj;
154
+ try {
155
+ const source = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
156
+ obj = record(JSON.parse(source));
157
+ assertUniqueJsonKeys(source);
158
+ }
159
+ catch (e) {
160
+ if (e instanceof Hcs11V1Error)
161
+ throw e;
162
+ return fail("HCS11_PROFILE_JSON_INVALID");
163
+ }
164
+ keysOnly(obj, TOP_KEYS);
165
+ if (obj.type !== 1)
166
+ return fail("HCS11_PROFILE_TYPE_UNSUPPORTED");
167
+ const uaid = requiredText(obj.uaid, 4096);
168
+ parseHcs14DidUaidV1(uaid);
169
+ const agent = record(obj.aiAgent);
170
+ keysOnly(agent, AGENT_KEYS);
171
+ if (agent.type !== 0 && agent.type !== 1)
172
+ return fail("HCS11_AGENT_TYPE_INVALID");
173
+ if (!Array.isArray(agent.capabilities))
174
+ return fail("HCS11_CAPABILITIES_INVALID");
175
+ const numeric = agent.capabilities.map((n) => Number(n));
176
+ if (numeric.some((n) => !Number.isSafeInteger(n) || n < 0) || new Set(numeric).size !== numeric.length) {
177
+ return fail("HCS11_CAPABILITIES_INVALID");
178
+ }
179
+ const alias = optionalText(obj.alias, 256);
180
+ const bio = optionalText(obj.bio, 4096);
181
+ const profileImage = optionalText(obj.profileImage, 4096);
182
+ const creator = optionalText(agent.creator, 256);
183
+ let properties;
184
+ if (obj.properties != null)
185
+ properties = record(obj.properties);
186
+ // Material is reconstructed from validated typed fields, not mutated in place.
187
+ const normalized = {
188
+ version: requiredText(obj.version ?? "1.1", 32), type: 1,
189
+ display_name: requiredText(obj.display_name, 128), uaid,
190
+ ...(alias == null ? {} : { alias }),
191
+ ...(bio == null ? {} : { bio }),
192
+ ...(profileImage == null ? {} : { profileImage }),
193
+ ...(properties === undefined ? {} : { properties }),
194
+ aiAgent: {
195
+ type: agent.type,
196
+ capabilities: Object.freeze(numeric.sort((a, b) => a - b)),
197
+ model: requiredText(agent.model, 256),
198
+ ...(creator == null ? {} : { creator }),
199
+ },
200
+ };
201
+ return freezeJson(normalized);
202
+ }
203
+ /** A strict canonical JSON subset for the pinned profile contract; rejects non-I-JSON material. */
204
+ function canonical(value, depth = 0, seen = new Set()) {
205
+ if (depth > 32)
206
+ return fail("HCS11_CANONICALIZATION_FAILED");
207
+ if (value === null)
208
+ return "null";
209
+ if (typeof value === "string") {
210
+ if (/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(value)) {
211
+ return fail("HCS11_CANONICALIZATION_FAILED");
212
+ }
213
+ return JSON.stringify(value);
214
+ }
215
+ if (typeof value === "boolean")
216
+ return value ? "true" : "false";
217
+ if (typeof value === "number" && Number.isFinite(value))
218
+ return JSON.stringify(value);
219
+ if (!value || typeof value !== "object")
220
+ return fail("HCS11_CANONICALIZATION_FAILED");
221
+ if (seen.has(value))
222
+ return fail("HCS11_CANONICALIZATION_FAILED");
223
+ seen.add(value);
224
+ if (Array.isArray(value)) {
225
+ const out = `[${value.map((v) => canonical(v, depth + 1, seen)).join(",")}]`;
226
+ seen.delete(value);
227
+ return out;
228
+ }
229
+ const object = record(value);
230
+ const fields = Object.keys(object).sort().map((key) => {
231
+ const val = object[key];
232
+ if (val === undefined)
233
+ return fail("HCS11_CANONICALIZATION_FAILED");
234
+ return `${canonical(key, depth + 1, seen)}:${canonical(val, depth + 1, seen)}`;
235
+ });
236
+ seen.delete(value);
237
+ return `{${fields.join(",")}}`;
238
+ }
239
+ /** Offline parsing + digest recomputation over normalized pinned profile material. */
240
+ export function verifyHcs11AiAgentProfileV1(input) {
241
+ let profile = null;
242
+ let memo = null;
243
+ let sha256 = null;
244
+ let memoReferenceMatch = "not_checked";
245
+ const output = (status, reason) => Object.freeze({ status, reason_code: reason, profile, sha256, account_memo: memo,
246
+ memo_reference_match: memoReferenceMatch });
247
+ try {
248
+ if (!input || typeof input !== "object" || Array.isArray(input))
249
+ return fail("HCS11_INPUT_INVALID");
250
+ profile = parseHcs11AiAgentProfileV1(input.profile);
251
+ if (profile.version !== "1.1")
252
+ return output("unsupported", "HCS11_VERSION_UNSUPPORTED");
253
+ const canonicalBytes = Buffer.from(canonical(profile), "utf8");
254
+ if (canonicalBytes.byteLength > MAX_HCS11_V1_PROFILE_BYTES)
255
+ return fail("HCS11_PROFILE_TOO_LARGE");
256
+ sha256 = createHash("sha256").update(canonicalBytes).digest("hex");
257
+ if (input.expected_sha256 != null) {
258
+ if (typeof input.expected_sha256 !== "string" || !/^[0-9a-f]{64}$/.test(input.expected_sha256)) {
259
+ return fail("HCS11_EXPECTED_CHECKSUM_INVALID");
260
+ }
261
+ if (sha256 !== input.expected_sha256)
262
+ return fail("HCS11_CHECKSUM_MISMATCH");
263
+ }
264
+ if (input.expected_uaid != null && profile.uaid !== input.expected_uaid)
265
+ return fail("HCS11_UAID_MISMATCH");
266
+ if (input.expected_base_did != null) {
267
+ const binding = verifyHcs14DidBindingV1({ uaid: profile.uaid, base_did: input.expected_base_did });
268
+ if (binding.status !== "pass")
269
+ return fail(binding.reason_code ?? "HCS14_DID_BINDING_MISMATCH");
270
+ }
271
+ if (input.account_memo != null) {
272
+ memo = parseHcs11AccountMemoV1(input.account_memo);
273
+ if (input.expected_profile_reference != null) {
274
+ memoReferenceMatch = memo.profile_reference === input.expected_profile_reference ? "match" : "mismatch";
275
+ if (memoReferenceMatch === "mismatch")
276
+ return fail("HCS11_PROFILE_REFERENCE_MISMATCH");
277
+ }
278
+ }
279
+ else if (input.expected_profile_reference != null)
280
+ return fail("HCS11_ACCOUNT_MEMO_UNAVAILABLE");
281
+ return output("pass", null);
282
+ }
283
+ catch (error) {
284
+ if (error instanceof Hcs11V1Error || error instanceof Hcs14V1Error)
285
+ return output("fail", error.code);
286
+ throw error;
287
+ }
288
+ }
289
+ //# sourceMappingURL=hcs11V1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hcs11V1.js","sourceRoot":"","sources":["../../../src/standards/hcs/hcs11V1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export declare const MAX_HCS13_V1_SCHEMA_BYTES: number;
2
+ export declare class Hcs13V1Error extends Error {
3
+ readonly code: string;
4
+ constructor(code: string);
5
+ }
6
+ export type Hcs13ReferenceV1 = Readonly<{
7
+ ref: string;
8
+ registry_topic_id: string;
9
+ sequence_number: number;
10
+ }>;
11
+ export type Hcs13SchemaV1 = Readonly<{
12
+ schema: Readonly<Record<string, unknown>>;
13
+ canonical_payload: string;
14
+ sha256: string;
15
+ byte_length: number;
16
+ }>;
17
+ export type Hcs13SchemaVerificationV1 = Readonly<{
18
+ status: "pass" | "fail";
19
+ reason_code: string | null;
20
+ reference: Hcs13ReferenceV1 | null;
21
+ sha256: string | null;
22
+ /** Compares only against an independently supplied SHA-256 expectation. */
23
+ checksum_match: "match" | "mismatch" | "not_checked";
24
+ }>;
25
+ export declare function buildHcs13ReferenceV1(registry_topic_id: unknown, sequence_number: unknown): string;
26
+ export declare function parseHcs13ReferenceV1(value: unknown): Hcs13ReferenceV1;
27
+ export declare function finalizeHcs13SchemaV1(value: unknown): Hcs13SchemaV1;
28
+ export declare function parseHcs13SchemaV1(value: Uint8Array | string): Hcs13SchemaV1;
29
+ /** Offline structure/digest check. A 'pass' without an expected checksum is not
30
+ * an independent schema-publication or registry-validation claim.
31
+ */
32
+ export declare function verifyHcs13SchemaV1(input: Readonly<{
33
+ reference: unknown;
34
+ schema: Uint8Array | string;
35
+ expected_sha256?: string | null;
36
+ expected_registry_topic_id?: string | null;
37
+ expected_sequence_number?: number | null;
38
+ }>): Hcs13SchemaVerificationV1;
39
+ //# sourceMappingURL=hcs13V1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hcs13V1.d.ts","sourceRoot":"","sources":["../../../src/standards/hcs/hcs13V1.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,yBAAyB,QAAa,CAAC;AAMpD,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAClC;AAYD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC7G,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACpJ,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;CACtD,CAAC,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAElG;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAKtE;AAsBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAA4B;AAChG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,CAU5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC,GAAG,yBAAyB,CA6B7B"}
@@ -0,0 +1,114 @@
1
+ /** Pinned HCS-13 Draft: exact historical schema refs and offline canonical digest.
2
+ * Registry and HCS-1 content must be resolved independently by a separate adapter.
3
+ * JSON Schema semantic evaluation is NOT performed here.
4
+ */
5
+ import { createHash } from "node:crypto";
6
+ import { canonicalHcsJsonV1, cloneHcsJsonV1, HcsJsonV1Error, parseStrictHcsJsonV1 } from "./jsonCanonicalV1.js";
7
+ export const MAX_HCS13_V1_SCHEMA_BYTES = 512 * 1024;
8
+ const RAW_SCHEMA_BYTES = MAX_HCS13_V1_SCHEMA_BYTES + 64 * 1024;
9
+ const TOPIC = /^0\.0\.[0-9]+$/;
10
+ const REFERENCE = /^hcs:\/\/13\/(0\.0\.[0-9]+)#([1-9][0-9]*)$/;
11
+ const SHA256 = /^[0-9a-f]{64}$/;
12
+ export class Hcs13V1Error extends Error {
13
+ code;
14
+ constructor(code) {
15
+ super(code);
16
+ this.code = code;
17
+ this.name = "Hcs13V1Error";
18
+ }
19
+ }
20
+ function fail(code) { throw new Hcs13V1Error(code); }
21
+ function topicId(value) {
22
+ if (typeof value !== "string" || !TOPIC.test(value.trim()))
23
+ return fail("HCS13_TOPIC_INVALID");
24
+ return value.trim();
25
+ }
26
+ function sequence(value) {
27
+ const number = Number(value);
28
+ if (value == null || value === "" || !Number.isSafeInteger(number) || number < 1)
29
+ return fail("HCS13_SEQUENCE_INVALID");
30
+ return number;
31
+ }
32
+ export function buildHcs13ReferenceV1(registry_topic_id, sequence_number) {
33
+ return `hcs://13/${topicId(registry_topic_id)}#${sequence(sequence_number)}`;
34
+ }
35
+ export function parseHcs13ReferenceV1(value) {
36
+ const match = typeof value === "string" ? REFERENCE.exec(value.trim()) : null;
37
+ if (!match)
38
+ return fail("HCS13_REF_INVALID");
39
+ const number = sequence(match[2]);
40
+ return Object.freeze({ ref: `hcs://13/${match[1]}#${number}`, registry_topic_id: match[1], sequence_number: number });
41
+ }
42
+ function finalize(value) {
43
+ if (!value || typeof value !== "object" || Array.isArray(value) ||
44
+ ![null, Object.prototype].includes(Object.getPrototypeOf(value))) {
45
+ return fail("HCS13_SCHEMA_INVALID");
46
+ }
47
+ const schema = value;
48
+ if (schema.$schema != null && typeof schema.$schema !== "string")
49
+ return fail("HCS13_SCHEMA_INVALID");
50
+ let canonical;
51
+ try {
52
+ canonical = canonicalHcsJsonV1(schema, MAX_HCS13_V1_SCHEMA_BYTES);
53
+ }
54
+ catch (error) {
55
+ if (error instanceof HcsJsonV1Error) {
56
+ return fail(error.code === "JSON_TOO_LARGE" ? "HCS13_SCHEMA_TOO_LARGE" : "HCS13_CANONICALIZATION_FAILED");
57
+ }
58
+ throw error;
59
+ }
60
+ const bytes = Buffer.from(canonical, "utf8");
61
+ return Object.freeze({ schema: cloneHcsJsonV1(schema), canonical_payload: canonical,
62
+ sha256: createHash("sha256").update(bytes).digest("hex"), byte_length: bytes.byteLength });
63
+ }
64
+ export function finalizeHcs13SchemaV1(value) { return finalize(value); }
65
+ export function parseHcs13SchemaV1(value) {
66
+ let document;
67
+ try {
68
+ document = parseStrictHcsJsonV1(value, RAW_SCHEMA_BYTES);
69
+ }
70
+ catch (error) {
71
+ if (error instanceof HcsJsonV1Error) {
72
+ return fail(error.code === "JSON_TOO_LARGE" ? "HCS13_SCHEMA_TOO_LARGE" : "HCS13_SCHEMA_JSON_INVALID");
73
+ }
74
+ throw error;
75
+ }
76
+ return finalize(document);
77
+ }
78
+ /** Offline structure/digest check. A 'pass' without an expected checksum is not
79
+ * an independent schema-publication or registry-validation claim.
80
+ */
81
+ export function verifyHcs13SchemaV1(input) {
82
+ let reference = null;
83
+ let sha256 = null;
84
+ let checksumMatch = "not_checked";
85
+ const result = (status, reason) => Object.freeze({ status, reason_code: reason, reference, sha256, checksum_match: checksumMatch });
86
+ try {
87
+ if (!input || typeof input !== "object")
88
+ return fail("HCS13_INPUT_INVALID");
89
+ reference = parseHcs13ReferenceV1(input.reference);
90
+ if (input.expected_registry_topic_id != null && topicId(input.expected_registry_topic_id) !== reference.registry_topic_id) {
91
+ return fail("HCS13_REGISTRY_MISMATCH");
92
+ }
93
+ if (input.expected_sequence_number != null && sequence(input.expected_sequence_number) !== reference.sequence_number) {
94
+ return fail("HCS13_SEQUENCE_MISMATCH");
95
+ }
96
+ const document = parseHcs13SchemaV1(input.schema);
97
+ sha256 = document.sha256;
98
+ if (input.expected_sha256 != null) {
99
+ if (typeof input.expected_sha256 !== "string" || !SHA256.test(input.expected_sha256)) {
100
+ return fail("HCS13_EXPECTED_CHECKSUM_INVALID");
101
+ }
102
+ checksumMatch = input.expected_sha256 === sha256 ? "match" : "mismatch";
103
+ if (checksumMatch === "mismatch")
104
+ return fail("HCS13_CHECKSUM_MISMATCH");
105
+ }
106
+ return result("pass", null);
107
+ }
108
+ catch (error) {
109
+ if (error instanceof Hcs13V1Error)
110
+ return result("fail", error.code);
111
+ throw error;
112
+ }
113
+ }
114
+ //# sourceMappingURL=hcs13V1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hcs13V1.js","sourceRoot":"","sources":["../../../src/standards/hcs/hcs13V1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ declare const ORDER: readonly ["uid", "registry", "proto", "nativeId", "domain", "src"];
2
+ type Parameter = (typeof ORDER)[number];
3
+ export type Hcs14DidUaidV1 = Readonly<{
4
+ uaid: string;
5
+ target: "did";
6
+ id: string;
7
+ params: Readonly<Partial<Record<Parameter, string>>>;
8
+ }>;
9
+ export type Hcs14BindingV1Result = Readonly<{
10
+ status: "pass" | "fail";
11
+ reason_code: string | null;
12
+ /** Consistency of supplied values only; NOT DID controller authentication. */
13
+ binding: Hcs14DidUaidV1 | null;
14
+ }>;
15
+ export declare class Hcs14V1Error extends Error {
16
+ readonly code: string;
17
+ constructor(code: string);
18
+ }
19
+ export declare function parseHcs14DidUaidV1(value: unknown): Hcs14DidUaidV1;
20
+ /** Build a deterministic UAID for supplied DID material; this does not issue an identity. */
21
+ export declare function buildHcs14DidUaidV1(input: Readonly<{
22
+ base_did: string;
23
+ uid?: string;
24
+ registry?: string;
25
+ proto: string;
26
+ native_id: string;
27
+ domain?: string | null;
28
+ }>): Hcs14DidUaidV1;
29
+ /** Compare against a separately supplied base DID. This does not resolve or authenticate it. */
30
+ export declare function verifyHcs14DidBindingV1(input: Readonly<{
31
+ uaid: unknown;
32
+ base_did: unknown;
33
+ }>): Hcs14BindingV1Result;
34
+ export {};
35
+ //# sourceMappingURL=hcs14V1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hcs14V1.d.ts","sourceRoot":"","sources":["../../../src/standards/hcs/hcs14V1.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,KAAK,oEAAqE,CAAC;AAEjF,KAAK,SAAS,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC,CAAC,CAAC;AACH,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAClC;AA0CD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAoClE;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7G,CAAC,GAAG,cAAc,CAWlB;AAED,gGAAgG;AAChG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,oBAAoB,CAoBnH"}