society-protocol 1.0.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/adapters.d.ts +101 -0
  4. package/dist/adapters.d.ts.map +1 -0
  5. package/dist/adapters.js +764 -0
  6. package/dist/adapters.js.map +1 -0
  7. package/dist/agents-md.d.ts +59 -0
  8. package/dist/agents-md.d.ts.map +1 -0
  9. package/dist/agents-md.js +204 -0
  10. package/dist/agents-md.js.map +1 -0
  11. package/dist/autoconfig.d.ts +137 -0
  12. package/dist/autoconfig.d.ts.map +1 -0
  13. package/dist/autoconfig.js +452 -0
  14. package/dist/autoconfig.js.map +1 -0
  15. package/dist/bootstrap.d.ts +68 -0
  16. package/dist/bootstrap.d.ts.map +1 -0
  17. package/dist/bootstrap.js +304 -0
  18. package/dist/bootstrap.js.map +1 -0
  19. package/dist/bridges/a2a-bridge.d.ts +156 -0
  20. package/dist/bridges/a2a-bridge.d.ts.map +1 -0
  21. package/dist/bridges/a2a-bridge.js +337 -0
  22. package/dist/bridges/a2a-bridge.js.map +1 -0
  23. package/dist/bridges/mcp-bridge.d.ts +87 -0
  24. package/dist/bridges/mcp-bridge.d.ts.map +1 -0
  25. package/dist/bridges/mcp-bridge.js +332 -0
  26. package/dist/bridges/mcp-bridge.js.map +1 -0
  27. package/dist/cache.d.ts +130 -0
  28. package/dist/cache.d.ts.map +1 -0
  29. package/dist/cache.js +257 -0
  30. package/dist/cache.js.map +1 -0
  31. package/dist/capsules.d.ts +23 -0
  32. package/dist/capsules.d.ts.map +1 -0
  33. package/dist/capsules.js +75 -0
  34. package/dist/capsules.js.map +1 -0
  35. package/dist/cli/commands.d.ts +8 -0
  36. package/dist/cli/commands.d.ts.map +1 -0
  37. package/dist/cli/commands.js +263 -0
  38. package/dist/cli/commands.js.map +1 -0
  39. package/dist/coc.d.ts +121 -0
  40. package/dist/coc.d.ts.map +1 -0
  41. package/dist/coc.js +629 -0
  42. package/dist/coc.js.map +1 -0
  43. package/dist/coc.test.d.ts +2 -0
  44. package/dist/coc.test.d.ts.map +1 -0
  45. package/dist/coc.test.js +80 -0
  46. package/dist/coc.test.js.map +1 -0
  47. package/dist/compression.d.ts +125 -0
  48. package/dist/compression.d.ts.map +1 -0
  49. package/dist/compression.js +573 -0
  50. package/dist/compression.js.map +1 -0
  51. package/dist/cot-stream.d.ts +220 -0
  52. package/dist/cot-stream.d.ts.map +1 -0
  53. package/dist/cot-stream.js +673 -0
  54. package/dist/cot-stream.js.map +1 -0
  55. package/dist/crypto-wasm.d.ts +100 -0
  56. package/dist/crypto-wasm.d.ts.map +1 -0
  57. package/dist/crypto-wasm.js +229 -0
  58. package/dist/crypto-wasm.js.map +1 -0
  59. package/dist/federation.d.ts +200 -0
  60. package/dist/federation.d.ts.map +1 -0
  61. package/dist/federation.js +691 -0
  62. package/dist/federation.js.map +1 -0
  63. package/dist/federation.test.d.ts +2 -0
  64. package/dist/federation.test.d.ts.map +1 -0
  65. package/dist/federation.test.js +71 -0
  66. package/dist/federation.test.js.map +1 -0
  67. package/dist/gateway/capability-router.d.ts +77 -0
  68. package/dist/gateway/capability-router.d.ts.map +1 -0
  69. package/dist/gateway/capability-router.js +222 -0
  70. package/dist/gateway/capability-router.js.map +1 -0
  71. package/dist/gateway/demand-spawner.d.ts +155 -0
  72. package/dist/gateway/demand-spawner.d.ts.map +1 -0
  73. package/dist/gateway/demand-spawner.js +426 -0
  74. package/dist/gateway/demand-spawner.js.map +1 -0
  75. package/dist/identity.d.ts +46 -0
  76. package/dist/identity.d.ts.map +1 -0
  77. package/dist/identity.js +102 -0
  78. package/dist/identity.js.map +1 -0
  79. package/dist/identity.test.d.ts +2 -0
  80. package/dist/identity.test.d.ts.map +1 -0
  81. package/dist/identity.test.js +45 -0
  82. package/dist/identity.test.js.map +1 -0
  83. package/dist/index.d.ts +36 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +1572 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/integration.d.ts +210 -0
  88. package/dist/integration.d.ts.map +1 -0
  89. package/dist/integration.js +1105 -0
  90. package/dist/integration.js.map +1 -0
  91. package/dist/integration.test.d.ts +2 -0
  92. package/dist/integration.test.d.ts.map +1 -0
  93. package/dist/integration.test.js +155 -0
  94. package/dist/integration.test.js.map +1 -0
  95. package/dist/knowledge.d.ts +219 -0
  96. package/dist/knowledge.d.ts.map +1 -0
  97. package/dist/knowledge.js +543 -0
  98. package/dist/knowledge.js.map +1 -0
  99. package/dist/knowledge.test.d.ts +2 -0
  100. package/dist/knowledge.test.d.ts.map +1 -0
  101. package/dist/knowledge.test.js +72 -0
  102. package/dist/knowledge.test.js.map +1 -0
  103. package/dist/latent-space.d.ts +178 -0
  104. package/dist/latent-space.d.ts.map +1 -0
  105. package/dist/latent-space.js +385 -0
  106. package/dist/latent-space.js.map +1 -0
  107. package/dist/lib.d.ts +30 -0
  108. package/dist/lib.d.ts.map +1 -0
  109. package/dist/lib.js +30 -0
  110. package/dist/lib.js.map +1 -0
  111. package/dist/mcp/server.d.ts +74 -0
  112. package/dist/mcp/server.d.ts.map +1 -0
  113. package/dist/mcp/server.js +1392 -0
  114. package/dist/mcp/server.js.map +1 -0
  115. package/dist/metrics.d.ts +98 -0
  116. package/dist/metrics.d.ts.map +1 -0
  117. package/dist/metrics.js +222 -0
  118. package/dist/metrics.js.map +1 -0
  119. package/dist/p2p.d.ts +87 -0
  120. package/dist/p2p.d.ts.map +1 -0
  121. package/dist/p2p.js +606 -0
  122. package/dist/p2p.js.map +1 -0
  123. package/dist/persona/capabilities.d.ts +17 -0
  124. package/dist/persona/capabilities.d.ts.map +1 -0
  125. package/dist/persona/capabilities.js +224 -0
  126. package/dist/persona/capabilities.js.map +1 -0
  127. package/dist/persona/domains.d.ts +22 -0
  128. package/dist/persona/domains.d.ts.map +1 -0
  129. package/dist/persona/domains.js +176 -0
  130. package/dist/persona/domains.js.map +1 -0
  131. package/dist/persona/embeddings.d.ts +40 -0
  132. package/dist/persona/embeddings.d.ts.map +1 -0
  133. package/dist/persona/embeddings.js +265 -0
  134. package/dist/persona/embeddings.js.map +1 -0
  135. package/dist/persona/engine.d.ts +79 -0
  136. package/dist/persona/engine.d.ts.map +1 -0
  137. package/dist/persona/engine.js +1087 -0
  138. package/dist/persona/engine.js.map +1 -0
  139. package/dist/persona/index.d.ts +11 -0
  140. package/dist/persona/index.d.ts.map +1 -0
  141. package/dist/persona/index.js +11 -0
  142. package/dist/persona/index.js.map +1 -0
  143. package/dist/persona/lifecycle.d.ts +17 -0
  144. package/dist/persona/lifecycle.d.ts.map +1 -0
  145. package/dist/persona/lifecycle.js +36 -0
  146. package/dist/persona/lifecycle.js.map +1 -0
  147. package/dist/persona/retrieval.d.ts +6 -0
  148. package/dist/persona/retrieval.d.ts.map +1 -0
  149. package/dist/persona/retrieval.js +122 -0
  150. package/dist/persona/retrieval.js.map +1 -0
  151. package/dist/persona/sync.d.ts +15 -0
  152. package/dist/persona/sync.d.ts.map +1 -0
  153. package/dist/persona/sync.js +92 -0
  154. package/dist/persona/sync.js.map +1 -0
  155. package/dist/persona/types.d.ts +283 -0
  156. package/dist/persona/types.d.ts.map +1 -0
  157. package/dist/persona/types.js +2 -0
  158. package/dist/persona/types.js.map +1 -0
  159. package/dist/persona/zkp/engine.d.ts +26 -0
  160. package/dist/persona/zkp/engine.d.ts.map +1 -0
  161. package/dist/persona/zkp/engine.js +370 -0
  162. package/dist/persona/zkp/engine.js.map +1 -0
  163. package/dist/persona/zkp/types.d.ts +39 -0
  164. package/dist/persona/zkp/types.d.ts.map +1 -0
  165. package/dist/persona/zkp/types.js +2 -0
  166. package/dist/persona/zkp/types.js.map +1 -0
  167. package/dist/planner.d.ts +114 -0
  168. package/dist/planner.d.ts.map +1 -0
  169. package/dist/planner.js +522 -0
  170. package/dist/planner.js.map +1 -0
  171. package/dist/proactive/checkpoints.d.ts +9 -0
  172. package/dist/proactive/checkpoints.d.ts.map +1 -0
  173. package/dist/proactive/checkpoints.js +20 -0
  174. package/dist/proactive/checkpoints.js.map +1 -0
  175. package/dist/proactive/engine.d.ts +59 -0
  176. package/dist/proactive/engine.d.ts.map +1 -0
  177. package/dist/proactive/engine.js +406 -0
  178. package/dist/proactive/engine.js.map +1 -0
  179. package/dist/proactive/scheduler.d.ts +11 -0
  180. package/dist/proactive/scheduler.d.ts.map +1 -0
  181. package/dist/proactive/scheduler.js +45 -0
  182. package/dist/proactive/scheduler.js.map +1 -0
  183. package/dist/proactive/swarm-controller.d.ts +189 -0
  184. package/dist/proactive/swarm-controller.d.ts.map +1 -0
  185. package/dist/proactive/swarm-controller.js +477 -0
  186. package/dist/proactive/swarm-controller.js.map +1 -0
  187. package/dist/proactive/swarm-registry.d.ts +13 -0
  188. package/dist/proactive/swarm-registry.d.ts.map +1 -0
  189. package/dist/proactive/swarm-registry.js +122 -0
  190. package/dist/proactive/swarm-registry.js.map +1 -0
  191. package/dist/proactive/types.d.ts +145 -0
  192. package/dist/proactive/types.d.ts.map +1 -0
  193. package/dist/proactive/types.js +25 -0
  194. package/dist/proactive/types.js.map +1 -0
  195. package/dist/registry.d.ts +35 -0
  196. package/dist/registry.d.ts.map +1 -0
  197. package/dist/registry.js +88 -0
  198. package/dist/registry.js.map +1 -0
  199. package/dist/reputation.d.ts +123 -0
  200. package/dist/reputation.d.ts.map +1 -0
  201. package/dist/reputation.js +366 -0
  202. package/dist/reputation.js.map +1 -0
  203. package/dist/reputation.test.d.ts +5 -0
  204. package/dist/reputation.test.d.ts.map +1 -0
  205. package/dist/reputation.test.js +265 -0
  206. package/dist/reputation.test.js.map +1 -0
  207. package/dist/rooms.d.ts +96 -0
  208. package/dist/rooms.d.ts.map +1 -0
  209. package/dist/rooms.js +410 -0
  210. package/dist/rooms.js.map +1 -0
  211. package/dist/sdk/client.d.ts +290 -0
  212. package/dist/sdk/client.d.ts.map +1 -0
  213. package/dist/sdk/client.js +1287 -0
  214. package/dist/sdk/client.js.map +1 -0
  215. package/dist/sdk/index.d.ts +32 -0
  216. package/dist/sdk/index.d.ts.map +1 -0
  217. package/dist/sdk/index.js +70 -0
  218. package/dist/sdk/index.js.map +1 -0
  219. package/dist/security.d.ts +230 -0
  220. package/dist/security.d.ts.map +1 -0
  221. package/dist/security.js +652 -0
  222. package/dist/security.js.map +1 -0
  223. package/dist/skills/engine.d.ts +262 -0
  224. package/dist/skills/engine.d.ts.map +1 -0
  225. package/dist/skills/engine.js +788 -0
  226. package/dist/skills/engine.js.map +1 -0
  227. package/dist/skills/engine.test.d.ts +2 -0
  228. package/dist/skills/engine.test.d.ts.map +1 -0
  229. package/dist/skills/engine.test.js +134 -0
  230. package/dist/skills/engine.test.js.map +1 -0
  231. package/dist/skills/parser.d.ts +129 -0
  232. package/dist/skills/parser.d.ts.map +1 -0
  233. package/dist/skills/parser.js +318 -0
  234. package/dist/skills/parser.js.map +1 -0
  235. package/dist/social.d.ts +149 -0
  236. package/dist/social.d.ts.map +1 -0
  237. package/dist/social.js +401 -0
  238. package/dist/social.js.map +1 -0
  239. package/dist/storage-optimized.d.ts +116 -0
  240. package/dist/storage-optimized.d.ts.map +1 -0
  241. package/dist/storage-optimized.js +264 -0
  242. package/dist/storage-optimized.js.map +1 -0
  243. package/dist/storage.d.ts +584 -0
  244. package/dist/storage.d.ts.map +1 -0
  245. package/dist/storage.js +2703 -0
  246. package/dist/storage.js.map +1 -0
  247. package/dist/storage.test.d.ts +2 -0
  248. package/dist/storage.test.d.ts.map +1 -0
  249. package/dist/storage.test.js +78 -0
  250. package/dist/storage.test.js.map +1 -0
  251. package/dist/swp.d.ts +443 -0
  252. package/dist/swp.d.ts.map +1 -0
  253. package/dist/swp.js +223 -0
  254. package/dist/swp.js.map +1 -0
  255. package/dist/swp.test.d.ts +5 -0
  256. package/dist/swp.test.d.ts.map +1 -0
  257. package/dist/swp.test.js +127 -0
  258. package/dist/swp.test.js.map +1 -0
  259. package/dist/templates.d.ts +25 -0
  260. package/dist/templates.d.ts.map +1 -0
  261. package/dist/templates.js +1048 -0
  262. package/dist/templates.js.map +1 -0
  263. package/dist/test-e2e.d.ts +14 -0
  264. package/dist/test-e2e.d.ts.map +1 -0
  265. package/dist/test-e2e.js +266 -0
  266. package/dist/test-e2e.js.map +1 -0
  267. package/dist/workers/research-worker.d.ts +19 -0
  268. package/dist/workers/research-worker.d.ts.map +1 -0
  269. package/dist/workers/research-worker.js +141 -0
  270. package/dist/workers/research-worker.js.map +1 -0
  271. package/package.json +110 -0
@@ -0,0 +1,370 @@
1
+ import crypto from 'crypto';
2
+ import { execFileSync } from 'child_process';
3
+ import { existsSync, readFileSync } from 'fs';
4
+ import { dirname, join } from 'path';
5
+ import { ulid } from 'ulid';
6
+ import { fileURLToPath } from 'url';
7
+ const DEFAULT_CIRCUITS = [
8
+ {
9
+ circuitId: 'age_over_18',
10
+ version: '1.0.0',
11
+ description: 'Prove that user age is above minimum threshold without disclosing DOB.',
12
+ publicInputs: ['minAge', 'referenceDate', 'subjectDid'],
13
+ privateInputs: ['dob'],
14
+ active: true,
15
+ },
16
+ {
17
+ circuitId: 'domain_membership',
18
+ version: '1.0.0',
19
+ description: 'Prove possession of active domain membership claim.',
20
+ publicInputs: ['domain', 'subjectDid'],
21
+ privateInputs: ['membershipClaimSecret'],
22
+ active: true,
23
+ },
24
+ {
25
+ circuitId: 'capability_possession',
26
+ version: '1.0.0',
27
+ description: 'Prove capability possession without exposing token body.',
28
+ publicInputs: ['scope', 'serviceDid'],
29
+ privateInputs: ['capabilityToken'],
30
+ active: true,
31
+ },
32
+ ];
33
+ const ARTIFACTS_DIR = join(dirname(fileURLToPath(import.meta.url)), 'artifacts');
34
+ function canonical(value) {
35
+ if (value === null || value === undefined)
36
+ return JSON.stringify(value);
37
+ if (typeof value !== 'object')
38
+ return JSON.stringify(value);
39
+ if (Array.isArray(value))
40
+ return `[${value.map((v) => canonical(v)).join(',')}]`;
41
+ const obj = value;
42
+ const keys = Object.keys(obj).sort();
43
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${canonical(obj[k])}`).join(',')}}`;
44
+ }
45
+ export class PersonaZkpEngine {
46
+ storage;
47
+ identityDid;
48
+ signingSecret;
49
+ providerMode;
50
+ noirRunner;
51
+ warnedNoirFallback = false;
52
+ circuitManifest = new Map();
53
+ constructor(storage, identityDid, secret) {
54
+ this.storage = storage;
55
+ this.identityDid = identityDid;
56
+ this.signingSecret =
57
+ secret ||
58
+ process.env.SOCIETY_PERSONA_ZKP_SECRET ||
59
+ crypto.createHash('sha256').update('persona-zkp-shared-v1').digest('hex');
60
+ this.providerMode =
61
+ process.env.SOCIETY_PERSONA_ZKP_PROVIDER ||
62
+ (process.env.NODE_ENV === 'production' ? 'noir-bb' : 'mock-noir-bb');
63
+ this.noirRunner = process.env.SOCIETY_PERSONA_ZKP_RUNNER;
64
+ if (!this.noirRunner) {
65
+ const bundledCandidates = [
66
+ join(process.cwd(), 'scripts', 'persona-zkp-runner.mjs'),
67
+ join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..', 'scripts', 'persona-zkp-runner.mjs'),
68
+ ];
69
+ this.noirRunner = bundledCandidates.find((candidate) => existsSync(candidate));
70
+ }
71
+ if (this.providerMode === 'noir-bb' && !this.noirRunner && process.env.NODE_ENV === 'production') {
72
+ throw new Error('SOCIETY_PERSONA_ZKP_RUNNER is required in production when provider=noir-bb.');
73
+ }
74
+ this.loadCircuitManifest();
75
+ this.assertProductionArtifacts();
76
+ this.seedCircuits();
77
+ }
78
+ listCircuits() {
79
+ const rows = this.storage.listPersonaZkpCircuits?.() || [];
80
+ if (rows.length === 0)
81
+ return DEFAULT_CIRCUITS;
82
+ return rows.map((row) => ({
83
+ circuitId: row.circuitId,
84
+ version: row.version,
85
+ description: String(row.metadata?.description || ''),
86
+ publicInputs: Array.isArray(row.metadata?.publicInputs) ? row.metadata.publicInputs : [],
87
+ privateInputs: Array.isArray(row.metadata?.privateInputs) ? row.metadata.privateInputs : [],
88
+ active: !!row.active,
89
+ }));
90
+ }
91
+ createChallenge(input) {
92
+ return {
93
+ id: `zkch_${ulid()}`,
94
+ circuitId: input.circuitId,
95
+ nonce: input.nonce || crypto.randomBytes(16).toString('hex'),
96
+ createdAt: Date.now(),
97
+ context: input.context || {},
98
+ };
99
+ }
100
+ generateProof(vaultId, input) {
101
+ this.assertCircuitActive(input.circuitId);
102
+ const issuedAt = Date.now();
103
+ const noirBundle = this.tryGenerateWithNoir(vaultId, input, issuedAt);
104
+ if (noirBundle) {
105
+ this.storage.savePersonaZkpProof?.({
106
+ id: noirBundle.id,
107
+ vaultId: noirBundle.vaultId,
108
+ circuitId: noirBundle.circuitId,
109
+ proofBlob: noirBundle.proof,
110
+ publicInputs: noirBundle.publicInputs,
111
+ claimIds: noirBundle.claimIds,
112
+ createdAt: noirBundle.createdAt,
113
+ expiresAt: noirBundle.expiresAt,
114
+ });
115
+ return noirBundle;
116
+ }
117
+ const payload = {
118
+ circuitId: input.circuitId,
119
+ publicInputs: input.publicInputs || {},
120
+ privateInputs: input.privateInputs || {},
121
+ claimIds: input.claimIds || [],
122
+ issuedAt,
123
+ };
124
+ const payloadStr = canonical(payload);
125
+ const mac = crypto.createHmac('sha256', this.signingSecret).update(payloadStr).digest('base64url');
126
+ const proof = `${Buffer.from(payloadStr, 'utf8').toString('base64url')}.${mac}`;
127
+ const bundle = {
128
+ id: `zkp_${ulid()}`,
129
+ vaultId,
130
+ circuitId: input.circuitId,
131
+ proof,
132
+ publicInputs: input.publicInputs || {},
133
+ claimIds: input.claimIds || [],
134
+ createdAt: issuedAt,
135
+ expiresAt: input.expiresAt,
136
+ proofSystem: 'mock-noir-bb',
137
+ };
138
+ this.storage.savePersonaZkpProof?.({
139
+ id: bundle.id,
140
+ vaultId: bundle.vaultId,
141
+ circuitId: bundle.circuitId,
142
+ proofBlob: bundle.proof,
143
+ publicInputs: bundle.publicInputs,
144
+ claimIds: bundle.claimIds,
145
+ createdAt: bundle.createdAt,
146
+ expiresAt: bundle.expiresAt,
147
+ });
148
+ return bundle;
149
+ }
150
+ verifyProof(input) {
151
+ const bundle = input.proofBundle;
152
+ this.assertCircuitActive(bundle.circuitId);
153
+ if (bundle.expiresAt && Date.now() > bundle.expiresAt) {
154
+ return { valid: false, reason: 'Proof expired', circuitId: bundle.circuitId };
155
+ }
156
+ const noirResult = this.tryVerifyWithNoir(bundle);
157
+ if (noirResult) {
158
+ return noirResult;
159
+ }
160
+ const parts = bundle.proof.split('.');
161
+ if (parts.length !== 2) {
162
+ return { valid: false, reason: 'Malformed proof', circuitId: bundle.circuitId };
163
+ }
164
+ const payloadEncoded = parts[0];
165
+ const mac = parts[1];
166
+ const expected = crypto.createHmac('sha256', this.signingSecret).update(Buffer.from(payloadEncoded, 'base64url')).digest('base64url');
167
+ if (expected !== mac) {
168
+ return { valid: false, reason: 'Invalid proof MAC', circuitId: bundle.circuitId };
169
+ }
170
+ let payload;
171
+ try {
172
+ payload = JSON.parse(Buffer.from(payloadEncoded, 'base64url').toString('utf8'));
173
+ }
174
+ catch {
175
+ return { valid: false, reason: 'Invalid proof payload', circuitId: bundle.circuitId };
176
+ }
177
+ const samePublicInputs = canonical(payload.publicInputs || {}) === canonical(bundle.publicInputs || {});
178
+ if (!samePublicInputs) {
179
+ return { valid: false, reason: 'Public inputs mismatch', circuitId: bundle.circuitId };
180
+ }
181
+ if (bundle.claimIds.length > 0) {
182
+ const claims = this.storage.listPersonaClaims?.(bundle.vaultId, { includeRevoked: false }) || [];
183
+ if (claims.length > 0) {
184
+ const claimSet = new Set(claims.map((c) => c.id));
185
+ for (const claimId of bundle.claimIds) {
186
+ if (!claimSet.has(claimId)) {
187
+ return { valid: false, reason: `Claim not active: ${claimId}`, circuitId: bundle.circuitId };
188
+ }
189
+ }
190
+ }
191
+ }
192
+ return { valid: true, circuitId: bundle.circuitId };
193
+ }
194
+ assertCircuitActive(circuitId) {
195
+ const circuit = this.listCircuits().find((c) => c.circuitId === circuitId);
196
+ if (!circuit) {
197
+ throw new Error(`Unknown ZKP circuit: ${circuitId}`);
198
+ }
199
+ if (!circuit.active) {
200
+ throw new Error(`ZKP circuit is inactive: ${circuitId}`);
201
+ }
202
+ }
203
+ seedCircuits() {
204
+ for (const circuit of DEFAULT_CIRCUITS) {
205
+ const manifest = this.circuitManifest.get(circuit.circuitId);
206
+ const acirPath = manifest?.acir ? join(ARTIFACTS_DIR, manifest.acir) : undefined;
207
+ const vkPath = manifest?.vk ? join(ARTIFACTS_DIR, manifest.vk) : undefined;
208
+ const artifactReady = !!(manifest &&
209
+ acirPath &&
210
+ vkPath &&
211
+ existsSync(acirPath) &&
212
+ existsSync(vkPath) &&
213
+ !String(manifest.acir).includes('placeholder') &&
214
+ !String(manifest.vk).includes('placeholder'));
215
+ this.storage.savePersonaZkpCircuit?.({
216
+ circuitId: circuit.circuitId,
217
+ version: circuit.version,
218
+ vkBlob: null,
219
+ metadata: {
220
+ description: circuit.description,
221
+ publicInputs: circuit.publicInputs,
222
+ privateInputs: circuit.privateInputs,
223
+ artifactType: 'noir-acir-vk',
224
+ acirPath: manifest?.acir || null,
225
+ vkPath: manifest?.vk || null,
226
+ artifactHash: manifest?.hash || null,
227
+ artifactReady,
228
+ },
229
+ active: circuit.active,
230
+ });
231
+ }
232
+ }
233
+ tryGenerateWithNoir(vaultId, input, issuedAt) {
234
+ if (this.providerMode !== 'noir-bb')
235
+ return undefined;
236
+ if (!this.noirRunner) {
237
+ this.warnNoirFallback('Noir runner not configured');
238
+ return undefined;
239
+ }
240
+ try {
241
+ const result = this.runNoirRunner('prove', {
242
+ vaultId,
243
+ circuitId: input.circuitId,
244
+ privateInputs: input.privateInputs || {},
245
+ publicInputs: input.publicInputs || {},
246
+ claimIds: input.claimIds || [],
247
+ issuedAt,
248
+ expiresAt: input.expiresAt,
249
+ });
250
+ return {
251
+ id: `zkp_${ulid()}`,
252
+ vaultId,
253
+ circuitId: input.circuitId,
254
+ proof: String(result.proof || ''),
255
+ publicInputs: result.publicInputs || input.publicInputs || {},
256
+ claimIds: result.claimIds || input.claimIds || [],
257
+ createdAt: issuedAt,
258
+ expiresAt: input.expiresAt,
259
+ proofSystem: 'noir-bb',
260
+ };
261
+ }
262
+ catch (error) {
263
+ if (process.env.NODE_ENV === 'production') {
264
+ throw new Error(`Noir/Barretenberg prove failed: ${error.message}`);
265
+ }
266
+ this.warnNoirFallback(error.message);
267
+ return undefined;
268
+ }
269
+ }
270
+ tryVerifyWithNoir(bundle) {
271
+ const shouldTryNoir = this.providerMode === 'noir-bb' || bundle.proofSystem === 'noir-bb';
272
+ if (!shouldTryNoir)
273
+ return undefined;
274
+ if (!this.noirRunner) {
275
+ if (process.env.NODE_ENV === 'production') {
276
+ throw new Error('Noir/Barretenberg verify requires SOCIETY_PERSONA_ZKP_RUNNER.');
277
+ }
278
+ this.warnNoirFallback('Noir runner not configured');
279
+ return undefined;
280
+ }
281
+ try {
282
+ const result = this.runNoirRunner('verify', {
283
+ circuitId: bundle.circuitId,
284
+ proof: bundle.proof,
285
+ publicInputs: bundle.publicInputs || {},
286
+ claimIds: bundle.claimIds || [],
287
+ expiresAt: bundle.expiresAt,
288
+ });
289
+ if (result.valid === true) {
290
+ return { valid: true, circuitId: bundle.circuitId };
291
+ }
292
+ return {
293
+ valid: false,
294
+ reason: String(result.reason || 'Noir/Barretenberg verification failed'),
295
+ circuitId: bundle.circuitId,
296
+ };
297
+ }
298
+ catch (error) {
299
+ if (process.env.NODE_ENV === 'production') {
300
+ throw new Error(`Noir/Barretenberg verify failed: ${error.message}`);
301
+ }
302
+ this.warnNoirFallback(error.message);
303
+ return undefined;
304
+ }
305
+ }
306
+ runNoirRunner(operation, payload) {
307
+ const output = execFileSync(this.noirRunner, [operation], {
308
+ input: JSON.stringify(payload),
309
+ encoding: 'utf8',
310
+ stdio: ['pipe', 'pipe', 'pipe'],
311
+ });
312
+ const parsed = JSON.parse(output || '{}');
313
+ if (!parsed || typeof parsed !== 'object') {
314
+ throw new Error('Invalid noir runner JSON output');
315
+ }
316
+ return parsed;
317
+ }
318
+ warnNoirFallback(reason) {
319
+ if (this.warnedNoirFallback)
320
+ return;
321
+ this.warnedNoirFallback = true;
322
+ console.warn(`[persona-zkp] Falling back to mock-noir-bb provider in non-production mode: ${reason}`);
323
+ }
324
+ loadCircuitManifest() {
325
+ const manifestPath = join(ARTIFACTS_DIR, 'circuits.json');
326
+ if (!existsSync(manifestPath))
327
+ return;
328
+ try {
329
+ const parsed = JSON.parse(readFileSync(manifestPath, 'utf8'));
330
+ for (const circuit of parsed.circuits || []) {
331
+ if (!circuit?.id)
332
+ continue;
333
+ this.circuitManifest.set(circuit.id, circuit);
334
+ }
335
+ }
336
+ catch {
337
+ // Ignore malformed manifest in non-production mode.
338
+ }
339
+ }
340
+ assertProductionArtifacts() {
341
+ if (process.env.NODE_ENV !== 'production')
342
+ return;
343
+ if (this.providerMode !== 'noir-bb')
344
+ return;
345
+ const missing = [];
346
+ for (const circuit of DEFAULT_CIRCUITS) {
347
+ const manifest = this.circuitManifest.get(circuit.circuitId);
348
+ const acirPath = manifest?.acir ? join(ARTIFACTS_DIR, manifest.acir) : '';
349
+ const vkPath = manifest?.vk ? join(ARTIFACTS_DIR, manifest.vk) : '';
350
+ const acirBody = acirPath && existsSync(acirPath) ? readFileSync(acirPath, 'utf8') : '';
351
+ const vkBody = vkPath && existsSync(vkPath) ? readFileSync(vkPath, 'utf8') : '';
352
+ const ok = !!manifest &&
353
+ !!acirPath &&
354
+ !!vkPath &&
355
+ existsSync(acirPath) &&
356
+ existsSync(vkPath) &&
357
+ !String(manifest.acir).includes('placeholder') &&
358
+ !String(manifest.vk).includes('placeholder') &&
359
+ !/placeholder|dummy/i.test(acirBody) &&
360
+ !/placeholder|dummy/i.test(vkBody);
361
+ if (!ok) {
362
+ missing.push(circuit.circuitId);
363
+ }
364
+ }
365
+ if (missing.length > 0) {
366
+ throw new Error(`Missing Noir/Barretenberg artifacts for circuits: ${missing.join(', ')}`);
367
+ }
368
+ }
369
+ }
370
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/persona/zkp/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { PersonaClaimId, PersonaVaultId, ZkCircuitId } from '../types.js';
2
+ export interface ZkCircuitDefinition {
3
+ circuitId: ZkCircuitId;
4
+ version: string;
5
+ description: string;
6
+ publicInputs: string[];
7
+ privateInputs: string[];
8
+ active: boolean;
9
+ }
10
+ export interface ZkCircuitArtifact {
11
+ circuitId: ZkCircuitId;
12
+ version: string;
13
+ acir?: string;
14
+ vk?: string;
15
+ metadata?: Record<string, unknown>;
16
+ }
17
+ export interface ZkProofRecord {
18
+ id: string;
19
+ vaultId: PersonaVaultId;
20
+ circuitId: ZkCircuitId;
21
+ proofBlob: string;
22
+ publicInputs: Record<string, unknown>;
23
+ claimIds: PersonaClaimId[];
24
+ createdAt: number;
25
+ expiresAt?: number;
26
+ }
27
+ export interface ZkChallengeInput {
28
+ circuitId: ZkCircuitId;
29
+ nonce?: string;
30
+ context?: Record<string, unknown>;
31
+ }
32
+ export interface ZkChallenge {
33
+ id: string;
34
+ circuitId: ZkCircuitId;
35
+ nonce: string;
36
+ createdAt: number;
37
+ context: Record<string, unknown>;
38
+ }
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/persona/zkp/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/persona/zkp/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Society Protocol — Planner Module v1.0 (State of the Art)
3
+ *
4
+ * The Planner takes a high-level goal and breaks it down into a Directed Task Graph (DAG).
5
+ * Features:
6
+ * - Multi-provider support (OpenAI, Anthropic, Ollama, custom)
7
+ * - Intelligent caching
8
+ * - Fallback chains
9
+ * - Streaming support
10
+ * - Validation and verification
11
+ */
12
+ import type { CocDagNode } from './swp.js';
13
+ export type PlannerProvider = 'openai' | 'anthropic' | 'ollama' | 'custom';
14
+ export interface PlannerConfig {
15
+ provider?: PlannerProvider;
16
+ apiKey?: string;
17
+ openaiApiKey?: string;
18
+ openaiModel?: string;
19
+ openaiBaseUrl?: string;
20
+ anthropicApiKey?: string;
21
+ anthropicModel?: string;
22
+ ollamaUrl?: string;
23
+ ollamaModel?: string;
24
+ customEndpoint?: string;
25
+ customHeaders?: Record<string, string>;
26
+ temperature?: number;
27
+ maxTokens?: number;
28
+ timeoutMs?: number;
29
+ enableCache?: boolean;
30
+ cacheMaxSize?: number;
31
+ fallbackChain?: PlannerProvider[];
32
+ }
33
+ export interface PlanCacheEntry {
34
+ goal: string;
35
+ templateId?: string;
36
+ dag: CocDagNode[];
37
+ timestamp: number;
38
+ provider: string;
39
+ confidence: number;
40
+ }
41
+ export interface PlanResult {
42
+ dag: CocDagNode[];
43
+ provider: string;
44
+ model: string;
45
+ confidence: number;
46
+ latencyMs: number;
47
+ tokensUsed?: number;
48
+ costUsd?: number;
49
+ cached: boolean;
50
+ reasoning?: string;
51
+ }
52
+ export interface ValidationResult {
53
+ valid: boolean;
54
+ errors: string[];
55
+ warnings: string[];
56
+ }
57
+ export declare class Planner {
58
+ private config;
59
+ private cache;
60
+ private cacheOrder;
61
+ constructor(config?: PlannerConfig);
62
+ /**
63
+ * Generate a plan (DAG) for a goal
64
+ */
65
+ generatePlan(goal: string, options?: {
66
+ templateId?: string;
67
+ context?: string;
68
+ constraints?: string[];
69
+ preferredProvider?: PlannerProvider;
70
+ }): Promise<PlanResult>;
71
+ /**
72
+ * Generate plan with streaming (for real-time UI updates)
73
+ */
74
+ generatePlanStreaming(goal: string, options?: {
75
+ templateId?: string;
76
+ context?: string;
77
+ }): AsyncGenerator<{
78
+ type: 'thinking' | 'step' | 'complete' | 'error';
79
+ data?: CocDagNode;
80
+ partial?: Partial<CocDagNode>;
81
+ error?: string;
82
+ }>;
83
+ /**
84
+ * Expand an existing plan with new steps (for dynamic DAG expansion)
85
+ */
86
+ expandPlan(goal: string, currentDag: CocDagNode[], triggerStepId: string, expansionReason: 'uncertainty' | 'complexity' | 'feedback'): Promise<CocDagNode[]>;
87
+ /**
88
+ * Validate a DAG structure
89
+ */
90
+ validateDag(dag: CocDagNode[]): ValidationResult;
91
+ private tryProvider;
92
+ private callOpenAI;
93
+ private callAnthropic;
94
+ private callOllama;
95
+ private callCustom;
96
+ private buildSystemPrompt;
97
+ private buildUserPrompt;
98
+ private getCacheKey;
99
+ private getCachedPlan;
100
+ private cachePlan;
101
+ clearCache(): void;
102
+ private isProviderAvailable;
103
+ private checkAcyclic;
104
+ private findReachableSteps;
105
+ private estimateCost;
106
+ isReady(): boolean;
107
+ getAvailableProviders(): PlannerProvider[];
108
+ getCacheStats(): {
109
+ size: number;
110
+ maxSize: number;
111
+ keys: string[];
112
+ };
113
+ }
114
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}