auramaxx 0.0.1

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 (418) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +77 -0
  3. package/apps/desktop-electron/main.js +428 -0
  4. package/bin/auramaxx.js +1063 -0
  5. package/docs/ADAPTERS.md +466 -0
  6. package/docs/AGENT_SETUP.md +159 -0
  7. package/docs/API.md +127 -0
  8. package/docs/APPS.md +199 -0
  9. package/docs/ARCHITECTURE.md +235 -0
  10. package/docs/AUTH.md +318 -0
  11. package/docs/BEST-PRACTICES.md +82 -0
  12. package/docs/CLI.md +141 -0
  13. package/docs/DESKTOP_ELECTRON.md +26 -0
  14. package/docs/DEVELOPING-APPS.md +453 -0
  15. package/docs/MCP.md +122 -0
  16. package/docs/PACKAGING_POLICY.md +19 -0
  17. package/docs/PERMISSION.md +137 -0
  18. package/docs/PROTOCOL.md +142 -0
  19. package/docs/README.md +50 -0
  20. package/docs/SKILLS.md +132 -0
  21. package/docs/TROUBLESHOOTING.md +376 -0
  22. package/docs/WORKSPACE.md +673 -0
  23. package/docs/agent-auth.md +14 -0
  24. package/docs/api/authentication.md +79 -0
  25. package/docs/api/secrets/api-keys.md +28 -0
  26. package/docs/api/secrets/credentials.md +80 -0
  27. package/docs/api/secrets/sharing.md +48 -0
  28. package/docs/api/system.md +41 -0
  29. package/docs/api/wallets/apps-strategies.md +66 -0
  30. package/docs/api/wallets/core.md +46 -0
  31. package/docs/api/wallets/data-portfolio.md +42 -0
  32. package/docs/aura-file.md +48 -0
  33. package/docs/core-concepts/FEATURES.md +114 -0
  34. package/docs/credentials.md +120 -0
  35. package/docs/external/HOW_TO_AURAMAXX/GETTING_SECRETS.md +33 -0
  36. package/docs/external/HOW_TO_AURAMAXX/README.md +45 -0
  37. package/docs/external/getting-started.md +10 -0
  38. package/docs/external/overview.md +19 -0
  39. package/docs/external/persona-paths.md +7 -0
  40. package/docs/external/share-secret.md +76 -0
  41. package/docs/external/why-aura.md +7 -0
  42. package/docs/security.md +227 -0
  43. package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -0
  44. package/docs/wallet/AI.md +508 -0
  45. package/docs/wallet/DEVELOPING-STRATEGIES.md +713 -0
  46. package/docs/wallet/README.md +47 -0
  47. package/docs/wallet/STRATEGY.md +89 -0
  48. package/next.config.ts +28 -0
  49. package/package.json +167 -0
  50. package/postcss.config.mjs +8 -0
  51. package/prisma/migrations/20260214170000_baseline/migration.sql +511 -0
  52. package/prisma/migrations/20260216214537_add_passkey_model/migration.sql +18 -0
  53. package/prisma/migrations/20260217150500_add_credential_access_audit/migration.sql +31 -0
  54. package/prisma/migrations/20260222090000_update_admin_ttl_default/migration.sql +10 -0
  55. package/prisma/migrations/migration_lock.toml +3 -0
  56. package/prisma/schema.prisma +447 -0
  57. package/public/logo.webp +0 -0
  58. package/scripts/add-app.js +245 -0
  59. package/server/abi/SwapHelper.json +438 -0
  60. package/server/cli/approval.ts +447 -0
  61. package/server/cli/commands/actions.ts +474 -0
  62. package/server/cli/commands/api.ts +220 -0
  63. package/server/cli/commands/apikey.ts +277 -0
  64. package/server/cli/commands/app.ts +204 -0
  65. package/server/cli/commands/auth.ts +464 -0
  66. package/server/cli/commands/cron.ts +24 -0
  67. package/server/cli/commands/diary.ts +274 -0
  68. package/server/cli/commands/doctor.ts +1247 -0
  69. package/server/cli/commands/env.ts +476 -0
  70. package/server/cli/commands/experimental.ts +69 -0
  71. package/server/cli/commands/init.ts +798 -0
  72. package/server/cli/commands/lock.ts +157 -0
  73. package/server/cli/commands/mcp.ts +285 -0
  74. package/server/cli/commands/quickhack.ts +86 -0
  75. package/server/cli/commands/release-check.ts +231 -0
  76. package/server/cli/commands/restore.ts +314 -0
  77. package/server/cli/commands/service.ts +320 -0
  78. package/server/cli/commands/shell-hook.ts +512 -0
  79. package/server/cli/commands/skill.ts +216 -0
  80. package/server/cli/commands/start.ts +139 -0
  81. package/server/cli/commands/status.ts +59 -0
  82. package/server/cli/commands/stop.ts +36 -0
  83. package/server/cli/commands/token.ts +180 -0
  84. package/server/cli/commands/unlock.ts +50 -0
  85. package/server/cli/commands/vault.ts +1323 -0
  86. package/server/cli/commands/wallet.ts +209 -0
  87. package/server/cli/index.ts +280 -0
  88. package/server/cli/lib/approval-poll.ts +94 -0
  89. package/server/cli/lib/aura-parser.ts +64 -0
  90. package/server/cli/lib/credential-create.ts +74 -0
  91. package/server/cli/lib/credential-resolve.ts +280 -0
  92. package/server/cli/lib/dotenv-migrate.ts +116 -0
  93. package/server/cli/lib/dotenv-parser.ts +146 -0
  94. package/server/cli/lib/escalation.ts +57 -0
  95. package/server/cli/lib/http.ts +91 -0
  96. package/server/cli/lib/init-steps.ts +76 -0
  97. package/server/cli/lib/local-agent-trust.ts +45 -0
  98. package/server/cli/lib/lock-unlock-helper.ts +71 -0
  99. package/server/cli/lib/process.ts +162 -0
  100. package/server/cli/lib/prompt.ts +294 -0
  101. package/server/cli/lib/theme.ts +240 -0
  102. package/server/cli/socket.ts +579 -0
  103. package/server/cli/transport-client.ts +50 -0
  104. package/server/cron/index.ts +137 -0
  105. package/server/cron/job.ts +31 -0
  106. package/server/cron/jobs/balance-sync.ts +436 -0
  107. package/server/cron/jobs/incoming-scan.ts +506 -0
  108. package/server/cron/jobs/native-price.ts +70 -0
  109. package/server/cron/jobs/orphan-cleanup.ts +40 -0
  110. package/server/cron/jobs/strategy-runner.ts +175 -0
  111. package/server/cron/scheduler.ts +125 -0
  112. package/server/index.ts +420 -0
  113. package/server/lib/adapters/factory.ts +119 -0
  114. package/server/lib/adapters/index.ts +19 -0
  115. package/server/lib/adapters/router.ts +297 -0
  116. package/server/lib/adapters/telegram.ts +645 -0
  117. package/server/lib/adapters/types.ts +89 -0
  118. package/server/lib/adapters/webhook.ts +95 -0
  119. package/server/lib/address.ts +49 -0
  120. package/server/lib/agent-auth/contracts.ts +1194 -0
  121. package/server/lib/agent-profiles.ts +419 -0
  122. package/server/lib/ai.ts +285 -0
  123. package/server/lib/api-registry/contracts.ts +86 -0
  124. package/server/lib/api-registry/validation.ts +172 -0
  125. package/server/lib/apikey-migration.ts +258 -0
  126. package/server/lib/app-installer.ts +505 -0
  127. package/server/lib/app-tokens.ts +247 -0
  128. package/server/lib/approval-link.ts +27 -0
  129. package/server/lib/auth.ts +314 -0
  130. package/server/lib/auto-execute.ts +160 -0
  131. package/server/lib/batch.ts +242 -0
  132. package/server/lib/cold.ts +1048 -0
  133. package/server/lib/config.ts +408 -0
  134. package/server/lib/credential-access-audit.ts +85 -0
  135. package/server/lib/credential-access-policy.ts +111 -0
  136. package/server/lib/credential-health.ts +343 -0
  137. package/server/lib/credential-import.ts +608 -0
  138. package/server/lib/credential-scope.ts +102 -0
  139. package/server/lib/credential-shares.ts +190 -0
  140. package/server/lib/credential-transport.ts +533 -0
  141. package/server/lib/credential-vault.ts +77 -0
  142. package/server/lib/credentials.ts +422 -0
  143. package/server/lib/crypto.ts +8 -0
  144. package/server/lib/db.ts +58 -0
  145. package/server/lib/defaults.ts +386 -0
  146. package/server/lib/dex/index.ts +80 -0
  147. package/server/lib/dex/relay.ts +235 -0
  148. package/server/lib/dex/types.ts +59 -0
  149. package/server/lib/dex/uniswap.ts +370 -0
  150. package/server/lib/diary.ts +34 -0
  151. package/server/lib/dont-ask-again-policy.ts +41 -0
  152. package/server/lib/e2e-agent/artifacts.ts +36 -0
  153. package/server/lib/e2e-agent/contracts.ts +112 -0
  154. package/server/lib/e2e-agent/validation.ts +135 -0
  155. package/server/lib/encrypt.ts +114 -0
  156. package/server/lib/error.ts +20 -0
  157. package/server/lib/events.ts +217 -0
  158. package/server/lib/feature-flags.ts +93 -0
  159. package/server/lib/hot.ts +357 -0
  160. package/server/lib/human-action-summary.ts +80 -0
  161. package/server/lib/key-fingerprint.ts +28 -0
  162. package/server/lib/logger.ts +340 -0
  163. package/server/lib/network.ts +137 -0
  164. package/server/lib/notifications.ts +230 -0
  165. package/server/lib/oauth2-refresh.ts +241 -0
  166. package/server/lib/oursecret.ts +71 -0
  167. package/server/lib/passkey-credential.ts +360 -0
  168. package/server/lib/passkey.ts +68 -0
  169. package/server/lib/permissions.ts +299 -0
  170. package/server/lib/pino.ts +24 -0
  171. package/server/lib/policy-preview.ts +138 -0
  172. package/server/lib/price.ts +338 -0
  173. package/server/lib/prices.ts +34 -0
  174. package/server/lib/project-scope.ts +297 -0
  175. package/server/lib/resolve-action.ts +328 -0
  176. package/server/lib/resolve.ts +36 -0
  177. package/server/lib/secret-gist-share.ts +296 -0
  178. package/server/lib/sessions.ts +634 -0
  179. package/server/lib/socket-path.ts +56 -0
  180. package/server/lib/solana/connection.ts +26 -0
  181. package/server/lib/solana/jupiter.ts +128 -0
  182. package/server/lib/solana/transfer.ts +108 -0
  183. package/server/lib/solana/wallet.ts +136 -0
  184. package/server/lib/strategy/emits.ts +21 -0
  185. package/server/lib/strategy/engine.ts +1305 -0
  186. package/server/lib/strategy/executor.ts +115 -0
  187. package/server/lib/strategy/hook-context.ts +159 -0
  188. package/server/lib/strategy/hooks.ts +990 -0
  189. package/server/lib/strategy/index.ts +28 -0
  190. package/server/lib/strategy/installer.ts +305 -0
  191. package/server/lib/strategy/loader.ts +256 -0
  192. package/server/lib/strategy/message.ts +237 -0
  193. package/server/lib/strategy/repository.ts +218 -0
  194. package/server/lib/strategy/session-logger.ts +693 -0
  195. package/server/lib/strategy/sources.ts +288 -0
  196. package/server/lib/strategy/state.ts +189 -0
  197. package/server/lib/strategy/templates.ts +403 -0
  198. package/server/lib/strategy/tick.ts +404 -0
  199. package/server/lib/strategy/types.ts +230 -0
  200. package/server/lib/swap.ts +3 -0
  201. package/server/lib/temp.ts +86 -0
  202. package/server/lib/token-metadata.ts +86 -0
  203. package/server/lib/token-safety.ts +200 -0
  204. package/server/lib/token-search.ts +444 -0
  205. package/server/lib/totp.ts +194 -0
  206. package/server/lib/transactions.ts +123 -0
  207. package/server/lib/transport.ts +84 -0
  208. package/server/lib/txhistory/decoder.ts +262 -0
  209. package/server/lib/txhistory/enricher.ts +652 -0
  210. package/server/lib/txhistory/index.ts +391 -0
  211. package/server/lib/txhistory/signatures.ts +59 -0
  212. package/server/lib/update-check.ts +35 -0
  213. package/server/lib/verified-summary.ts +414 -0
  214. package/server/lib/view-registry.ts +80 -0
  215. package/server/mcp/profile-policy.ts +30 -0
  216. package/server/mcp/server.ts +1589 -0
  217. package/server/mcp/tools.ts +276 -0
  218. package/server/middleware/auth.ts +119 -0
  219. package/server/middleware/requestLogger.ts +84 -0
  220. package/server/routes/actions.ts +539 -0
  221. package/server/routes/adapters.ts +711 -0
  222. package/server/routes/addressbook.ts +113 -0
  223. package/server/routes/ai.ts +34 -0
  224. package/server/routes/apikeys.ts +343 -0
  225. package/server/routes/apps.ts +601 -0
  226. package/server/routes/auth.ts +406 -0
  227. package/server/routes/backup.ts +404 -0
  228. package/server/routes/batch.ts +270 -0
  229. package/server/routes/bookmarks.ts +162 -0
  230. package/server/routes/credential-shares.ts +380 -0
  231. package/server/routes/credential-vaults.ts +159 -0
  232. package/server/routes/credentials.ts +1782 -0
  233. package/server/routes/dashboard.ts +97 -0
  234. package/server/routes/defaults.ts +124 -0
  235. package/server/routes/flags.ts +11 -0
  236. package/server/routes/fund.ts +225 -0
  237. package/server/routes/heartbeat.ts +375 -0
  238. package/server/routes/import.ts +364 -0
  239. package/server/routes/launch.ts +665 -0
  240. package/server/routes/lock.ts +54 -0
  241. package/server/routes/logs.ts +68 -0
  242. package/server/routes/nuke.ts +111 -0
  243. package/server/routes/passkey-credentials.ts +99 -0
  244. package/server/routes/passkey.ts +366 -0
  245. package/server/routes/portfolio.ts +217 -0
  246. package/server/routes/price.ts +63 -0
  247. package/server/routes/resolve.ts +31 -0
  248. package/server/routes/security.ts +45 -0
  249. package/server/routes/send-evm.ts +241 -0
  250. package/server/routes/send-solana.ts +281 -0
  251. package/server/routes/send.ts +178 -0
  252. package/server/routes/setup.ts +210 -0
  253. package/server/routes/strategy.ts +894 -0
  254. package/server/routes/swap-evm.ts +352 -0
  255. package/server/routes/swap-solana.ts +176 -0
  256. package/server/routes/swap.ts +356 -0
  257. package/server/routes/token.ts +247 -0
  258. package/server/routes/unlock.ts +467 -0
  259. package/server/routes/views.ts +41 -0
  260. package/server/routes/wallet-assets.ts +361 -0
  261. package/server/routes/wallet-transactions.ts +515 -0
  262. package/server/routes/wallet.ts +709 -0
  263. package/server/types.ts +146 -0
  264. package/shared/credential-field-schema.ts +248 -0
  265. package/skills/auramaxx/HEARTBEAT.md +78 -0
  266. package/skills/auramaxx/SKILL.md +745 -0
  267. package/skills/auramaxx/docs/AGENT_SETUP.md +155 -0
  268. package/skills/auramaxx/docs/API.md +127 -0
  269. package/skills/auramaxx/docs/AUTH.md +318 -0
  270. package/skills/auramaxx/docs/CLI.md +130 -0
  271. package/skills/auramaxx/docs/MCP.md +122 -0
  272. package/skills/auramaxx/docs/TROUBLESHOOTING.md +357 -0
  273. package/skills/auramaxx/docs/WORKSPACE.md +673 -0
  274. package/skills/auramaxx/docs/security.md +227 -0
  275. package/skills/task-lifecycle/SKILL.md +378 -0
  276. package/src/app/api/[...doc]/page.tsx +36 -0
  277. package/src/app/api/agent-requests/route.ts +30 -0
  278. package/src/app/api/apps/install/route.ts +132 -0
  279. package/src/app/api/apps/manifests/route.ts +16 -0
  280. package/src/app/api/apps/static/[...path]/route.ts +57 -0
  281. package/src/app/api/docs/plain/route.ts +74 -0
  282. package/src/app/api/events/route.ts +92 -0
  283. package/src/app/api/page.tsx +290 -0
  284. package/src/app/api/workspace/[id]/apps/[wid]/route.ts +119 -0
  285. package/src/app/api/workspace/[id]/apps/route.ts +81 -0
  286. package/src/app/api/workspace/[id]/export/route.ts +67 -0
  287. package/src/app/api/workspace/[id]/route.ts +168 -0
  288. package/src/app/api/workspace/auth.ts +40 -0
  289. package/src/app/api/workspace/config/route.ts +121 -0
  290. package/src/app/api/workspace/import/route.ts +127 -0
  291. package/src/app/api/workspace/route.ts +116 -0
  292. package/src/app/app-legacy-do-not-use/page.tsx +2245 -0
  293. package/src/app/apple-icon.png +0 -0
  294. package/src/app/approve/[actionId]/page.tsx +409 -0
  295. package/src/app/docs/DocsPageContent.tsx +269 -0
  296. package/src/app/docs/[...doc]/page.tsx +41 -0
  297. package/src/app/docs/page.tsx +38 -0
  298. package/src/app/favicon.ico +0 -0
  299. package/src/app/globals.css +819 -0
  300. package/src/app/health/page.tsx +5 -0
  301. package/src/app/hello/page.tsx +102 -0
  302. package/src/app/icon.png +0 -0
  303. package/src/app/layout.tsx +39 -0
  304. package/src/app/page.tsx +1964 -0
  305. package/src/app/privacy/page.tsx +63 -0
  306. package/src/app/providers.tsx +87 -0
  307. package/src/app/share/[token]/page.tsx +295 -0
  308. package/src/app/terms/page.tsx +80 -0
  309. package/src/components/ChainSelector.tsx +44 -0
  310. package/src/components/HumanActionBar.tsx +697 -0
  311. package/src/components/NotificationDrawer.tsx +387 -0
  312. package/src/components/PasskeyEnrollmentPrompt.tsx +235 -0
  313. package/src/components/apps/AgentKeysApp.tsx +490 -0
  314. package/src/components/apps/App.tsx +153 -0
  315. package/src/components/apps/AppGrid.tsx +15 -0
  316. package/src/components/apps/DetailedAddressDrawer.tsx +325 -0
  317. package/src/components/apps/DraggableApp.tsx +562 -0
  318. package/src/components/apps/IFrameApp.tsx +73 -0
  319. package/src/components/apps/LogsApp.tsx +360 -0
  320. package/src/components/apps/SendApp.tsx +394 -0
  321. package/src/components/apps/SetupWizardApp.tsx +1004 -0
  322. package/src/components/apps/SystemDefaultsApp.tsx +845 -0
  323. package/src/components/apps/ThirdPartyApp.tsx +428 -0
  324. package/src/components/apps/TokenApp.tsx +319 -0
  325. package/src/components/apps/TransactionsApp.tsx +438 -0
  326. package/src/components/apps/WalletDetailApp.tsx +1505 -0
  327. package/src/components/apps/index.ts +13 -0
  328. package/src/components/design-system/Button.tsx +88 -0
  329. package/src/components/design-system/ChainIndicator.tsx +65 -0
  330. package/src/components/design-system/ChainSelector.tsx +147 -0
  331. package/src/components/design-system/ConfirmationModal.tsx +107 -0
  332. package/src/components/design-system/ConfirmationPopover.tsx +81 -0
  333. package/src/components/design-system/DownloadButton.tsx +149 -0
  334. package/src/components/design-system/Drawer.tsx +133 -0
  335. package/src/components/design-system/FilterDropdown.tsx +183 -0
  336. package/src/components/design-system/ItemPicker.tsx +157 -0
  337. package/src/components/design-system/Modal.tsx +296 -0
  338. package/src/components/design-system/Popover.tsx +142 -0
  339. package/src/components/design-system/TextInput.tsx +85 -0
  340. package/src/components/design-system/Toggle.tsx +65 -0
  341. package/src/components/design-system/TyvekCollapsibleSection.tsx +55 -0
  342. package/src/components/design-system/index.ts +14 -0
  343. package/src/components/docs/ClientSideMarkdown.tsx +51 -0
  344. package/src/components/docs/DocsSearchBar.tsx +118 -0
  345. package/src/components/docs/DocsThemeToggle.tsx +38 -0
  346. package/src/components/docs/PersistentDocGroup.tsx +91 -0
  347. package/src/components/docs/ShareUrlButton.tsx +33 -0
  348. package/src/components/docs/SidebarScrollMemory.tsx +56 -0
  349. package/src/components/health/CredentialHealthDashboard.tsx +214 -0
  350. package/src/components/icons/ChainIcons.tsx +72 -0
  351. package/src/components/layout/AppStoreDrawer.tsx +369 -0
  352. package/src/components/layout/ContentArea.tsx +21 -0
  353. package/src/components/layout/CreateViewModal.tsx +88 -0
  354. package/src/components/layout/LeftRail.tsx +114 -0
  355. package/src/components/layout/TabBar.tsx +284 -0
  356. package/src/components/layout/WalletSidebar.tsx +1030 -0
  357. package/src/components/layout/index.ts +6 -0
  358. package/src/components/marketing/AuraMaxxSpecOverlay.tsx +653 -0
  359. package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
  360. package/src/components/vault/ApiKeysConsole.tsx +1272 -0
  361. package/src/components/vault/AuditConsole.tsx +600 -0
  362. package/src/components/vault/CredentialDetail.tsx +625 -0
  363. package/src/components/vault/CredentialEmpty.tsx +55 -0
  364. package/src/components/vault/CredentialField.tsx +583 -0
  365. package/src/components/vault/CredentialForm.tsx +1484 -0
  366. package/src/components/vault/CredentialList.tsx +265 -0
  367. package/src/components/vault/CredentialRow.tsx +130 -0
  368. package/src/components/vault/CredentialShareModal.tsx +273 -0
  369. package/src/components/vault/CredentialVault.tsx +1662 -0
  370. package/src/components/vault/CredentialWalletWidget.tsx +103 -0
  371. package/src/components/vault/DocsConsole.tsx +113 -0
  372. package/src/components/vault/ImportCredentialsModal.tsx +578 -0
  373. package/src/components/vault/LargeTypeModal.tsx +88 -0
  374. package/src/components/vault/PasswordGenerator.tsx +232 -0
  375. package/src/components/vault/TOTPDisplay.tsx +108 -0
  376. package/src/components/vault/TotpSetupPanel.tsx +198 -0
  377. package/src/components/vault/VaultSidebar.tsx +881 -0
  378. package/src/components/vault/credentialFormName.ts +91 -0
  379. package/src/components/vault/hooks/useVaultKeyboardShortcuts.ts +69 -0
  380. package/src/components/vault/types.ts +56 -0
  381. package/src/context/AuthContext.tsx +365 -0
  382. package/src/context/PriceContext.tsx +113 -0
  383. package/src/context/ThemeContext.tsx +164 -0
  384. package/src/context/WebSocketContext.tsx +269 -0
  385. package/src/context/WorkspaceContext.tsx +668 -0
  386. package/src/hooks/index.ts +4 -0
  387. package/src/hooks/useAgentActions.ts +552 -0
  388. package/src/hooks/useBalance.ts +103 -0
  389. package/src/hooks/useBalances.ts +129 -0
  390. package/src/hooks/useTheme.ts +156 -0
  391. package/src/instrumentation.ts +12 -0
  392. package/src/lib/api-docs.ts +154 -0
  393. package/src/lib/api.ts +474 -0
  394. package/src/lib/app-loader.ts +148 -0
  395. package/src/lib/app-registry.ts +178 -0
  396. package/src/lib/app-sdk.ts +157 -0
  397. package/src/lib/audit-console-adapter.ts +151 -0
  398. package/src/lib/auth-client.ts +75 -0
  399. package/src/lib/config.ts +74 -0
  400. package/src/lib/credential-field-schema.ts +11 -0
  401. package/src/lib/crypto.ts +112 -0
  402. package/src/lib/db.ts +21 -0
  403. package/src/lib/docs.ts +544 -0
  404. package/src/lib/events.ts +363 -0
  405. package/src/lib/pino.ts +24 -0
  406. package/src/lib/theme-handlers.ts +168 -0
  407. package/src/lib/theme.ts +351 -0
  408. package/src/lib/tokenData.ts +378 -0
  409. package/src/lib/totp-import.ts +57 -0
  410. package/src/lib/vault-crypto.ts +129 -0
  411. package/src/lib/view-registry.ts +57 -0
  412. package/src/lib/websocket-server.ts +302 -0
  413. package/src/lib/websocket-setup.ts +79 -0
  414. package/src/lib/wordlist.ts +2050 -0
  415. package/src/lib/workspace-handlers.ts +285 -0
  416. package/start.sh +170 -0
  417. package/tailwind.config.ts +99 -0
  418. package/tsconfig.json +42 -0
@@ -0,0 +1,146 @@
1
+ export type WalletTier = 'cold' | 'hot' | 'temp';
2
+
3
+ export interface WalletInfo {
4
+ address: string;
5
+ tier: WalletTier;
6
+ chain: string;
7
+ createdAt: string;
8
+ name?: string;
9
+ color?: string;
10
+ description?: string;
11
+ emoji?: string;
12
+ tokenHash?: string;
13
+ balance?: string;
14
+ }
15
+
16
+ export interface EncryptedData {
17
+ ciphertext: string;
18
+ iv: string;
19
+ salt: string;
20
+ mac: string; // AEAD auth tag (legacy key name kept for envelope compatibility)
21
+ }
22
+
23
+ /** Limit value: plain number (single-currency, backward compat) or address-keyed (multi-currency) */
24
+ export type LimitValue = number | Record<string, number>;
25
+
26
+ /**
27
+ * Agent token payload - issued to AI agents with specific permissions and limits
28
+ */
29
+ export interface AgentTokenPayload {
30
+ agentId: string;
31
+ permissions: string[]; // Route permissions (e.g., 'wallet:list', 'send:hot')
32
+ exp: number; // Expiry timestamp (ms)
33
+
34
+ // Per-permission limits (optional, in native currency units)
35
+ // Plain number = legacy single-currency limit
36
+ // Record<string, number> = address-keyed multi-currency limit
37
+ // e.g. { "0x0000...0000": 1.0, "So111...112": 10.0 }
38
+ limits?: {
39
+ fund?: LimitValue;
40
+ send?: LimitValue;
41
+ swap?: LimitValue;
42
+ launch?: LimitValue;
43
+ };
44
+
45
+ // Wallet access grants (access existing wallets not created by this token)
46
+ walletAccess?: string[]; // Array of wallet addresses
47
+
48
+ // Token issued-at timestamp (ms) — used for credential TTL calculations
49
+ iat?: number;
50
+
51
+ // Credential vault access grants
52
+ credentialAccess?: {
53
+ read?: string[]; // Scopes for reading credentials (e.g., ["*"], ["tag:api"], ["cred-abc123"])
54
+ write?: string[]; // Scopes for writing credentials
55
+ excludeFields?: string[]; // Fields to exclude from reads (e.g., ["password", "cvv"])
56
+ ttl?: number; // Max seconds from iat this token can read credentials
57
+ maxReads?: number; // Max number of credential read operations
58
+ };
59
+
60
+ // Agent's public key (for future E2E encryption)
61
+ agentPubkey?: string;
62
+
63
+ // Legacy compatibility
64
+ limit?: number; // Legacy: Max spend in ETH (maps to limits.fund)
65
+ }
66
+
67
+ /**
68
+ * Token payload type (admin tokens are just AgentTokenPayload with admin:* permission)
69
+ */
70
+ export type TokenPayload = AgentTokenPayload;
71
+
72
+ /** Spent value: plain number (single-currency) or address-keyed (multi-currency) */
73
+ export type SpentValue = number | Record<string, number>;
74
+
75
+ export interface TokenSession {
76
+ token: AgentTokenPayload;
77
+ spent: number;
78
+ // Per-permission spending tracking
79
+ // Plain number = legacy single-currency tracking
80
+ // Record<string, number> = address-keyed multi-currency tracking
81
+ spentByType?: {
82
+ fund?: SpentValue;
83
+ send?: SpentValue;
84
+ swap?: SpentValue;
85
+ launch?: SpentValue;
86
+ };
87
+ // Credential vault access tracking
88
+ credentialReads?: number;
89
+ tokenIssuedAt?: number;
90
+ }
91
+
92
+ export interface HumanAction {
93
+ id: string;
94
+ type: 'fund' | 'send' | 'agent_access' | 'auth' | 'permission_update' | 'action' | 'notify';
95
+ fromTier: WalletTier | 'system';
96
+ toAddress?: string;
97
+ amount?: string;
98
+ chain: string;
99
+ status: 'pending' | 'approved' | 'rejected' | 'acknowledged';
100
+ createdAt: string;
101
+ resolvedAt?: string;
102
+ metadata?: Record<string, unknown>;
103
+ }
104
+
105
+ export interface SendRequest {
106
+ from: string;
107
+ to: string;
108
+ amount: string;
109
+ chain?: string;
110
+ }
111
+
112
+ export interface CreateWalletRequest {
113
+ tier: 'hot' | 'temp';
114
+ chain?: string;
115
+ label?: string;
116
+ }
117
+
118
+ export interface FundRequest {
119
+ toHotAddress: string;
120
+ amount: string;
121
+ chain?: string;
122
+ }
123
+
124
+ // ─── Credential Vault Types ──────────────────────────────────────────
125
+
126
+ export type CredentialType = 'login' | 'card' | 'note' | 'plain_note' | 'hot_wallet' | 'api' | 'apikey' | 'custom' | 'passkey' | 'oauth2' | 'ssh' | 'gpg';
127
+
128
+ export interface CredentialField {
129
+ key: string;
130
+ value: string;
131
+ type: 'text' | 'secret' | 'url' | 'email' | 'number';
132
+ sensitive: boolean;
133
+ }
134
+
135
+ export interface CredentialFile {
136
+ id: string;
137
+ vaultId: string;
138
+ type: CredentialType;
139
+ name: string;
140
+ meta: Record<string, unknown>;
141
+ encrypted: EncryptedData;
142
+ createdAt: string;
143
+ updatedAt: string;
144
+ archivedAt?: string;
145
+ deletedAt?: string;
146
+ }
@@ -0,0 +1,248 @@
1
+ export type CredentialFieldType = 'text' | 'secret' | 'url' | 'email' | 'number';
2
+
3
+ export type CredentialType =
4
+ | 'login'
5
+ | 'card'
6
+ | 'note'
7
+ | 'plain_note'
8
+ | 'hot_wallet'
9
+ | 'api'
10
+ | 'apikey'
11
+ | 'custom'
12
+ | 'passkey'
13
+ | 'oauth2'
14
+ | 'ssh'
15
+ | 'gpg';
16
+
17
+ export interface CredentialFieldSpec {
18
+ key: string;
19
+ label: string;
20
+ type: CredentialFieldType;
21
+ sensitive: boolean;
22
+ requiredOnCreate?: boolean;
23
+ aliases?: string[];
24
+ }
25
+
26
+ type FieldSchemaMap = Record<CredentialType, CredentialFieldSpec[]>;
27
+
28
+ export const CREDENTIAL_FIELD_KEYS = {
29
+ login: {
30
+ url: 'url',
31
+ username: 'username',
32
+ password: 'password',
33
+ notes: 'notes',
34
+ totp: 'totp',
35
+ },
36
+ card: {
37
+ cardholder: 'cardholder',
38
+ brand: 'brand',
39
+ billingZip: 'billing_zip',
40
+ last4: 'last4',
41
+ number: 'number',
42
+ cvv: 'cvv',
43
+ expiry: 'expiry',
44
+ notes: 'notes',
45
+ },
46
+ note: {
47
+ content: 'content',
48
+ },
49
+ plain_note: {
50
+ content: 'content',
51
+ },
52
+ hot_wallet: {
53
+ address: 'address',
54
+ privateKey: 'private_key',
55
+ chain: 'chain',
56
+ },
57
+ apikey: {
58
+ key: 'key',
59
+ value: 'value',
60
+ },
61
+ oauth2: {
62
+ accessToken: 'access_token',
63
+ refreshToken: 'refresh_token',
64
+ clientId: 'client_id',
65
+ clientSecret: 'client_secret',
66
+ tokenEndpoint: 'token_endpoint',
67
+ scopes: 'scopes',
68
+ authMethod: 'auth_method',
69
+ expiresAt: 'expires_at',
70
+ },
71
+ ssh: {
72
+ privateKey: 'private_key',
73
+ passphrase: 'passphrase',
74
+ publicKey: 'public_key',
75
+ fingerprint: 'fingerprint',
76
+ keyType: 'key_type',
77
+ hosts: 'hosts',
78
+ },
79
+ gpg: {
80
+ privateKey: 'private_key',
81
+ publicKey: 'public_key',
82
+ fingerprint: 'fingerprint',
83
+ keyId: 'key_id',
84
+ uidEmail: 'uid_email',
85
+ expiresAt: 'expires_at',
86
+ },
87
+ custom: {
88
+ value: 'value',
89
+ },
90
+ } as const;
91
+
92
+ export const CREDENTIAL_FIELD_SCHEMA: FieldSchemaMap = {
93
+ login: [
94
+ { key: CREDENTIAL_FIELD_KEYS.login.url, label: 'URL', type: 'text', sensitive: false },
95
+ { key: CREDENTIAL_FIELD_KEYS.login.username, label: 'Username', type: 'text', sensitive: false, requiredOnCreate: true },
96
+ { key: CREDENTIAL_FIELD_KEYS.login.password, label: 'Password', type: 'secret', sensitive: true, requiredOnCreate: true },
97
+ { key: CREDENTIAL_FIELD_KEYS.login.notes, label: 'Notes', type: 'text', sensitive: true },
98
+ { key: CREDENTIAL_FIELD_KEYS.login.totp, label: 'TOTP', type: 'secret', sensitive: true, aliases: ['otp'] },
99
+ ],
100
+ card: [
101
+ { key: CREDENTIAL_FIELD_KEYS.card.cardholder, label: 'Cardholder', type: 'text', sensitive: false, requiredOnCreate: true },
102
+ { key: CREDENTIAL_FIELD_KEYS.card.brand, label: 'Brand', type: 'text', sensitive: false },
103
+ { key: CREDENTIAL_FIELD_KEYS.card.billingZip, label: 'Billing ZIP', type: 'text', sensitive: false },
104
+ { key: CREDENTIAL_FIELD_KEYS.card.last4, label: 'Last 4', type: 'text', sensitive: false },
105
+ { key: CREDENTIAL_FIELD_KEYS.card.number, label: 'Number', type: 'text', sensitive: true, requiredOnCreate: true },
106
+ { key: CREDENTIAL_FIELD_KEYS.card.cvv, label: 'CVV', type: 'secret', sensitive: true, requiredOnCreate: true },
107
+ { key: CREDENTIAL_FIELD_KEYS.card.expiry, label: 'Expiry', type: 'text', sensitive: true, requiredOnCreate: true },
108
+ { key: CREDENTIAL_FIELD_KEYS.card.notes, label: 'Notes', type: 'text', sensitive: true },
109
+ ],
110
+ note: [
111
+ { key: CREDENTIAL_FIELD_KEYS.note.content, label: 'Content', type: 'text', sensitive: true, requiredOnCreate: true, aliases: ['value'] },
112
+ ],
113
+ plain_note: [
114
+ { key: CREDENTIAL_FIELD_KEYS.plain_note.content, label: 'Content', type: 'text', sensitive: false, requiredOnCreate: true, aliases: ['value'] },
115
+ ],
116
+ hot_wallet: [
117
+ { key: CREDENTIAL_FIELD_KEYS.hot_wallet.address, label: 'Address', type: 'text', sensitive: false, requiredOnCreate: true },
118
+ { key: CREDENTIAL_FIELD_KEYS.hot_wallet.chain, label: 'Chain', type: 'text', sensitive: false, requiredOnCreate: true },
119
+ { key: CREDENTIAL_FIELD_KEYS.hot_wallet.privateKey, label: 'Private Key', type: 'secret', sensitive: true, requiredOnCreate: true },
120
+ ],
121
+ api: [],
122
+ apikey: [
123
+ { key: CREDENTIAL_FIELD_KEYS.apikey.key, label: 'Key', type: 'text', sensitive: false, requiredOnCreate: true },
124
+ { key: CREDENTIAL_FIELD_KEYS.apikey.value, label: 'Value', type: 'secret', sensitive: true, requiredOnCreate: true },
125
+ ],
126
+ custom: [],
127
+ passkey: [],
128
+ oauth2: [
129
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.tokenEndpoint, label: 'Token Endpoint', type: 'url', sensitive: false, requiredOnCreate: true },
130
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.scopes, label: 'Scopes', type: 'text', sensitive: false },
131
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.authMethod, label: 'Auth Method', type: 'text', sensitive: false },
132
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.expiresAt, label: 'Expires At', type: 'number', sensitive: false, requiredOnCreate: true },
133
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.accessToken, label: 'Access Token', type: 'secret', sensitive: true, requiredOnCreate: true },
134
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.refreshToken, label: 'Refresh Token', type: 'secret', sensitive: true, requiredOnCreate: true },
135
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.clientId, label: 'Client ID', type: 'secret', sensitive: true, requiredOnCreate: true },
136
+ { key: CREDENTIAL_FIELD_KEYS.oauth2.clientSecret, label: 'Client Secret', type: 'secret', sensitive: true, requiredOnCreate: true },
137
+ ],
138
+ ssh: [
139
+ { key: CREDENTIAL_FIELD_KEYS.ssh.fingerprint, label: 'Fingerprint', type: 'text', sensitive: false },
140
+ { key: CREDENTIAL_FIELD_KEYS.ssh.keyType, label: 'Key Type', type: 'text', sensitive: false },
141
+ { key: CREDENTIAL_FIELD_KEYS.ssh.hosts, label: 'Hosts', type: 'text', sensitive: false },
142
+ { key: CREDENTIAL_FIELD_KEYS.ssh.privateKey, label: 'Private Key', type: 'secret', sensitive: true, requiredOnCreate: true },
143
+ { key: CREDENTIAL_FIELD_KEYS.ssh.passphrase, label: 'Passphrase', type: 'secret', sensitive: true },
144
+ { key: CREDENTIAL_FIELD_KEYS.ssh.publicKey, label: 'Public Key', type: 'text', sensitive: false },
145
+ ],
146
+ gpg: [
147
+ { key: CREDENTIAL_FIELD_KEYS.gpg.fingerprint, label: 'Fingerprint', type: 'text', sensitive: false },
148
+ { key: CREDENTIAL_FIELD_KEYS.gpg.keyId, label: 'Key ID', type: 'text', sensitive: false },
149
+ { key: CREDENTIAL_FIELD_KEYS.gpg.uidEmail, label: 'UID Email', type: 'email', sensitive: false },
150
+ { key: CREDENTIAL_FIELD_KEYS.gpg.expiresAt, label: 'Expires At', type: 'text', sensitive: false },
151
+ { key: CREDENTIAL_FIELD_KEYS.gpg.privateKey, label: 'Private Key', type: 'secret', sensitive: true, requiredOnCreate: true },
152
+ { key: CREDENTIAL_FIELD_KEYS.gpg.publicKey, label: 'Public Key', type: 'text', sensitive: false },
153
+ ],
154
+ };
155
+
156
+ export const NOTE_CONTENT_KEY = CREDENTIAL_FIELD_KEYS.note.content;
157
+
158
+ export const CREDENTIAL_PRIMARY_FIELD_KEY: Record<CredentialType, string> = {
159
+ login: CREDENTIAL_FIELD_KEYS.login.password,
160
+ card: CREDENTIAL_FIELD_KEYS.card.number,
161
+ note: CREDENTIAL_FIELD_KEYS.note.content,
162
+ plain_note: CREDENTIAL_FIELD_KEYS.plain_note.content,
163
+ hot_wallet: CREDENTIAL_FIELD_KEYS.hot_wallet.privateKey,
164
+ api: CREDENTIAL_FIELD_KEYS.apikey.value,
165
+ apikey: CREDENTIAL_FIELD_KEYS.apikey.value,
166
+ custom: CREDENTIAL_FIELD_KEYS.custom.value,
167
+ passkey: CREDENTIAL_FIELD_KEYS.ssh.privateKey,
168
+ oauth2: CREDENTIAL_FIELD_KEYS.oauth2.accessToken,
169
+ ssh: CREDENTIAL_FIELD_KEYS.ssh.privateKey,
170
+ gpg: CREDENTIAL_FIELD_KEYS.gpg.privateKey,
171
+ };
172
+
173
+ export function getCredentialPrimaryFieldKey(type: string): string {
174
+ if (!isCredentialType(type)) return 'value';
175
+ return CREDENTIAL_PRIMARY_FIELD_KEY[type] || 'value';
176
+ }
177
+
178
+ export function getCredentialPrimaryFieldSpec(type: string): CredentialFieldSpec | undefined {
179
+ if (!isCredentialType(type)) return undefined;
180
+ const primaryKey = getCredentialPrimaryFieldKey(type);
181
+ return CREDENTIAL_FIELD_SCHEMA[type].find((field) => field.key === primaryKey);
182
+ }
183
+
184
+ type CredentialFieldLike = { key: string };
185
+
186
+ const SCHEMA_KEY_LOOKUP = Object.fromEntries(
187
+ (Object.entries(CREDENTIAL_FIELD_SCHEMA) as Array<[CredentialType, CredentialFieldSpec[]]>).map(([type, fields]) => {
188
+ const lookup = new Map<string, string>();
189
+ for (const field of fields) {
190
+ lookup.set(field.key.toLowerCase(), field.key);
191
+ for (const alias of field.aliases || []) {
192
+ lookup.set(alias.toLowerCase(), field.key);
193
+ }
194
+ }
195
+ return [type, lookup];
196
+ }),
197
+ ) as Record<CredentialType, Map<string, string>>;
198
+
199
+ function isCredentialType(value: string): value is CredentialType {
200
+ return Object.prototype.hasOwnProperty.call(CREDENTIAL_FIELD_SCHEMA, value);
201
+ }
202
+
203
+ export function canonicalizeCredentialFieldKey(type: string, key: string): string {
204
+ const trimmed = key.trim();
205
+ if (!trimmed) return trimmed;
206
+ if (!isCredentialType(type)) return trimmed;
207
+
208
+ const canonical = SCHEMA_KEY_LOOKUP[type].get(trimmed.toLowerCase());
209
+ return canonical || trimmed;
210
+ }
211
+
212
+ export function normalizeCredentialFieldsForType<T extends CredentialFieldLike>(
213
+ type: string,
214
+ fields: readonly T[],
215
+ ): T[] {
216
+ if (!Array.isArray(fields) || fields.length === 0) return [];
217
+
218
+ const normalized: T[] = [];
219
+ const indexByKey = new Map<string, number>();
220
+
221
+ for (const field of fields) {
222
+ const canonicalKey = canonicalizeCredentialFieldKey(type, field.key);
223
+ const normalizedField = canonicalKey === field.key
224
+ ? field
225
+ : ({ ...field, key: canonicalKey } as T);
226
+ const existingIndex = indexByKey.get(canonicalKey);
227
+
228
+ if (existingIndex === undefined) {
229
+ indexByKey.set(canonicalKey, normalized.length);
230
+ normalized.push(normalizedField);
231
+ continue;
232
+ }
233
+
234
+ normalized[existingIndex] = normalizedField;
235
+ }
236
+
237
+ return normalized;
238
+ }
239
+
240
+ export function getCredentialFieldValue(
241
+ type: string,
242
+ fields: Array<{ key: string; value: string }>,
243
+ key: string,
244
+ ): string | undefined {
245
+ const normalized = normalizeCredentialFieldsForType(type, fields);
246
+ const canonicalKey = canonicalizeCredentialFieldKey(type, key);
247
+ return normalized.find((field) => field.key === canonicalKey)?.value;
248
+ }
@@ -0,0 +1,78 @@
1
+ # AuraMaxx Heartbeat
2
+
3
+ This runs periodically, but you can check in anytime you want.
4
+
5
+ ## Heartbeat Routine
6
+
7
+ 1. Check what changed:
8
+ - MCP: `api { method: "GET", endpoint: "/what_is_happening" }`
9
+ - CLI: `curl http://localhost:4242/what_is_happening`
10
+ - Strategy engine: `wallet_api { method: "GET", endpoint: "/what_is_happening" }`
11
+ - Optional query params: `?since=<last_check_timestamp_ms>` and/or `&agentId=<your_agent_id>`
12
+
13
+ 2. Review response in this order:
14
+ - `highlights`
15
+ - `humanActions`
16
+ - `recentEvents`
17
+ - `syncHealth`
18
+
19
+ 3. Decide if human attention is needed:
20
+ - Pending approvals that block work
21
+ - Rejections that need a plan change
22
+ - Sync errors that keep repeating
23
+ - Security-sensitive credential activity that looks wrong
24
+
25
+ 4. Write a diary entry:
26
+ - Preferred: call `write_diary` with a compact summary of what you observed and what you did.
27
+ - CLI fallback: `npx auramaxx diary write --entry "..." [--date YYYY-MM-DD]`.
28
+ - Do not call raw unauthenticated `POST /what_is_happening/diary`.
29
+ - If diary write fails with auth/approval issues, ask the human to open the approval link and approve, then retry once.
30
+ - Diary note naming is `{YYYY-MM-DD}_LOGS` (UTC day).
31
+ - Use plain facts. Include counts and IDs when possible.
32
+
33
+ 5. Save your next cursor:
34
+ - Store current timestamp as your next `since` bookmark.
35
+
36
+ ## Ask Yourself
37
+
38
+ - Did anything urgent appear?
39
+ - Is there a blocked request waiting for a human?
40
+ - Were any secrets accessed or changed? Which ones, by whom?
41
+ - If no secrets were touched — has it been 12+ hours since you last told your human?
42
+ - Is sync healthy across chains?
43
+
44
+ ## When To Tell Your Human
45
+
46
+ **Always update your human.** Even if nothing happened, they should know you're watching.
47
+
48
+ Tell your human immediately when:
49
+ - Action is blocked on approval
50
+ - A sync status is failing or degraded
51
+ - A rejection changes your plan
52
+ - Sensitive credential access/change looks unexpected
53
+ - Any credential was read or modified since last check
54
+
55
+ Tell your human every ~12 hours even if nothing happened:
56
+ - No secrets were accessed, no actions pending, sync healthy
57
+ - Keep it short and brainrot — you're busy auramaxxing and didn't need any secrets
58
+ - Example: "been auramaxxing all day, vault is chilling, zero secrets touched, sync green across the board"
59
+
60
+ ## Response Format
61
+
62
+ <response_format>
63
+ If everything is fine and no follow-up is needed:
64
+ HEARTBEAT_OK: [what you checked] [secrets accessed or "no secrets touched"] [sync status] [diary entry written]
65
+
66
+ If follow-up is needed:
67
+ FOLLOWUP_NEEDED: [short issue] [why it matters] [exact human action needed]
68
+
69
+ If nothing happened and it's been ~12h since last human update:
70
+ HEARTBEAT_VIBES: [brainrot status update] [vault status] [diary entry written]
71
+ </response_format>
72
+
73
+ ## Examples
74
+
75
+ - `HEARTBEAT_OK: checked /what_is_happening since last run; agent xyz read 'deploy-key' at 14:30 UTC; 1 pending, sync healthy; diary entry written for 2026-02-18`
76
+ - `HEARTBEAT_OK: checked /what_is_happening; no secrets touched, 0 pending, sync green; diary entry written for 2026-02-18`
77
+ - `FOLLOWUP_NEEDED: 2 pending fund approvals >30m old; execution is blocked; please approve/reject requests in dashboard`
78
+ - `HEARTBEAT_VIBES: been auramaxxing all day no cap, vault is untouched, zero secrets needed, all chains synced and vibing; diary entry written for 2026-02-18`