agentvault 1.0.2 → 1.0.5

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 (776) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +66 -6
  3. package/dist/cli/commands/approve.d.ts.map +1 -0
  4. package/dist/cli/commands/approve.js +357 -1
  5. package/dist/cli/commands/approve.js.map +1 -0
  6. package/dist/cli/commands/archive.d.ts.map +1 -0
  7. package/dist/cli/commands/archive.js.map +1 -0
  8. package/dist/cli/commands/backup.d.ts.map +1 -0
  9. package/dist/cli/commands/backup.js +303 -20
  10. package/dist/cli/commands/backup.js.map +1 -0
  11. package/dist/cli/commands/cloud-backup.d.ts.map +1 -0
  12. package/dist/cli/commands/cloud-backup.js +17 -0
  13. package/dist/cli/commands/cloud-backup.js.map +1 -0
  14. package/dist/cli/commands/cron.d.ts +14 -0
  15. package/dist/cli/commands/cron.d.ts.map +1 -0
  16. package/dist/cli/commands/cron.js +144 -0
  17. package/dist/cli/commands/cron.js.map +1 -0
  18. package/dist/cli/commands/cycles.d.ts.map +1 -0
  19. package/dist/cli/commands/cycles.js.map +1 -0
  20. package/dist/cli/commands/decrypt.d.ts.map +1 -0
  21. package/dist/cli/commands/decrypt.js.map +1 -0
  22. package/dist/cli/commands/deploy.d.ts.map +1 -0
  23. package/dist/cli/commands/deploy.js.map +1 -0
  24. package/dist/cli/commands/exec.d.ts.map +1 -0
  25. package/dist/cli/commands/exec.js.map +1 -0
  26. package/dist/cli/commands/fetch.d.ts +3 -0
  27. package/dist/cli/commands/fetch.d.ts.map +1 -0
  28. package/dist/cli/commands/fetch.js +68 -4
  29. package/dist/cli/commands/fetch.js.map +1 -0
  30. package/dist/cli/commands/health.d.ts.map +1 -0
  31. package/dist/cli/commands/health.js +57 -2
  32. package/dist/cli/commands/health.js.map +1 -0
  33. package/dist/cli/commands/identity.d.ts.map +1 -0
  34. package/dist/cli/commands/identity.js.map +1 -0
  35. package/dist/cli/commands/inference.d.ts.map +1 -0
  36. package/dist/cli/commands/inference.js.map +1 -0
  37. package/dist/cli/commands/info.d.ts.map +1 -0
  38. package/dist/cli/commands/info.js.map +1 -0
  39. package/dist/cli/commands/init.d.ts +18 -1
  40. package/dist/cli/commands/init.d.ts.map +1 -0
  41. package/dist/cli/commands/init.js +152 -27
  42. package/dist/cli/commands/init.js.map +1 -0
  43. package/dist/cli/commands/instrument.d.ts.map +1 -0
  44. package/dist/cli/commands/instrument.js.map +1 -0
  45. package/dist/cli/commands/list.d.ts.map +1 -0
  46. package/dist/cli/commands/list.js.map +1 -0
  47. package/dist/cli/commands/logs.d.ts.map +1 -0
  48. package/dist/cli/commands/logs.js.map +1 -0
  49. package/dist/cli/commands/mcp.d.ts +4 -0
  50. package/dist/cli/commands/mcp.d.ts.map +1 -0
  51. package/dist/cli/commands/mcp.js +228 -0
  52. package/dist/cli/commands/mcp.js.map +1 -0
  53. package/dist/cli/commands/memory.d.ts +26 -0
  54. package/dist/cli/commands/memory.d.ts.map +1 -0
  55. package/dist/cli/commands/memory.js +509 -0
  56. package/dist/cli/commands/memory.js.map +1 -0
  57. package/dist/cli/commands/mint.d.ts +25 -0
  58. package/dist/cli/commands/mint.d.ts.map +1 -0
  59. package/dist/cli/commands/mint.js +276 -0
  60. package/dist/cli/commands/mint.js.map +1 -0
  61. package/dist/cli/commands/mirror.d.ts +19 -0
  62. package/dist/cli/commands/mirror.d.ts.map +1 -0
  63. package/dist/cli/commands/mirror.js +216 -0
  64. package/dist/cli/commands/mirror.js.map +1 -0
  65. package/dist/cli/commands/monitor.d.ts.map +1 -0
  66. package/dist/cli/commands/monitor.js.map +1 -0
  67. package/dist/cli/commands/network.d.ts.map +1 -0
  68. package/dist/cli/commands/network.js.map +1 -0
  69. package/dist/cli/commands/orchestrate.d.ts +35 -0
  70. package/dist/cli/commands/orchestrate.d.ts.map +1 -0
  71. package/dist/cli/commands/orchestrate.js +190 -0
  72. package/dist/cli/commands/orchestrate.js.map +1 -0
  73. package/dist/cli/commands/package.d.ts.map +1 -0
  74. package/dist/cli/commands/package.js.map +1 -0
  75. package/dist/cli/commands/pilot.d.ts +17 -0
  76. package/dist/cli/commands/pilot.d.ts.map +1 -0
  77. package/dist/cli/commands/pilot.js +490 -0
  78. package/dist/cli/commands/pilot.js.map +1 -0
  79. package/dist/cli/commands/polytician.d.ts +4 -0
  80. package/dist/cli/commands/polytician.d.ts.map +1 -0
  81. package/dist/cli/commands/polytician.js +229 -0
  82. package/dist/cli/commands/polytician.js.map +1 -0
  83. package/dist/cli/commands/profile.d.ts.map +1 -0
  84. package/dist/cli/commands/profile.js +1 -1
  85. package/dist/cli/commands/profile.js.map +1 -0
  86. package/dist/cli/commands/promote.d.ts.map +1 -0
  87. package/dist/cli/commands/promote.js.map +1 -0
  88. package/dist/cli/commands/rebase.d.ts +85 -0
  89. package/dist/cli/commands/rebase.d.ts.map +1 -0
  90. package/dist/cli/commands/rebase.js +175 -0
  91. package/dist/cli/commands/rebase.js.map +1 -0
  92. package/dist/cli/commands/rebuild.d.ts.map +1 -0
  93. package/dist/cli/commands/rebuild.js.map +1 -0
  94. package/dist/cli/commands/repo.d.ts +19 -0
  95. package/dist/cli/commands/repo.d.ts.map +1 -0
  96. package/dist/cli/commands/repo.js +187 -0
  97. package/dist/cli/commands/repo.js.map +1 -0
  98. package/dist/cli/commands/rollback.d.ts.map +1 -0
  99. package/dist/cli/commands/rollback.js.map +1 -0
  100. package/dist/cli/commands/safehouse.d.ts +11 -0
  101. package/dist/cli/commands/safehouse.d.ts.map +1 -0
  102. package/dist/cli/commands/safehouse.js +323 -0
  103. package/dist/cli/commands/safehouse.js.map +1 -0
  104. package/dist/cli/commands/show.d.ts.map +1 -0
  105. package/dist/cli/commands/show.js.map +1 -0
  106. package/dist/cli/commands/skills.d.ts +12 -0
  107. package/dist/cli/commands/skills.d.ts.map +1 -0
  108. package/dist/cli/commands/skills.js +248 -0
  109. package/dist/cli/commands/skills.js.map +1 -0
  110. package/dist/cli/commands/stats.d.ts.map +1 -0
  111. package/dist/cli/commands/stats.js +2 -2
  112. package/dist/cli/commands/stats.js.map +1 -0
  113. package/dist/cli/commands/status.d.ts +2 -0
  114. package/dist/cli/commands/status.d.ts.map +1 -0
  115. package/dist/cli/commands/status.js +25 -0
  116. package/dist/cli/commands/status.js.map +1 -0
  117. package/dist/cli/commands/test.d.ts.map +1 -0
  118. package/dist/cli/commands/test.js.map +1 -0
  119. package/dist/cli/commands/tokens.d.ts.map +1 -0
  120. package/dist/cli/commands/tokens.js.map +1 -0
  121. package/dist/cli/commands/trace.d.ts.map +1 -0
  122. package/dist/cli/commands/trace.js +3 -3
  123. package/dist/cli/commands/trace.js.map +1 -0
  124. package/dist/cli/commands/vault.d.ts +7 -0
  125. package/dist/cli/commands/vault.d.ts.map +1 -0
  126. package/dist/cli/commands/vault.js +551 -0
  127. package/dist/cli/commands/vault.js.map +1 -0
  128. package/dist/cli/commands/wallet-export.d.ts.map +1 -0
  129. package/dist/cli/commands/wallet-export.js.map +1 -0
  130. package/dist/cli/commands/wallet-history.d.ts.map +1 -0
  131. package/dist/cli/commands/wallet-history.js +2 -26
  132. package/dist/cli/commands/wallet-history.js.map +1 -0
  133. package/dist/cli/commands/wallet-import.d.ts.map +1 -0
  134. package/dist/cli/commands/wallet-import.js.map +1 -0
  135. package/dist/cli/commands/wallet-multi-send.d.ts.map +1 -0
  136. package/dist/cli/commands/wallet-multi-send.js.map +1 -0
  137. package/dist/cli/commands/wallet-process-queue.d.ts.map +1 -0
  138. package/dist/cli/commands/wallet-process-queue.js +2 -23
  139. package/dist/cli/commands/wallet-process-queue.js.map +1 -0
  140. package/dist/cli/commands/wallet-sign.d.ts.map +1 -0
  141. package/dist/cli/commands/wallet-sign.js +2 -26
  142. package/dist/cli/commands/wallet-sign.js.map +1 -0
  143. package/dist/cli/commands/wallet.d.ts +61 -0
  144. package/dist/cli/commands/wallet.d.ts.map +1 -0
  145. package/dist/cli/commands/wallet.js +312 -42
  146. package/dist/cli/commands/wallet.js.map +1 -0
  147. package/dist/cli/commands/wiki.d.ts +29 -0
  148. package/dist/cli/commands/wiki.d.ts.map +1 -0
  149. package/dist/cli/commands/wiki.js +528 -0
  150. package/dist/cli/commands/wiki.js.map +1 -0
  151. package/dist/cli/index.d.ts.map +1 -0
  152. package/dist/cli/index.js +74 -2
  153. package/dist/cli/index.js.map +1 -0
  154. package/dist/cli/merge.d.ts +70 -0
  155. package/dist/cli/merge.d.ts.map +1 -0
  156. package/dist/cli/merge.js +232 -0
  157. package/dist/cli/merge.js.map +1 -0
  158. package/dist/src/archival/archive-manager.d.ts +4 -0
  159. package/dist/src/archival/archive-manager.d.ts.map +1 -0
  160. package/dist/src/archival/archive-manager.js +6 -0
  161. package/dist/src/archival/archive-manager.js.map +1 -0
  162. package/dist/src/archival/arweave-archiver.d.ts +173 -0
  163. package/dist/src/archival/arweave-archiver.d.ts.map +1 -0
  164. package/dist/src/archival/arweave-archiver.js +279 -0
  165. package/dist/src/archival/arweave-archiver.js.map +1 -0
  166. package/dist/src/archival/arweave-client.d.ts +1 -0
  167. package/dist/src/archival/arweave-client.d.ts.map +1 -0
  168. package/dist/src/archival/arweave-client.js +5 -2
  169. package/dist/src/archival/arweave-client.js.map +1 -0
  170. package/dist/src/archival/index.d.ts +4 -1
  171. package/dist/src/archival/index.d.ts.map +1 -0
  172. package/dist/src/archival/index.js +2 -1
  173. package/dist/src/archival/index.js.map +1 -0
  174. package/dist/src/backbone/constants.d.ts +30 -0
  175. package/dist/src/backbone/constants.d.ts.map +1 -0
  176. package/dist/src/backbone/constants.js +62 -0
  177. package/dist/src/backbone/constants.js.map +1 -0
  178. package/dist/src/backbone/index.d.ts +15 -0
  179. package/dist/src/backbone/index.d.ts.map +1 -0
  180. package/dist/src/backbone/index.js +18 -0
  181. package/dist/src/backbone/index.js.map +1 -0
  182. package/dist/src/backbone/services/communication.d.ts +42 -0
  183. package/dist/src/backbone/services/communication.d.ts.map +1 -0
  184. package/dist/src/backbone/services/communication.js +107 -0
  185. package/dist/src/backbone/services/communication.js.map +1 -0
  186. package/dist/src/backbone/services/consensus.d.ts +61 -0
  187. package/dist/src/backbone/services/consensus.d.ts.map +1 -0
  188. package/dist/src/backbone/services/consensus.js +210 -0
  189. package/dist/src/backbone/services/consensus.js.map +1 -0
  190. package/dist/src/backbone/services/index.d.ts +10 -0
  191. package/dist/src/backbone/services/index.d.ts.map +1 -0
  192. package/dist/src/backbone/services/index.js +6 -0
  193. package/dist/src/backbone/services/index.js.map +1 -0
  194. package/dist/src/backbone/services/knowledge.d.ts +44 -0
  195. package/dist/src/backbone/services/knowledge.d.ts.map +1 -0
  196. package/dist/src/backbone/services/knowledge.js +99 -0
  197. package/dist/src/backbone/services/knowledge.js.map +1 -0
  198. package/dist/src/backbone/services/memory.d.ts +36 -0
  199. package/dist/src/backbone/services/memory.d.ts.map +1 -0
  200. package/dist/src/backbone/services/memory.js +94 -0
  201. package/dist/src/backbone/services/memory.js.map +1 -0
  202. package/dist/src/backbone/services/vault-health.d.ts +18 -0
  203. package/dist/src/backbone/services/vault-health.d.ts.map +1 -0
  204. package/dist/src/backbone/services/vault-health.js +74 -0
  205. package/dist/src/backbone/services/vault-health.js.map +1 -0
  206. package/dist/src/backbone/types.d.ts +211 -0
  207. package/dist/src/backbone/types.d.ts.map +1 -0
  208. package/dist/src/backbone/types.js +8 -0
  209. package/dist/src/backbone/types.js.map +1 -0
  210. package/dist/src/backbone/validators.d.ts +211 -0
  211. package/dist/src/backbone/validators.d.ts.map +1 -0
  212. package/dist/src/backbone/validators.js +122 -0
  213. package/dist/src/backbone/validators.js.map +1 -0
  214. package/dist/src/backup/backup.d.ts +107 -1
  215. package/dist/src/backup/backup.d.ts.map +1 -0
  216. package/dist/src/backup/backup.js +413 -4
  217. package/dist/src/backup/backup.js.map +1 -0
  218. package/dist/src/backup/index.d.ts +3 -1
  219. package/dist/src/backup/index.d.ts.map +1 -0
  220. package/dist/src/backup/index.js +3 -1
  221. package/dist/src/backup/index.js.map +1 -0
  222. package/dist/src/backup/merkle.d.ts +44 -0
  223. package/dist/src/backup/merkle.d.ts.map +1 -0
  224. package/dist/src/backup/merkle.js +85 -0
  225. package/dist/src/backup/merkle.js.map +1 -0
  226. package/dist/src/backup/thoughtform-bundle.d.ts +42 -0
  227. package/dist/src/backup/thoughtform-bundle.d.ts.map +1 -0
  228. package/dist/src/backup/thoughtform-bundle.js +200 -0
  229. package/dist/src/backup/thoughtform-bundle.js.map +1 -0
  230. package/dist/src/canister/actor.d.ts +310 -0
  231. package/dist/src/canister/actor.d.ts.map +1 -0
  232. package/dist/src/canister/actor.idl.d.ts +8 -0
  233. package/dist/src/canister/actor.idl.d.ts.map +1 -0
  234. package/dist/src/canister/actor.idl.js +518 -0
  235. package/dist/src/canister/actor.idl.js.map +1 -0
  236. package/dist/src/canister/actor.js +51 -0
  237. package/dist/src/canister/actor.js.map +1 -0
  238. package/dist/src/canister/encryption.d.ts +158 -0
  239. package/dist/src/canister/encryption.d.ts.map +1 -0
  240. package/dist/src/canister/encryption.js +296 -0
  241. package/dist/src/canister/encryption.js.map +1 -0
  242. package/dist/src/canister/memory-repo-actor.d.ts +162 -0
  243. package/dist/src/canister/memory-repo-actor.d.ts.map +1 -0
  244. package/dist/src/canister/memory-repo-actor.idl.d.ts +8 -0
  245. package/dist/src/canister/memory-repo-actor.idl.d.ts.map +1 -0
  246. package/dist/src/canister/memory-repo-actor.idl.js +90 -0
  247. package/dist/src/canister/memory-repo-actor.idl.js.map +1 -0
  248. package/dist/src/canister/memory-repo-actor.js +69 -0
  249. package/dist/src/canister/memory-repo-actor.js.map +1 -0
  250. package/dist/src/canister/types.d.ts +54 -0
  251. package/dist/src/canister/types.d.ts.map +1 -0
  252. package/dist/src/canister/types.js +7 -0
  253. package/dist/src/canister/types.js.map +1 -0
  254. package/dist/src/cloud-storage/cloud-sync.d.ts.map +1 -0
  255. package/dist/src/cloud-storage/cloud-sync.js +10 -5
  256. package/dist/src/cloud-storage/cloud-sync.js.map +1 -0
  257. package/dist/src/cloud-storage/index.d.ts.map +1 -0
  258. package/dist/src/cloud-storage/index.js.map +1 -0
  259. package/dist/src/cloud-storage/provider-detector.d.ts.map +1 -0
  260. package/dist/src/cloud-storage/provider-detector.js.map +1 -0
  261. package/dist/src/cloud-storage/types.d.ts +5 -0
  262. package/dist/src/cloud-storage/types.d.ts.map +1 -0
  263. package/dist/src/cloud-storage/types.js.map +1 -0
  264. package/dist/src/debugging/debug-logger.d.ts +8 -0
  265. package/dist/src/debugging/debug-logger.d.ts.map +1 -0
  266. package/dist/src/debugging/debug-logger.js +11 -0
  267. package/dist/src/debugging/debug-logger.js.map +1 -0
  268. package/dist/src/debugging/index.d.ts +1 -0
  269. package/dist/src/debugging/index.d.ts.map +1 -0
  270. package/dist/src/debugging/index.js +1 -0
  271. package/dist/src/debugging/index.js.map +1 -0
  272. package/dist/src/debugging/logs.d.ts.map +1 -0
  273. package/dist/src/debugging/logs.js.map +1 -0
  274. package/dist/src/debugging/types.d.ts.map +1 -0
  275. package/dist/src/debugging/types.js.map +1 -0
  276. package/dist/src/deployment/deployer.d.ts.map +1 -0
  277. package/dist/src/deployment/deployer.js +133 -1
  278. package/dist/src/deployment/deployer.js.map +1 -0
  279. package/dist/src/deployment/icpClient.d.ts.map +1 -0
  280. package/dist/src/deployment/icpClient.js +4 -0
  281. package/dist/src/deployment/icpClient.js.map +1 -0
  282. package/dist/src/deployment/index.d.ts.map +1 -0
  283. package/dist/src/deployment/index.js.map +1 -0
  284. package/dist/src/deployment/promotion.d.ts.map +1 -0
  285. package/dist/src/deployment/promotion.js.map +1 -0
  286. package/dist/src/deployment/types.d.ts +2 -1
  287. package/dist/src/deployment/types.d.ts.map +1 -0
  288. package/dist/src/deployment/types.js.map +1 -0
  289. package/dist/src/fault-tolerance/backup-status.d.ts +31 -0
  290. package/dist/src/fault-tolerance/backup-status.d.ts.map +1 -0
  291. package/dist/src/fault-tolerance/backup-status.js +76 -0
  292. package/dist/src/fault-tolerance/backup-status.js.map +1 -0
  293. package/dist/src/fault-tolerance/cron-check.d.ts +66 -0
  294. package/dist/src/fault-tolerance/cron-check.d.ts.map +1 -0
  295. package/dist/src/fault-tolerance/cron-check.js +177 -0
  296. package/dist/src/fault-tolerance/cron-check.js.map +1 -0
  297. package/dist/src/fault-tolerance/index.d.ts +12 -0
  298. package/dist/src/fault-tolerance/index.d.ts.map +1 -0
  299. package/dist/src/fault-tolerance/index.js +12 -0
  300. package/dist/src/fault-tolerance/index.js.map +1 -0
  301. package/dist/src/fault-tolerance/mirror-sync.d.ts +61 -0
  302. package/dist/src/fault-tolerance/mirror-sync.d.ts.map +1 -0
  303. package/dist/src/fault-tolerance/mirror-sync.js +203 -0
  304. package/dist/src/fault-tolerance/mirror-sync.js.map +1 -0
  305. package/dist/src/icp/batch.d.ts.map +1 -0
  306. package/dist/src/icp/batch.js +10 -4
  307. package/dist/src/icp/batch.js.map +1 -0
  308. package/dist/src/icp/cycles.d.ts.map +1 -0
  309. package/dist/src/icp/cycles.js.map +1 -0
  310. package/dist/src/icp/environment.d.ts.map +1 -0
  311. package/dist/src/icp/environment.js.map +1 -0
  312. package/dist/src/icp/icpcli.d.ts.map +1 -0
  313. package/dist/src/icp/icpcli.js.map +1 -0
  314. package/dist/src/icp/icwasm.d.ts.map +1 -0
  315. package/dist/src/icp/icwasm.js.map +1 -0
  316. package/dist/src/icp/identity.d.ts.map +1 -0
  317. package/dist/src/icp/identity.js.map +1 -0
  318. package/dist/src/icp/index.d.ts.map +1 -0
  319. package/dist/src/icp/index.js.map +1 -0
  320. package/dist/src/icp/optimization.d.ts.map +1 -0
  321. package/dist/src/icp/optimization.js.map +1 -0
  322. package/dist/src/icp/tokens.d.ts.map +1 -0
  323. package/dist/src/icp/tokens.js.map +1 -0
  324. package/dist/src/icp/tool-detector.d.ts.map +1 -0
  325. package/dist/src/icp/tool-detector.js +19 -5
  326. package/dist/src/icp/tool-detector.js.map +1 -0
  327. package/dist/src/icp/types.d.ts.map +1 -0
  328. package/dist/src/icp/types.js.map +1 -0
  329. package/dist/src/index.d.ts +1 -1
  330. package/dist/src/index.d.ts.map +1 -0
  331. package/dist/src/index.js +22 -1
  332. package/dist/src/index.js.map +1 -0
  333. package/dist/src/inference/bittensor-client.d.ts +54 -1
  334. package/dist/src/inference/bittensor-client.d.ts.map +1 -0
  335. package/dist/src/inference/bittensor-client.js +96 -3
  336. package/dist/src/inference/bittensor-client.js.map +1 -0
  337. package/dist/src/inference/fallback-chain.d.ts +90 -0
  338. package/dist/src/inference/fallback-chain.d.ts.map +1 -0
  339. package/dist/src/inference/fallback-chain.js +219 -0
  340. package/dist/src/inference/fallback-chain.js.map +1 -0
  341. package/dist/src/inference/index.d.ts +6 -1
  342. package/dist/src/inference/index.d.ts.map +1 -0
  343. package/dist/src/inference/index.js +6 -1
  344. package/dist/src/inference/index.js.map +1 -0
  345. package/dist/src/inference/inference-manager.d.ts.map +1 -0
  346. package/dist/src/inference/inference-manager.js.map +1 -0
  347. package/dist/src/inference/local-model-client.d.ts +46 -0
  348. package/dist/src/inference/local-model-client.d.ts.map +1 -0
  349. package/dist/src/inference/local-model-client.js +92 -0
  350. package/dist/src/inference/local-model-client.js.map +1 -0
  351. package/dist/src/inference/secure-inference.d.ts +105 -0
  352. package/dist/src/inference/secure-inference.d.ts.map +1 -0
  353. package/dist/src/inference/secure-inference.js +237 -0
  354. package/dist/src/inference/secure-inference.js.map +1 -0
  355. package/dist/src/inference/venice-client.d.ts +149 -0
  356. package/dist/src/inference/venice-client.d.ts.map +1 -0
  357. package/dist/src/inference/venice-client.js +333 -0
  358. package/dist/src/inference/venice-client.js.map +1 -0
  359. package/dist/src/metrics/index.d.ts.map +1 -0
  360. package/dist/src/metrics/index.js.map +1 -0
  361. package/dist/src/metrics/metrics.d.ts.map +1 -0
  362. package/dist/src/metrics/metrics.js.map +1 -0
  363. package/dist/src/mint/google-adk.d.ts +19 -0
  364. package/dist/src/mint/google-adk.d.ts.map +1 -0
  365. package/dist/src/mint/google-adk.js +180 -0
  366. package/dist/src/mint/google-adk.js.map +1 -0
  367. package/dist/src/monitoring/alerting.d.ts.map +1 -0
  368. package/dist/src/monitoring/alerting.js.map +1 -0
  369. package/dist/src/monitoring/health.d.ts +9 -1
  370. package/dist/src/monitoring/health.d.ts.map +1 -0
  371. package/dist/src/monitoring/health.js +63 -0
  372. package/dist/src/monitoring/health.js.map +1 -0
  373. package/dist/src/monitoring/index.d.ts +2 -2
  374. package/dist/src/monitoring/index.d.ts.map +1 -0
  375. package/dist/src/monitoring/index.js +1 -1
  376. package/dist/src/monitoring/index.js.map +1 -0
  377. package/dist/src/monitoring/info.d.ts.map +1 -0
  378. package/dist/src/monitoring/info.js.map +1 -0
  379. package/dist/src/monitoring/types.d.ts +26 -0
  380. package/dist/src/monitoring/types.d.ts.map +1 -0
  381. package/dist/src/monitoring/types.js.map +1 -0
  382. package/dist/src/network/index.d.ts.map +1 -0
  383. package/dist/src/network/index.js.map +1 -0
  384. package/dist/src/network/network-config.d.ts.map +1 -0
  385. package/dist/src/network/network-config.js.map +1 -0
  386. package/dist/src/orchestration/claude.d.ts +125 -0
  387. package/dist/src/orchestration/claude.d.ts.map +1 -0
  388. package/dist/src/orchestration/claude.js +639 -0
  389. package/dist/src/orchestration/claude.js.map +1 -0
  390. package/dist/src/orchestration/google-adk.d.ts +77 -0
  391. package/dist/src/orchestration/google-adk.d.ts.map +1 -0
  392. package/dist/src/orchestration/google-adk.js +659 -0
  393. package/dist/src/orchestration/google-adk.js.map +1 -0
  394. package/dist/src/orchestration/mcp-client.d.ts +47 -0
  395. package/dist/src/orchestration/mcp-client.d.ts.map +1 -0
  396. package/dist/src/orchestration/mcp-client.js +179 -0
  397. package/dist/src/orchestration/mcp-client.js.map +1 -0
  398. package/dist/src/orchestration/polytician-enricher.d.ts +21 -0
  399. package/dist/src/orchestration/polytician-enricher.d.ts.map +1 -0
  400. package/dist/src/orchestration/polytician-enricher.js +131 -0
  401. package/dist/src/orchestration/polytician-enricher.js.map +1 -0
  402. package/dist/src/orchestration/smallchat-bridge.d.ts +121 -0
  403. package/dist/src/orchestration/smallchat-bridge.d.ts.map +1 -0
  404. package/dist/src/orchestration/smallchat-bridge.js +331 -0
  405. package/dist/src/orchestration/smallchat-bridge.js.map +1 -0
  406. package/dist/src/orchestration/smallchat-compression.d.ts +100 -0
  407. package/dist/src/orchestration/smallchat-compression.d.ts.map +1 -0
  408. package/dist/src/orchestration/smallchat-compression.js +203 -0
  409. package/dist/src/orchestration/smallchat-compression.js.map +1 -0
  410. package/dist/src/orchestration/smallchat-policy.d.ts +158 -0
  411. package/dist/src/orchestration/smallchat-policy.d.ts.map +1 -0
  412. package/dist/src/orchestration/smallchat-policy.js +314 -0
  413. package/dist/src/orchestration/smallchat-policy.js.map +1 -0
  414. package/dist/src/orchestration/smallchat-tools.d.ts +69 -0
  415. package/dist/src/orchestration/smallchat-tools.d.ts.map +1 -0
  416. package/dist/src/orchestration/smallchat-tools.js +501 -0
  417. package/dist/src/orchestration/smallchat-tools.js.map +1 -0
  418. package/dist/src/packaging/compiler.d.ts.map +1 -0
  419. package/dist/src/packaging/compiler.js.map +1 -0
  420. package/dist/src/packaging/config-persistence.d.ts.map +1 -0
  421. package/dist/src/packaging/config-persistence.js.map +1 -0
  422. package/dist/src/packaging/config-schemas.d.ts +44 -2
  423. package/dist/src/packaging/config-schemas.d.ts.map +1 -0
  424. package/dist/src/packaging/config-schemas.js +19 -0
  425. package/dist/src/packaging/config-schemas.js.map +1 -0
  426. package/dist/src/packaging/detector.d.ts.map +1 -0
  427. package/dist/src/packaging/detector.js +15 -1
  428. package/dist/src/packaging/detector.js.map +1 -0
  429. package/dist/src/packaging/index.d.ts +11 -5
  430. package/dist/src/packaging/index.d.ts.map +1 -0
  431. package/dist/src/packaging/index.js +10 -4
  432. package/dist/src/packaging/index.js.map +1 -0
  433. package/dist/src/packaging/packager.d.ts.map +1 -0
  434. package/dist/src/packaging/packager.js.map +1 -0
  435. package/dist/src/packaging/parsers/clawdbot.d.ts +1 -1
  436. package/dist/src/packaging/parsers/clawdbot.d.ts.map +1 -0
  437. package/dist/src/packaging/parsers/clawdbot.js +26 -28
  438. package/dist/src/packaging/parsers/clawdbot.js.map +1 -0
  439. package/dist/src/packaging/parsers/cline.d.ts.map +1 -0
  440. package/dist/src/packaging/parsers/cline.js.map +1 -0
  441. package/dist/src/packaging/parsers/generic.d.ts +1 -1
  442. package/dist/src/packaging/parsers/generic.d.ts.map +1 -0
  443. package/dist/src/packaging/parsers/generic.js +13 -20
  444. package/dist/src/packaging/parsers/generic.js.map +1 -0
  445. package/dist/src/packaging/parsers/goose.d.ts.map +1 -0
  446. package/dist/src/packaging/parsers/goose.js.map +1 -0
  447. package/dist/src/packaging/parsers/index.d.ts +2 -0
  448. package/dist/src/packaging/parsers/index.d.ts.map +1 -0
  449. package/dist/src/packaging/parsers/index.js +2 -0
  450. package/dist/src/packaging/parsers/index.js.map +1 -0
  451. package/dist/src/packaging/parsers/nemoclaw.d.ts +4 -0
  452. package/dist/src/packaging/parsers/nemoclaw.d.ts.map +1 -0
  453. package/dist/src/packaging/parsers/nemoclaw.js +145 -0
  454. package/dist/src/packaging/parsers/nemoclaw.js.map +1 -0
  455. package/dist/src/packaging/parsers/polytician.d.ts +4 -0
  456. package/dist/src/packaging/parsers/polytician.d.ts.map +1 -0
  457. package/dist/src/packaging/parsers/polytician.js +121 -0
  458. package/dist/src/packaging/parsers/polytician.js.map +1 -0
  459. package/dist/src/packaging/serializer.d.ts +7 -1
  460. package/dist/src/packaging/serializer.d.ts.map +1 -0
  461. package/dist/src/packaging/serializer.js +14 -3
  462. package/dist/src/packaging/serializer.js.map +1 -0
  463. package/dist/src/packaging/serializers/index.d.ts +3 -0
  464. package/dist/src/packaging/serializers/index.d.ts.map +1 -0
  465. package/dist/src/packaging/serializers/index.js +2 -0
  466. package/dist/src/packaging/serializers/index.js.map +1 -0
  467. package/dist/src/packaging/serializers/thoughtform.d.ts +89 -0
  468. package/dist/src/packaging/serializers/thoughtform.d.ts.map +1 -0
  469. package/dist/src/packaging/serializers/thoughtform.js +84 -0
  470. package/dist/src/packaging/serializers/thoughtform.js.map +1 -0
  471. package/dist/src/packaging/state-format.d.ts +332 -0
  472. package/dist/src/packaging/state-format.d.ts.map +1 -0
  473. package/dist/src/packaging/state-format.js +602 -0
  474. package/dist/src/packaging/state-format.js.map +1 -0
  475. package/dist/src/packaging/types.d.ts +2 -2
  476. package/dist/src/packaging/types.d.ts.map +1 -0
  477. package/dist/src/packaging/types.js.map +1 -0
  478. package/dist/src/packaging/wasm-compiler.d.ts +160 -0
  479. package/dist/src/packaging/wasm-compiler.d.ts.map +1 -0
  480. package/dist/src/packaging/wasm-compiler.js +662 -0
  481. package/dist/src/packaging/wasm-compiler.js.map +1 -0
  482. package/dist/src/packaging/wasmedge-compiler.d.ts.map +1 -0
  483. package/dist/src/packaging/wasmedge-compiler.js +6 -4
  484. package/dist/src/packaging/wasmedge-compiler.js.map +1 -0
  485. package/dist/src/pilot/air-gap.d.ts +51 -0
  486. package/dist/src/pilot/air-gap.d.ts.map +1 -0
  487. package/dist/src/pilot/air-gap.js +118 -0
  488. package/dist/src/pilot/air-gap.js.map +1 -0
  489. package/dist/src/pilot/index.d.ts +14 -0
  490. package/dist/src/pilot/index.d.ts.map +1 -0
  491. package/dist/src/pilot/index.js +16 -0
  492. package/dist/src/pilot/index.js.map +1 -0
  493. package/dist/src/pilot/private-replica.d.ts +67 -0
  494. package/dist/src/pilot/private-replica.d.ts.map +1 -0
  495. package/dist/src/pilot/private-replica.js +429 -0
  496. package/dist/src/pilot/private-replica.js.map +1 -0
  497. package/dist/src/pilot/proxy-config.d.ts +36 -0
  498. package/dist/src/pilot/proxy-config.d.ts.map +1 -0
  499. package/dist/src/pilot/proxy-config.js +96 -0
  500. package/dist/src/pilot/proxy-config.js.map +1 -0
  501. package/dist/src/pilot/types.d.ts +181 -0
  502. package/dist/src/pilot/types.d.ts.map +1 -0
  503. package/dist/src/pilot/types.js +7 -0
  504. package/dist/src/pilot/types.js.map +1 -0
  505. package/dist/src/security/icp-audit.d.ts +63 -0
  506. package/dist/src/security/icp-audit.d.ts.map +1 -0
  507. package/dist/src/security/icp-audit.js +234 -0
  508. package/dist/src/security/icp-audit.js.map +1 -0
  509. package/dist/src/security/index.d.ts +7 -1
  510. package/dist/src/security/index.d.ts.map +1 -0
  511. package/dist/src/security/index.js +12 -2
  512. package/dist/src/security/index.js.map +1 -0
  513. package/dist/src/security/mfa-approval.d.ts +219 -0
  514. package/dist/src/security/mfa-approval.d.ts.map +1 -0
  515. package/dist/src/security/mfa-approval.js +668 -0
  516. package/dist/src/security/mfa-approval.js.map +1 -0
  517. package/dist/src/security/multisig.d.ts.map +1 -0
  518. package/dist/src/security/multisig.js.map +1 -0
  519. package/dist/src/security/totp.d.ts +67 -0
  520. package/dist/src/security/totp.d.ts.map +1 -0
  521. package/dist/src/security/totp.js +148 -0
  522. package/dist/src/security/totp.js.map +1 -0
  523. package/dist/src/security/types.d.ts +7 -2
  524. package/dist/src/security/types.d.ts.map +1 -0
  525. package/dist/src/security/types.js +14 -14
  526. package/dist/src/security/types.js.map +1 -0
  527. package/dist/src/security/vetkeys.d.ts +43 -0
  528. package/dist/src/security/vetkeys.d.ts.map +1 -0
  529. package/dist/src/security/vetkeys.js +144 -15
  530. package/dist/src/security/vetkeys.js.map +1 -0
  531. package/dist/src/security/webauthn.d.ts +127 -0
  532. package/dist/src/security/webauthn.d.ts.map +1 -0
  533. package/dist/src/security/webauthn.js +246 -0
  534. package/dist/src/security/webauthn.js.map +1 -0
  535. package/dist/src/testing/index.d.ts.map +1 -0
  536. package/dist/src/testing/index.js.map +1 -0
  537. package/dist/src/testing/local-runner.d.ts.map +1 -0
  538. package/dist/src/testing/local-runner.js.map +1 -0
  539. package/dist/src/testing/types.d.ts.map +1 -0
  540. package/dist/src/testing/types.js.map +1 -0
  541. package/dist/src/trading/api-key-manager.d.ts +96 -0
  542. package/dist/src/trading/api-key-manager.d.ts.map +1 -0
  543. package/dist/src/trading/api-key-manager.js +201 -0
  544. package/dist/src/trading/api-key-manager.js.map +1 -0
  545. package/dist/src/trading/consensus.d.ts +171 -0
  546. package/dist/src/trading/consensus.d.ts.map +1 -0
  547. package/dist/src/trading/consensus.js +291 -0
  548. package/dist/src/trading/consensus.js.map +1 -0
  549. package/dist/src/trading/index.d.ts +19 -0
  550. package/dist/src/trading/index.d.ts.map +1 -0
  551. package/dist/src/trading/index.js +15 -0
  552. package/dist/src/trading/index.js.map +1 -0
  553. package/dist/src/trading/ip-whitelist.d.ts +70 -0
  554. package/dist/src/trading/ip-whitelist.d.ts.map +1 -0
  555. package/dist/src/trading/ip-whitelist.js +239 -0
  556. package/dist/src/trading/ip-whitelist.js.map +1 -0
  557. package/dist/src/trading/skill-sandbox.d.ts +88 -0
  558. package/dist/src/trading/skill-sandbox.d.ts.map +1 -0
  559. package/dist/src/trading/skill-sandbox.js +175 -0
  560. package/dist/src/trading/skill-sandbox.js.map +1 -0
  561. package/dist/src/utils/path-validation.d.ts +34 -0
  562. package/dist/src/utils/path-validation.d.ts.map +1 -0
  563. package/dist/src/utils/path-validation.js +88 -0
  564. package/dist/src/utils/path-validation.js.map +1 -0
  565. package/dist/src/vault/bitwarden.d.ts +51 -0
  566. package/dist/src/vault/bitwarden.d.ts.map +1 -0
  567. package/dist/src/vault/bitwarden.js +172 -0
  568. package/dist/src/vault/bitwarden.js.map +1 -0
  569. package/dist/src/vault/client.d.ts +44 -0
  570. package/dist/src/vault/client.d.ts.map +1 -0
  571. package/dist/src/vault/client.js +523 -0
  572. package/dist/src/vault/client.js.map +1 -0
  573. package/dist/src/vault/config.d.ts +68 -0
  574. package/dist/src/vault/config.d.ts.map +1 -0
  575. package/dist/src/vault/config.js +265 -0
  576. package/dist/src/vault/config.js.map +1 -0
  577. package/dist/src/vault/encrypted-memory-store.d.ts +80 -0
  578. package/dist/src/vault/encrypted-memory-store.d.ts.map +1 -0
  579. package/dist/src/vault/encrypted-memory-store.js +175 -0
  580. package/dist/src/vault/encrypted-memory-store.js.map +1 -0
  581. package/dist/src/vault/hashicorp-provider.d.ts +22 -0
  582. package/dist/src/vault/hashicorp-provider.d.ts.map +1 -0
  583. package/dist/src/vault/hashicorp-provider.js +63 -0
  584. package/dist/src/vault/hashicorp-provider.js.map +1 -0
  585. package/dist/src/vault/index.d.ts +40 -0
  586. package/dist/src/vault/index.d.ts.map +1 -0
  587. package/dist/src/vault/index.js +38 -0
  588. package/dist/src/vault/index.js.map +1 -0
  589. package/dist/src/vault/memory-provider.d.ts +26 -0
  590. package/dist/src/vault/memory-provider.d.ts.map +1 -0
  591. package/dist/src/vault/memory-provider.js +42 -0
  592. package/dist/src/vault/memory-provider.js.map +1 -0
  593. package/dist/src/vault/provider.d.ts +68 -0
  594. package/dist/src/vault/provider.d.ts.map +1 -0
  595. package/dist/src/vault/provider.js +50 -0
  596. package/dist/src/vault/provider.js.map +1 -0
  597. package/dist/src/vault/safehouse-types.d.ts +204 -0
  598. package/dist/src/vault/safehouse-types.d.ts.map +1 -0
  599. package/dist/src/vault/safehouse-types.js +9 -0
  600. package/dist/src/vault/safehouse-types.js.map +1 -0
  601. package/dist/src/vault/secret-audit.d.ts +91 -0
  602. package/dist/src/vault/secret-audit.d.ts.map +1 -0
  603. package/dist/src/vault/secret-audit.js +224 -0
  604. package/dist/src/vault/secret-audit.js.map +1 -0
  605. package/dist/src/vault/secret-injector.d.ts +62 -0
  606. package/dist/src/vault/secret-injector.d.ts.map +1 -0
  607. package/dist/src/vault/secret-injector.js +237 -0
  608. package/dist/src/vault/secret-injector.js.map +1 -0
  609. package/dist/src/vault/secret-leak-detector.d.ts +94 -0
  610. package/dist/src/vault/secret-leak-detector.d.ts.map +1 -0
  611. package/dist/src/vault/secret-leak-detector.js +218 -0
  612. package/dist/src/vault/secret-leak-detector.js.map +1 -0
  613. package/dist/src/vault/secret-management-layer.d.ts +139 -0
  614. package/dist/src/vault/secret-management-layer.d.ts.map +1 -0
  615. package/dist/src/vault/secret-management-layer.js +366 -0
  616. package/dist/src/vault/secret-management-layer.js.map +1 -0
  617. package/dist/src/vault/secret-rotation.d.ts +54 -0
  618. package/dist/src/vault/secret-rotation.d.ts.map +1 -0
  619. package/dist/src/vault/secret-rotation.js +156 -0
  620. package/dist/src/vault/secret-rotation.js.map +1 -0
  621. package/dist/src/vault/secret-sandbox.d.ts +94 -0
  622. package/dist/src/vault/secret-sandbox.d.ts.map +1 -0
  623. package/dist/src/vault/secret-sandbox.js +232 -0
  624. package/dist/src/vault/secret-sandbox.js.map +1 -0
  625. package/dist/src/vault/types.d.ts +148 -0
  626. package/dist/src/vault/types.d.ts.map +1 -0
  627. package/dist/src/vault/types.js +7 -0
  628. package/dist/src/vault/types.js.map +1 -0
  629. package/dist/src/wallet/cbor-serializer.d.ts.map +1 -0
  630. package/dist/src/wallet/cbor-serializer.js +7 -2
  631. package/dist/src/wallet/cbor-serializer.js.map +1 -0
  632. package/dist/src/wallet/chain-dispatcher.d.ts +1 -1
  633. package/dist/src/wallet/chain-dispatcher.d.ts.map +1 -0
  634. package/dist/src/wallet/chain-dispatcher.js +8 -19
  635. package/dist/src/wallet/chain-dispatcher.js.map +1 -0
  636. package/dist/src/wallet/cross-chain-aggregator.d.ts.map +1 -0
  637. package/dist/src/wallet/cross-chain-aggregator.js.map +1 -0
  638. package/dist/src/wallet/hsm/index.d.ts +39 -0
  639. package/dist/src/wallet/hsm/index.d.ts.map +1 -0
  640. package/dist/src/wallet/hsm/index.js +60 -0
  641. package/dist/src/wallet/hsm/index.js.map +1 -0
  642. package/dist/src/wallet/hsm/ledger-provider.d.ts +75 -0
  643. package/dist/src/wallet/hsm/ledger-provider.d.ts.map +1 -0
  644. package/dist/src/wallet/hsm/ledger-provider.js +272 -0
  645. package/dist/src/wallet/hsm/ledger-provider.js.map +1 -0
  646. package/dist/src/wallet/hsm/sgx-provider.d.ts +83 -0
  647. package/dist/src/wallet/hsm/sgx-provider.d.ts.map +1 -0
  648. package/dist/src/wallet/hsm/sgx-provider.js +281 -0
  649. package/dist/src/wallet/hsm/sgx-provider.js.map +1 -0
  650. package/dist/src/wallet/hsm/types.d.ts +134 -0
  651. package/dist/src/wallet/hsm/types.d.ts.map +1 -0
  652. package/dist/src/wallet/hsm/types.js +46 -0
  653. package/dist/src/wallet/hsm/types.js.map +1 -0
  654. package/dist/src/wallet/index.d.ts +8 -2
  655. package/dist/src/wallet/index.d.ts.map +1 -0
  656. package/dist/src/wallet/index.js +9 -2
  657. package/dist/src/wallet/index.js.map +1 -0
  658. package/dist/src/wallet/key-derivation.d.ts +29 -1
  659. package/dist/src/wallet/key-derivation.d.ts.map +1 -0
  660. package/dist/src/wallet/key-derivation.js +106 -23
  661. package/dist/src/wallet/key-derivation.js.map +1 -0
  662. package/dist/src/wallet/providers/arweave-provider.d.ts +34 -0
  663. package/dist/src/wallet/providers/arweave-provider.d.ts.map +1 -0
  664. package/dist/src/wallet/providers/arweave-provider.js +126 -0
  665. package/dist/src/wallet/providers/arweave-provider.js.map +1 -0
  666. package/dist/src/wallet/providers/base-provider.d.ts.map +1 -0
  667. package/dist/src/wallet/providers/base-provider.js.map +1 -0
  668. package/dist/src/wallet/providers/cketh-provider.d.ts.map +1 -0
  669. package/dist/src/wallet/providers/cketh-provider.js.map +1 -0
  670. package/dist/src/wallet/providers/icp-provider.d.ts +34 -0
  671. package/dist/src/wallet/providers/icp-provider.d.ts.map +1 -0
  672. package/dist/src/wallet/providers/icp-provider.js +114 -0
  673. package/dist/src/wallet/providers/icp-provider.js.map +1 -0
  674. package/dist/src/wallet/providers/polkadot-provider.d.ts.map +1 -0
  675. package/dist/src/wallet/providers/polkadot-provider.js +5 -6
  676. package/dist/src/wallet/providers/polkadot-provider.js.map +1 -0
  677. package/dist/src/wallet/providers/provider-factory.d.ts +23 -0
  678. package/dist/src/wallet/providers/provider-factory.d.ts.map +1 -0
  679. package/dist/src/wallet/providers/provider-factory.js +74 -0
  680. package/dist/src/wallet/providers/provider-factory.js.map +1 -0
  681. package/dist/src/wallet/providers/solana-provider.d.ts.map +1 -0
  682. package/dist/src/wallet/providers/solana-provider.js +6 -7
  683. package/dist/src/wallet/providers/solana-provider.js.map +1 -0
  684. package/dist/src/wallet/secure-wallet.d.ts +132 -0
  685. package/dist/src/wallet/secure-wallet.d.ts.map +1 -0
  686. package/dist/src/wallet/secure-wallet.js +298 -0
  687. package/dist/src/wallet/secure-wallet.js.map +1 -0
  688. package/dist/src/wallet/transaction-queue.d.ts.map +1 -0
  689. package/dist/src/wallet/transaction-queue.js.map +1 -0
  690. package/dist/src/wallet/types.d.ts +57 -2
  691. package/dist/src/wallet/types.d.ts.map +1 -0
  692. package/dist/src/wallet/types.js.map +1 -0
  693. package/dist/src/wallet/vetkeys-adapter.d.ts.map +1 -0
  694. package/dist/src/wallet/vetkeys-adapter.js +16 -25
  695. package/dist/src/wallet/vetkeys-adapter.js.map +1 -0
  696. package/dist/src/wallet/wallet-crypto.d.ts +101 -0
  697. package/dist/src/wallet/wallet-crypto.d.ts.map +1 -0
  698. package/dist/src/wallet/wallet-crypto.js +185 -0
  699. package/dist/src/wallet/wallet-crypto.js.map +1 -0
  700. package/dist/src/wallet/wallet-manager.d.ts +24 -4
  701. package/dist/src/wallet/wallet-manager.d.ts.map +1 -0
  702. package/dist/src/wallet/wallet-manager.js +70 -3
  703. package/dist/src/wallet/wallet-manager.js.map +1 -0
  704. package/dist/src/wallet/wallet-storage.d.ts +15 -7
  705. package/dist/src/wallet/wallet-storage.d.ts.map +1 -0
  706. package/dist/src/wallet/wallet-storage.js +34 -18
  707. package/dist/src/wallet/wallet-storage.js.map +1 -0
  708. package/dist/src/wiki/index.d.ts +30 -0
  709. package/dist/src/wiki/index.d.ts.map +1 -0
  710. package/dist/src/wiki/index.js +30 -0
  711. package/dist/src/wiki/index.js.map +1 -0
  712. package/dist/src/wiki/ingest.d.ts +51 -0
  713. package/dist/src/wiki/ingest.d.ts.map +1 -0
  714. package/dist/src/wiki/ingest.js +197 -0
  715. package/dist/src/wiki/ingest.js.map +1 -0
  716. package/dist/src/wiki/lint.d.ts +43 -0
  717. package/dist/src/wiki/lint.d.ts.map +1 -0
  718. package/dist/src/wiki/lint.js +187 -0
  719. package/dist/src/wiki/lint.js.map +1 -0
  720. package/dist/src/wiki/mcp-tools.d.ts +35 -0
  721. package/dist/src/wiki/mcp-tools.d.ts.map +1 -0
  722. package/dist/src/wiki/mcp-tools.js +353 -0
  723. package/dist/src/wiki/mcp-tools.js.map +1 -0
  724. package/dist/src/wiki/query.d.ts +38 -0
  725. package/dist/src/wiki/query.d.ts.map +1 -0
  726. package/dist/src/wiki/query.js +117 -0
  727. package/dist/src/wiki/query.js.map +1 -0
  728. package/dist/src/wiki/wiki-store.d.ts +53 -0
  729. package/dist/src/wiki/wiki-store.d.ts.map +1 -0
  730. package/dist/src/wiki/wiki-store.js +132 -0
  731. package/dist/src/wiki/wiki-store.js.map +1 -0
  732. package/package.json +35 -11
  733. package/.claude/settings.local.json +0 -9
  734. package/.dfx/local/network-id +0 -4
  735. package/.next/trace +0 -2
  736. package/.vercel/README.txt +0 -11
  737. package/.vercel/project.json +0 -1
  738. package/AGENTS.md +0 -43
  739. package/PLAN_VAULT_INTEGRATION.md +0 -318
  740. package/dist/vitest.config.d.ts +0 -3
  741. package/dist/vitest.config.js +0 -14
  742. package/fixup_1_0_OSS_release.md +0 -136
  743. package/fixup_REALEASE_PRD.md +0 -136
  744. package/macos-wallet-app/AgentVaultWallet/App/AgentVaultWalletApp.swift +0 -54
  745. package/macos-wallet-app/AgentVaultWallet/Models/AppState.swift +0 -102
  746. package/macos-wallet-app/AgentVaultWallet/Models/Chain.swift +0 -121
  747. package/macos-wallet-app/AgentVaultWallet/Models/Wallet.swift +0 -98
  748. package/macos-wallet-app/AgentVaultWallet/Resources/AgentVaultWallet.entitlements +0 -27
  749. package/macos-wallet-app/AgentVaultWallet/Resources/Info.plist +0 -69
  750. package/macos-wallet-app/AgentVaultWallet/Services/BackupService.swift +0 -270
  751. package/macos-wallet-app/AgentVaultWallet/Services/CLIBridge.swift +0 -367
  752. package/macos-wallet-app/AgentVaultWallet/Services/CryptoService.swift +0 -157
  753. package/macos-wallet-app/AgentVaultWallet/Services/FileService.swift +0 -120
  754. package/macos-wallet-app/AgentVaultWallet/Services/KeychainService.swift +0 -219
  755. package/macos-wallet-app/AgentVaultWallet/Utilities/Constants.swift +0 -44
  756. package/macos-wallet-app/AgentVaultWallet/Utilities/Extensions.swift +0 -115
  757. package/macos-wallet-app/AgentVaultWallet/ViewModels/BackupViewModel.swift +0 -237
  758. package/macos-wallet-app/AgentVaultWallet/ViewModels/CreateWalletViewModel.swift +0 -137
  759. package/macos-wallet-app/AgentVaultWallet/ViewModels/ImportWalletViewModel.swift +0 -179
  760. package/macos-wallet-app/AgentVaultWallet/ViewModels/WalletStore.swift +0 -286
  761. package/macos-wallet-app/AgentVaultWallet/Views/Backup/BackupView.swift +0 -235
  762. package/macos-wallet-app/AgentVaultWallet/Views/Backup/RestoreView.swift +0 -316
  763. package/macos-wallet-app/AgentVaultWallet/Views/Create/CreateWalletFlow.swift +0 -438
  764. package/macos-wallet-app/AgentVaultWallet/Views/Import/ImportWalletFlow.swift +0 -399
  765. package/macos-wallet-app/AgentVaultWallet/Views/MainView.swift +0 -134
  766. package/macos-wallet-app/AgentVaultWallet/Views/Settings/SettingsView.swift +0 -276
  767. package/macos-wallet-app/AgentVaultWallet/Views/Sidebar/SidebarView.swift +0 -133
  768. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/DashboardView.swift +0 -233
  769. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletDetailView.swift +0 -281
  770. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletListView.swift +0 -280
  771. package/macos-wallet-app/AgentVaultWallet/Views/Welcome/WelcomeView.swift +0 -176
  772. package/macos-wallet-app/Makefile +0 -47
  773. package/macos-wallet-app/project.yml +0 -40
  774. package/macos-wallet-app/setup.sh +0 -73
  775. package/pnpm-workspace.yaml +0 -5
  776. package/vercel.json +0 -8
@@ -0,0 +1,668 @@
1
+ /**
2
+ * Multi-Factor Agent Approval (human-approve protocol)
3
+ *
4
+ * Five-layer defence for every agent approval request:
5
+ *
6
+ * 1. TOTP + nonce chain
7
+ * The agent generates its own TOTP seed once per branch (never transmitted).
8
+ * Each challenge carries:
9
+ * • currentNonce — monotonically incrementing counter (single-use)
10
+ * • challengeHash — SHA-256(nonce ‖ branchId ‖ timestamp)
11
+ * The approver replies: "APPROVE <TOTP-code> <nonce>"
12
+ * The agent verifies the code against the stored seed and checks the nonce.
13
+ * Replay protection: nonce is written to a used-set immediately after success.
14
+ *
15
+ * 2. Biometric fallback (WebAuthn / Secure Enclave)
16
+ * When TOTP is unavailable, the approver signs the challengeHash with a
17
+ * device-bound P-256 key (simulating iOS Face ID / Android fingerprint).
18
+ * The private key never leaves the local Secure Enclave equivalent; only
19
+ * the ECDSA signature is transmitted. Verified against the enrolled public key.
20
+ *
21
+ * 3. One-time link (60 s)
22
+ * Each challenge also generates a short-lived URL:
23
+ * https://agentvault.approve/<requestId>?token=<hex>
24
+ * Token = HMAC-SHA256(requestId ‖ nonce ‖ expiresAt, linkSigningKey)
25
+ * The link dies on first use or after 60 seconds — whichever comes first.
26
+ *
27
+ * 4. Rate limiting
28
+ * Max 3 successful approvals per signer per rolling hour.
29
+ * Excess attempts are rejected and logged.
30
+ *
31
+ * 5. Anomaly detection
32
+ * Each approver device has a fingerprint = SHA-256(hostname ‖ platform ‖ arch)[:16].
33
+ * First approval from a new fingerprint for a known signer triggers:
34
+ * • branch auto-lock
35
+ * • anomaly-detected audit entry
36
+ * • "Was this you?" ping flag stored in the audit entry (detail field)
37
+ * The operator must call unlockBranch() with a fresh TOTP code to resume.
38
+ * Replying YES via TOTP to the anomaly ping registers the device as trusted.
39
+ *
40
+ * 6. Audit log (local + ICP)
41
+ * Every event (setup, challenge, approve, reject, anomaly, lock) is appended to
42
+ * ~/.agentvault/mfa/audit-<branchId>.yaml for local forensics AND submitted
43
+ * asynchronously to the ICP canister for tamper-evident on-chain storage.
44
+ * The verifyMfaApproval() return value includes an auditToken
45
+ * (HMAC over the approval payload) suitable for on-chain verification.
46
+ */
47
+ import fs from 'node:fs';
48
+ import path from 'node:path';
49
+ import os from 'node:os';
50
+ import crypto from 'node:crypto';
51
+ import { parse, stringify } from 'yaml';
52
+ import { generateTotpSecret, base32Encode, base32Decode, verifyTotp, otpAuthUri, } from './totp.js';
53
+ import { verifyWebAuthnAssertion, getDevicePublicKey, getSignCounter, } from './webauthn.js';
54
+ import { submitIcpAuditEntry } from './icp-audit.js';
55
+ // ─── Directory paths ─────────────────────────────────────────────────────────
56
+ const MFA_DIR = path.join(os.homedir(), '.agentvault', 'mfa');
57
+ function ensureMfaDir() {
58
+ fs.mkdirSync(MFA_DIR, { recursive: true });
59
+ }
60
+ // ─── File helpers ─────────────────────────────────────────────────────────────
61
+ function stateFile(branchId) {
62
+ return path.join(MFA_DIR, `state-${branchId}.yaml`);
63
+ }
64
+ function auditFile(branchId) {
65
+ return path.join(MFA_DIR, `audit-${branchId}.yaml`);
66
+ }
67
+ function rateLimitFile() {
68
+ return path.join(MFA_DIR, 'rate-limit.yaml');
69
+ }
70
+ function otpLinksFile() {
71
+ return path.join(MFA_DIR, 'otp-links.yaml');
72
+ }
73
+ function deviceRegistryFile() {
74
+ return path.join(MFA_DIR, 'device-registry.yaml');
75
+ }
76
+ function loadState(branchId) {
77
+ const fp = stateFile(branchId);
78
+ if (!fs.existsSync(fp))
79
+ return null;
80
+ return parse(fs.readFileSync(fp, 'utf8'));
81
+ }
82
+ function saveState(state) {
83
+ ensureMfaDir();
84
+ fs.writeFileSync(stateFile(state.branchId), stringify(state), 'utf8');
85
+ }
86
+ function loadRateLimit() {
87
+ const fp = rateLimitFile();
88
+ if (!fs.existsSync(fp))
89
+ return { windows: {} };
90
+ return parse(fs.readFileSync(fp, 'utf8'));
91
+ }
92
+ function saveRateLimit(rl) {
93
+ ensureMfaDir();
94
+ fs.writeFileSync(rateLimitFile(), stringify(rl), 'utf8');
95
+ }
96
+ function loadOtpLinks() {
97
+ const fp = otpLinksFile();
98
+ if (!fs.existsSync(fp))
99
+ return {};
100
+ return parse(fs.readFileSync(fp, 'utf8'));
101
+ }
102
+ function saveOtpLinks(links) {
103
+ ensureMfaDir();
104
+ fs.writeFileSync(otpLinksFile(), stringify(links), 'utf8');
105
+ }
106
+ function loadDeviceRegistry() {
107
+ const fp = deviceRegistryFile();
108
+ if (!fs.existsSync(fp))
109
+ return { known: {} };
110
+ return parse(fs.readFileSync(fp, 'utf8'));
111
+ }
112
+ function saveDeviceRegistry(reg) {
113
+ ensureMfaDir();
114
+ fs.writeFileSync(deviceRegistryFile(), stringify(reg), 'utf8');
115
+ }
116
+ // ─── Audit log ────────────────────────────────────────────────────────────────
117
+ function makeAuditId() {
118
+ return `aud-${Date.now()}-${crypto.randomBytes(3).toString('hex')}`;
119
+ }
120
+ function appendAuditEntry(entry) {
121
+ ensureMfaDir();
122
+ const fp = auditFile(entry.branchId);
123
+ let log = [];
124
+ if (fs.existsSync(fp)) {
125
+ log = parse(fs.readFileSync(fp, 'utf8'));
126
+ }
127
+ log.push(entry);
128
+ fs.writeFileSync(fp, stringify(log), 'utf8');
129
+ // Async fire-and-forget to ICP — never blocks the local flow.
130
+ // Failures are queued locally and retried on the next flush.
131
+ submitIcpAuditEntry(entry).catch(() => {
132
+ // Silently queued — getIcpQueueDepth() shows pending count.
133
+ });
134
+ }
135
+ // ─── Challenge hash ───────────────────────────────────────────────────────────
136
+ function computeChallengeHash(nonce, branchId, timestamp) {
137
+ return crypto
138
+ .createHash('sha256')
139
+ .update(`${nonce}:${branchId}:${timestamp}`)
140
+ .digest('hex');
141
+ }
142
+ // ─── One-time links ───────────────────────────────────────────────────────────
143
+ const LINK_TTL_MS = 60_000; // 60 seconds
144
+ /**
145
+ * Derive a per-branch link-signing key from the TOTP secret.
146
+ * This key is never stored on disk — it is re-derived on every call.
147
+ */
148
+ function linkSigningKey(branchId) {
149
+ const state = loadState(branchId);
150
+ if (!state)
151
+ throw new Error(`MFA not configured for branch: ${branchId}`);
152
+ const totpBuf = base32Decode(state.totpSecretB32);
153
+ return crypto.createHmac('sha256', totpBuf).update('agentvault:link-signing:v1').digest();
154
+ }
155
+ function generateOtpToken(requestId, branchId, nonce) {
156
+ const key = linkSigningKey(branchId);
157
+ const expiresAt = new Date(Date.now() + LINK_TTL_MS).toISOString();
158
+ const payload = `${requestId}:${nonce}:${expiresAt}`;
159
+ const token = crypto.createHmac('sha256', key).update(payload).digest('hex');
160
+ // Persist the link so we can validate it later
161
+ const links = loadOtpLinks();
162
+ links[token] = { requestId, expiresAt, used: false };
163
+ saveOtpLinks(links);
164
+ return token;
165
+ }
166
+ /**
167
+ * Validate a one-time approval link token.
168
+ * Returns the associated requestId on success, or an error reason.
169
+ */
170
+ export function validateOtpToken(token) {
171
+ const links = loadOtpLinks();
172
+ const link = links[token];
173
+ if (!link)
174
+ return { ok: false, reason: 'token-not-found' };
175
+ if (link.used)
176
+ return { ok: false, reason: 'token-already-used' };
177
+ if (new Date() > new Date(link.expiresAt))
178
+ return { ok: false, reason: 'token-expired' };
179
+ // Mark consumed
180
+ link.used = true;
181
+ saveOtpLinks(links);
182
+ return { ok: true, requestId: link.requestId };
183
+ }
184
+ // ─── Rate limiting ────────────────────────────────────────────────────────────
185
+ const RATE_WINDOW_MS = 60 * 60 * 1000; // 1 hour
186
+ const RATE_MAX = 3; // approvals per window
187
+ /**
188
+ * Record an approval attempt and return false if the signer is rate-limited.
189
+ * The timestamp is recorded only when true is returned (i.e. the attempt counts).
190
+ */
191
+ function checkAndRecordRateLimit(signer) {
192
+ const rl = loadRateLimit();
193
+ const now = Date.now();
194
+ const windowStart = now - RATE_WINDOW_MS;
195
+ // Prune events outside the rolling window
196
+ const events = (rl.windows[signer] ?? []).filter((ts) => new Date(ts).getTime() > windowStart);
197
+ if (events.length >= RATE_MAX) {
198
+ saveRateLimit(rl); // persist pruned list even on rejection
199
+ return false;
200
+ }
201
+ events.push(new Date().toISOString());
202
+ rl.windows[signer] = events;
203
+ saveRateLimit(rl);
204
+ return true;
205
+ }
206
+ // ─── Anomaly detection ────────────────────────────────────────────────────────
207
+ /**
208
+ * Compute the device fingerprint for the current machine.
209
+ * Uses hostname + OS platform + CPU architecture, hashed to a short hex token.
210
+ */
211
+ export function getDeviceFingerprint() {
212
+ return crypto
213
+ .createHash('sha256')
214
+ .update(`${os.hostname()}:${os.platform()}:${os.arch()}`)
215
+ .digest('hex')
216
+ .slice(0, 16);
217
+ }
218
+ function checkDevice(signer, fingerprint) {
219
+ const reg = loadDeviceRegistry();
220
+ const known = reg.known[signer] ?? [];
221
+ if (known.length === 0) {
222
+ // First approval ever from this signer — enrol the device automatically
223
+ reg.known[signer] = [fingerprint];
224
+ saveDeviceRegistry(reg);
225
+ return 'first-time';
226
+ }
227
+ return known.includes(fingerprint) ? 'known' : 'new-device';
228
+ }
229
+ /**
230
+ * Explicitly register a device fingerprint for a signer.
231
+ * Call this after the operator has confirmed a new-device alert via secondary TOTP.
232
+ */
233
+ export function registerDevice(signer, fingerprint) {
234
+ const reg = loadDeviceRegistry();
235
+ const known = reg.known[signer] ?? [];
236
+ if (!known.includes(fingerprint)) {
237
+ reg.known[signer] = [...known, fingerprint];
238
+ saveDeviceRegistry(reg);
239
+ }
240
+ }
241
+ // ─── Public API ───────────────────────────────────────────────────────────────
242
+ /**
243
+ * Initialise MFA for a branch.
244
+ *
245
+ * Generates a fresh 20-byte TOTP secret, stores it encrypted on disk,
246
+ * and returns the otpauth:// URI to be scanned once by the approver.
247
+ *
248
+ * @param branchId - Unique branch / workflow identifier (e.g. "pending-001")
249
+ */
250
+ export function setupMfa(branchId) {
251
+ ensureMfaDir();
252
+ const secret = generateTotpSecret();
253
+ const secretB32 = base32Encode(secret);
254
+ const uri = otpAuthUri(secret, `AgentVault:${branchId}`);
255
+ const now = new Date().toISOString();
256
+ const state = {
257
+ branchId,
258
+ totpSecretB32: secretB32,
259
+ currentNonce: 0,
260
+ usedNonces: [],
261
+ locked: false,
262
+ createdAt: now,
263
+ updatedAt: now,
264
+ };
265
+ saveState(state);
266
+ appendAuditEntry({
267
+ id: makeAuditId(),
268
+ requestId: 'setup',
269
+ branchId,
270
+ event: 'setup',
271
+ timestamp: now,
272
+ detail: 'TOTP seed generated — enrol in authenticator app using the otpauth URI',
273
+ });
274
+ return { branchId, totpSecretB32: secretB32, otpAuthUri: uri, createdAt: now };
275
+ }
276
+ /**
277
+ * Issue a challenge for a pending approval request.
278
+ *
279
+ * Increments the branch nonce, computes the challenge hash, and generates
280
+ * a 60-second one-time approval link. The approver must reply with:
281
+ * APPROVE <TOTP-code> <nonce>
282
+ *
283
+ * @param requestId - Approval request identifier (e.g. "pending-001")
284
+ * @param branchId - Branch that owns the TOTP seed
285
+ */
286
+ export function issueChallenge(requestId, branchId) {
287
+ const state = loadState(branchId);
288
+ if (!state) {
289
+ throw new Error(`MFA not configured for branch '${branchId}'. Run: agentvault approve mfa setup --branch ${branchId}`);
290
+ }
291
+ if (state.locked) {
292
+ throw new Error(`Branch '${branchId}' is locked due to a security anomaly. ` +
293
+ `Investigate, then run: agentvault approve mfa unlock --branch ${branchId}`);
294
+ }
295
+ // Monotonically increment nonce
296
+ state.currentNonce += 1;
297
+ state.updatedAt = new Date().toISOString();
298
+ saveState(state);
299
+ const nonce = state.currentNonce;
300
+ const timestamp = new Date().toISOString();
301
+ const challengeHash = computeChallengeHash(nonce, branchId, timestamp);
302
+ const token = generateOtpToken(requestId, branchId, nonce);
303
+ const expiresAt = new Date(Date.now() + LINK_TTL_MS).toISOString();
304
+ appendAuditEntry({
305
+ id: makeAuditId(),
306
+ requestId,
307
+ branchId,
308
+ event: 'challenge-issued',
309
+ nonce,
310
+ challengeHash,
311
+ timestamp,
312
+ detail: `One-time link expires at ${expiresAt}`,
313
+ });
314
+ return {
315
+ requestId,
316
+ branchId,
317
+ nonce,
318
+ timestamp,
319
+ challengeHash,
320
+ approvalLink: `https://agentvault.approve/${requestId}?token=${token}`,
321
+ expiresAt,
322
+ };
323
+ }
324
+ /**
325
+ * Verify a TOTP code + nonce submitted by the approver.
326
+ *
327
+ * Runs all five security layers in order:
328
+ * 1. MFA setup / branch-lock check
329
+ * 2. Nonce match + replay detection
330
+ * 3. TOTP verification (±1 window for clock drift)
331
+ * 4. Rate-limit check (3 / hour)
332
+ * 5. Device-fingerprint anomaly detection
333
+ *
334
+ * On success, marks the nonce as consumed, appends an audit entry,
335
+ * and returns a cryptographic auditToken suitable for on-chain logging.
336
+ */
337
+ export function verifyMfaApproval(input) {
338
+ const { requestId, branchId, totpCode, nonce } = input;
339
+ const fingerprint = input.deviceFingerprint ?? getDeviceFingerprint();
340
+ const now = new Date().toISOString();
341
+ // ── Layer 1: setup / lock check ──────────────────────────────────────────
342
+ const state = loadState(branchId);
343
+ if (!state) {
344
+ return { ok: false, reason: 'not-setup' };
345
+ }
346
+ if (state.locked) {
347
+ appendAuditEntry({
348
+ id: makeAuditId(),
349
+ requestId,
350
+ branchId,
351
+ event: 'rejected',
352
+ nonce,
353
+ timestamp: now,
354
+ detail: 'Branch is locked — approval blocked',
355
+ deviceFingerprint: fingerprint,
356
+ });
357
+ return { ok: false, reason: 'branch-locked' };
358
+ }
359
+ // ── Layer 2: nonce match ──────────────────────────────────────────────────
360
+ if (nonce !== state.currentNonce) {
361
+ appendAuditEntry({
362
+ id: makeAuditId(),
363
+ requestId,
364
+ branchId,
365
+ event: 'rejected',
366
+ nonce,
367
+ timestamp: now,
368
+ detail: `Nonce mismatch — expected ${state.currentNonce}, got ${nonce}`,
369
+ deviceFingerprint: fingerprint,
370
+ });
371
+ return { ok: false, reason: 'nonce-mismatch' };
372
+ }
373
+ // ── Layer 2b: replay detection ────────────────────────────────────────────
374
+ if (state.usedNonces.includes(nonce)) {
375
+ appendAuditEntry({
376
+ id: makeAuditId(),
377
+ requestId,
378
+ branchId,
379
+ event: 'rejected',
380
+ nonce,
381
+ timestamp: now,
382
+ detail: 'Nonce already consumed — replay attempt blocked',
383
+ deviceFingerprint: fingerprint,
384
+ });
385
+ return { ok: false, reason: 'nonce-replayed' };
386
+ }
387
+ // ── Layer 3: TOTP verification ────────────────────────────────────────────
388
+ const secret = base32Decode(state.totpSecretB32);
389
+ if (!verifyTotp(secret, totpCode)) {
390
+ appendAuditEntry({
391
+ id: makeAuditId(),
392
+ requestId,
393
+ branchId,
394
+ event: 'rejected',
395
+ nonce,
396
+ timestamp: now,
397
+ detail: 'TOTP code invalid',
398
+ deviceFingerprint: fingerprint,
399
+ });
400
+ return { ok: false, reason: 'invalid-totp' };
401
+ }
402
+ // ── Layer 4: rate limiting ────────────────────────────────────────────────
403
+ if (!checkAndRecordRateLimit(fingerprint)) {
404
+ appendAuditEntry({
405
+ id: makeAuditId(),
406
+ requestId,
407
+ branchId,
408
+ event: 'rate-limit-exceeded',
409
+ nonce,
410
+ timestamp: now,
411
+ detail: `Device ${fingerprint} exceeded ${RATE_MAX} approvals / hour`,
412
+ deviceFingerprint: fingerprint,
413
+ });
414
+ return { ok: false, reason: 'rate-limited' };
415
+ }
416
+ // ── Layer 5: anomaly detection ────────────────────────────────────────────
417
+ // Use branchId as the stable identity key: tracks which devices have ever
418
+ // successfully approved requests for this branch.
419
+ const deviceCheck = checkDevice(branchId, fingerprint);
420
+ if (deviceCheck === 'new-device') {
421
+ // Auto-lock the branch and demand secondary confirmation
422
+ state.locked = true;
423
+ state.pendingAnomalyFingerprint = fingerprint;
424
+ state.updatedAt = new Date().toISOString();
425
+ saveState(state);
426
+ appendAuditEntry({
427
+ id: makeAuditId(),
428
+ requestId,
429
+ branchId,
430
+ event: 'anomaly-detected',
431
+ nonce,
432
+ timestamp: now,
433
+ detail: `Unknown device fingerprint ${fingerprint} — was this you? Reply YES via TOTP to agentvault approve mfa unlock --branch ${branchId} --register-device ${fingerprint}`,
434
+ deviceFingerprint: fingerprint,
435
+ });
436
+ appendAuditEntry({
437
+ id: makeAuditId(),
438
+ requestId,
439
+ branchId,
440
+ event: 'anomaly-ping-sent',
441
+ timestamp: now,
442
+ detail: `Branch auto-locked. Operator notified: run 'agentvault approve mfa unlock --branch ${branchId} --totp <code> --register-device ${fingerprint}' to confirm and re-register, or leave unregistered to deny.`,
443
+ deviceFingerprint: fingerprint,
444
+ });
445
+ appendAuditEntry({
446
+ id: makeAuditId(),
447
+ requestId,
448
+ branchId,
449
+ event: 'branch-locked',
450
+ timestamp: now,
451
+ detail: 'Auto-locked after anomaly. Confirm via secondary TOTP then call unlockBranch().',
452
+ deviceFingerprint: fingerprint,
453
+ });
454
+ return { ok: false, reason: 'anomaly' };
455
+ }
456
+ // ── All layers passed — commit the approval ───────────────────────────────
457
+ // Consume the nonce (replay guard)
458
+ state.usedNonces.push(nonce);
459
+ state.updatedAt = now;
460
+ saveState(state);
461
+ // Compute an HMAC-based audit token over the approval payload
462
+ const challengeHash = computeChallengeHash(nonce, branchId, now);
463
+ const auditToken = crypto
464
+ .createHmac('sha256', base32Decode(state.totpSecretB32))
465
+ .update(`${nonce}:${requestId}:${branchId}:${now}`)
466
+ .digest('hex');
467
+ appendAuditEntry({
468
+ id: makeAuditId(),
469
+ requestId,
470
+ branchId,
471
+ event: 'approved',
472
+ nonce,
473
+ challengeHash,
474
+ auditToken,
475
+ timestamp: now,
476
+ detail: `Approved by device ${fingerprint}`,
477
+ deviceFingerprint: fingerprint,
478
+ });
479
+ return { ok: true, auditToken };
480
+ }
481
+ /**
482
+ * Verify a biometric (WebAuthn) assertion instead of a TOTP code.
483
+ *
484
+ * This is the Layer 2 fallback path: used when TOTP is unavailable or the
485
+ * approver's device natively supports WebAuthn (iOS Face ID, Android fingerprint,
486
+ * YubiKey, etc.).
487
+ *
488
+ * The flow:
489
+ * 1. Caller obtains a challengeHash from issueChallenge().
490
+ * 2. Device signs it via signChallenge() (or browser WebAuthn API).
491
+ * 3. This function verifies the ECDSA signature, nonce, rate-limit, and anomaly.
492
+ * 4. On success an auditToken is returned identical to the TOTP path.
493
+ *
494
+ * @param input - { requestId, branchId, challengeHash, assertion, nonce, deviceFingerprint? }
495
+ */
496
+ export function verifyBiometricApproval(input) {
497
+ const { requestId, branchId, challengeHash, assertion, nonce } = input;
498
+ const fingerprint = input.deviceFingerprint ?? getDeviceFingerprint();
499
+ const now = new Date().toISOString();
500
+ // ── Layer 1: setup / lock check ──────────────────────────────────────────
501
+ const state = loadState(branchId);
502
+ if (!state)
503
+ return { ok: false, reason: 'not-setup' };
504
+ if (state.locked) {
505
+ appendAuditEntry({
506
+ id: makeAuditId(), requestId, branchId, event: 'rejected',
507
+ nonce, timestamp: now,
508
+ detail: 'Branch is locked — biometric approval blocked',
509
+ deviceFingerprint: fingerprint,
510
+ });
511
+ return { ok: false, reason: 'branch-locked' };
512
+ }
513
+ // ── Layer 2: nonce match + replay ─────────────────────────────────────────
514
+ if (nonce !== state.currentNonce) {
515
+ appendAuditEntry({
516
+ id: makeAuditId(), requestId, branchId, event: 'rejected',
517
+ nonce, timestamp: now,
518
+ detail: `Nonce mismatch — expected ${state.currentNonce}, got ${nonce}`,
519
+ deviceFingerprint: fingerprint,
520
+ });
521
+ return { ok: false, reason: 'nonce-mismatch' };
522
+ }
523
+ if (state.usedNonces.includes(nonce)) {
524
+ appendAuditEntry({
525
+ id: makeAuditId(), requestId, branchId, event: 'rejected',
526
+ nonce, timestamp: now,
527
+ detail: 'Nonce already consumed — replay attempt blocked',
528
+ deviceFingerprint: fingerprint,
529
+ });
530
+ return { ok: false, reason: 'nonce-replayed' };
531
+ }
532
+ // ── Layer 3: biometric signature verification ─────────────────────────────
533
+ const publicKeyB64 = getDevicePublicKey(fingerprint);
534
+ if (!publicKeyB64) {
535
+ appendAuditEntry({
536
+ id: makeAuditId(), requestId, branchId, event: 'rejected',
537
+ nonce, timestamp: now,
538
+ detail: `No biometric credential enrolled for device ${fingerprint}`,
539
+ deviceFingerprint: fingerprint,
540
+ });
541
+ return { ok: false, reason: 'biometric-not-enrolled' };
542
+ }
543
+ const lastCounter = getSignCounter(fingerprint) - 1; // current stored is already incremented
544
+ const verifyResult = verifyWebAuthnAssertion(assertion, challengeHash, publicKeyB64, lastCounter);
545
+ if (!verifyResult.ok) {
546
+ const reason = verifyResult.reason === 'counter-replay'
547
+ ? 'biometric-counter-replay'
548
+ : 'biometric-signature-invalid';
549
+ appendAuditEntry({
550
+ id: makeAuditId(), requestId, branchId, event: 'rejected',
551
+ nonce, timestamp: now,
552
+ detail: `Biometric verification failed: ${verifyResult.reason}`,
553
+ deviceFingerprint: fingerprint,
554
+ });
555
+ return { ok: false, reason };
556
+ }
557
+ // ── Layer 4: rate limiting ────────────────────────────────────────────────
558
+ if (!checkAndRecordRateLimit(fingerprint)) {
559
+ appendAuditEntry({
560
+ id: makeAuditId(), requestId, branchId,
561
+ event: 'rate-limit-exceeded', nonce, timestamp: now,
562
+ detail: `Device ${fingerprint} exceeded ${RATE_MAX} approvals / hour`,
563
+ deviceFingerprint: fingerprint,
564
+ });
565
+ return { ok: false, reason: 'rate-limited' };
566
+ }
567
+ // ── Layer 5: anomaly detection ────────────────────────────────────────────
568
+ const deviceCheck = checkDevice(branchId, fingerprint);
569
+ if (deviceCheck === 'new-device') {
570
+ state.locked = true;
571
+ state.pendingAnomalyFingerprint = fingerprint;
572
+ state.updatedAt = new Date().toISOString();
573
+ saveState(state);
574
+ appendAuditEntry({
575
+ id: makeAuditId(), requestId, branchId, event: 'anomaly-detected',
576
+ nonce, timestamp: now,
577
+ detail: `Unknown biometric device ${fingerprint} — was this you? Reply YES via TOTP to unlock.`,
578
+ deviceFingerprint: fingerprint,
579
+ });
580
+ appendAuditEntry({
581
+ id: makeAuditId(), requestId, branchId, event: 'branch-locked',
582
+ timestamp: now,
583
+ detail: 'Auto-locked after biometric anomaly.',
584
+ deviceFingerprint: fingerprint,
585
+ });
586
+ return { ok: false, reason: 'anomaly' };
587
+ }
588
+ // ── All layers passed ─────────────────────────────────────────────────────
589
+ state.usedNonces.push(nonce);
590
+ state.updatedAt = now;
591
+ saveState(state);
592
+ const auditToken = crypto
593
+ .createHmac('sha256', base32Decode(state.totpSecretB32))
594
+ .update(`biometric:${nonce}:${requestId}:${branchId}:${now}`)
595
+ .digest('hex');
596
+ appendAuditEntry({
597
+ id: makeAuditId(), requestId, branchId,
598
+ event: 'approved-biometric', nonce, challengeHash,
599
+ auditToken, timestamp: now,
600
+ detail: `Approved via biometric by device ${fingerprint} (signCounter=${assertion.signCounter})`,
601
+ deviceFingerprint: fingerprint,
602
+ });
603
+ return { ok: true, auditToken };
604
+ }
605
+ /**
606
+ * Unlock a branch after an anomaly has been investigated.
607
+ *
608
+ * Requires a valid TOTP code to prevent unauthorised unlocking.
609
+ * Optionally registers the new device fingerprint so future approvals succeed.
610
+ *
611
+ * @param branchId - Branch to unlock
612
+ * @param totpCode - Fresh 6-digit TOTP code from the authenticator app
613
+ * @param newFingerprint - If provided, add this fingerprint to the known-device list
614
+ */
615
+ export function unlockBranch(branchId, totpCode, newFingerprint) {
616
+ const state = loadState(branchId);
617
+ if (!state)
618
+ return false;
619
+ const secret = base32Decode(state.totpSecretB32);
620
+ if (!verifyTotp(secret, totpCode))
621
+ return false;
622
+ state.locked = false;
623
+ state.pendingAnomalyFingerprint = undefined;
624
+ state.updatedAt = new Date().toISOString();
625
+ saveState(state);
626
+ if (newFingerprint) {
627
+ registerDevice(branchId, newFingerprint);
628
+ }
629
+ appendAuditEntry({
630
+ id: makeAuditId(),
631
+ requestId: 'unlock',
632
+ branchId,
633
+ event: 'branch-unlocked',
634
+ timestamp: new Date().toISOString(),
635
+ detail: newFingerprint
636
+ ? `Branch unlocked; device ${newFingerprint} registered as trusted (anomaly confirmed as operator)`
637
+ : 'Branch unlocked after anomaly investigation (new device NOT registered)',
638
+ deviceFingerprint: newFingerprint,
639
+ });
640
+ return true;
641
+ }
642
+ /**
643
+ * Return the complete audit log for a branch.
644
+ * Suitable for piping to the ICP canister or displaying with `approve mfa audit`.
645
+ */
646
+ export function getMfaAuditLog(branchId) {
647
+ const fp = auditFile(branchId);
648
+ if (!fs.existsSync(fp))
649
+ return [];
650
+ return parse(fs.readFileSync(fp, 'utf8'));
651
+ }
652
+ /**
653
+ * Return the current MFA posture for a branch (no secrets exposed).
654
+ */
655
+ export function getMfaStatus(branchId) {
656
+ const state = loadState(branchId);
657
+ if (!state) {
658
+ return { configured: false, locked: false, currentNonce: 0, usedNonceCount: 0 };
659
+ }
660
+ return {
661
+ configured: true,
662
+ locked: state.locked,
663
+ currentNonce: state.currentNonce,
664
+ usedNonceCount: state.usedNonces.length,
665
+ createdAt: state.createdAt,
666
+ };
667
+ }
668
+ //# sourceMappingURL=mfa-approval.js.map