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
package/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Aura Industry
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ The name "AuraMaxx" and the AuraMaxx logo are trademarks of Aura Industry
26
+ and may not be used in derivative works without prior written permission.
package/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # AuraMaxx
2
+
3
+ **Securely share passwords, cards, and API keys with AI agents like OpenClaw, Claude Code, Codex, Cursor, and more.**
4
+
5
+ **FAST.** Your keys never leave your machine. Everything is stored and runs locally.
6
+
7
+ **SECURE.** Model providers never see your secrets in plain text. Agents get scoped tokens, not raw credentials.
8
+
9
+ **CONTROL.** Fine-grained control over what each agent can do. Permission scopes, per-token limits, and human approval for every sensitive action.
10
+
11
+ **Set up once, use everywhere.** One vault works across Claude Code, Cursor, Codex, OpenClaw, and any MCP-compatible agent.
12
+
13
+ ## Quickstart
14
+
15
+ ```bash
16
+ npm install -g auramaxx
17
+ auramaxx
18
+ auramaxx status
19
+
20
+ # or quickstart
21
+ npx auramaxx
22
+ ```
23
+
24
+ - Open `http://localhost:4747`, create/unlock your vault, then add your first credential.
25
+
26
+ ## Get Your First Secret
27
+
28
+ Make sure you set up your vault first.
29
+
30
+ ```bash
31
+ auramaxx get OURSECRET
32
+
33
+ # if auramaxx command is not found, open a new terminal or run:
34
+ source ~/.zshrc # or source ~/.bashrc
35
+
36
+ # or use npx directly
37
+ npx auramaxx get OURSECRET
38
+ ```
39
+
40
+ Agent verify prompt:
41
+
42
+ `Use auramaxx to get the secret OURSECRET.`
43
+
44
+ ## Agent Setup
45
+
46
+ **Skills** (OpenClaw, Claude Code, Codex CLI):
47
+
48
+ ```bash
49
+ # set up globally for common agents
50
+ npx -y auramaxx skill
51
+
52
+ cd <your-codebase-or-workspace>
53
+ npx -y skills add Aura-Industry/auramaxx
54
+ ```
55
+
56
+ **MCP** (Codex, Claude Desktop, Cursor IDE) — add to your client's MCP config:
57
+
58
+ ```json
59
+ {
60
+ "mcpServers": {
61
+ "auramaxx": {
62
+ "command": "npx",
63
+ "args": ["auramaxx", "mcp"]
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Further Reading
70
+
71
+ - [Agent Setup](./docs/AGENT_SETUP.md) — per-client setup details
72
+ - [Security](./docs/security.md) — how keys and tokens work
73
+ - [Troubleshooting](./docs/TROUBLESHOOTING.md)
74
+
75
+ ## Questions / Support
76
+
77
+ https://x.com/hi_im_nico
@@ -0,0 +1,428 @@
1
+ const { app, BrowserWindow, Menu, Tray, shell, ipcMain, nativeImage } = require('electron');
2
+ const path = require('path');
3
+ const { spawn } = require('child_process');
4
+
5
+ const WEB_PORT = process.env.AURA_WEB_PORT || '4747';
6
+ const API_PORT = process.env.AURA_API_PORT || '4242';
7
+ const WEB_URL = process.env.AURA_WEB_URL || `http://localhost:${WEB_PORT}`;
8
+ const API_URL = process.env.AURA_API_URL || `http://localhost:${API_PORT}`;
9
+ const INSTALL_CMD = process.platform === 'win32' ? 'npm.cmd' : 'npm';
10
+ const CLI_CANDIDATES = ['aura', 'auramaxx'];
11
+ const STARTUP_HTML = path.join(__dirname, 'startup.html');
12
+ const APP_ICON = path.join(__dirname, 'icon.png');
13
+
14
+ let auraProcess = null;
15
+ let mainWindow = null;
16
+ let tray = null;
17
+
18
+ // ── Logging ──────────────────────────────────────────────────
19
+
20
+ function log(...args) {
21
+ console.log('[desktop-electron]', ...args);
22
+ }
23
+
24
+ // ── Shell helpers ────────────────────────────────────────────
25
+
26
+ function runCommand(command, args = [], opts = {}) {
27
+ return new Promise((resolve) => {
28
+ const child = spawn(command, args, {
29
+ shell: false,
30
+ env: process.env,
31
+ ...opts,
32
+ });
33
+
34
+ let stdout = '';
35
+ let stderr = '';
36
+ child.stdout?.on('data', (chunk) => {
37
+ stdout += String(chunk);
38
+ });
39
+ child.stderr?.on('data', (chunk) => {
40
+ stderr += String(chunk);
41
+ });
42
+ child.on('error', (error) => {
43
+ resolve({ ok: false, code: -1, stdout, stderr: `${stderr}\n${error.message}`.trim() });
44
+ });
45
+ child.on('close', (code) => {
46
+ resolve({ ok: code === 0, code: code ?? 1, stdout, stderr });
47
+ });
48
+ });
49
+ }
50
+
51
+ async function commandExists(bin) {
52
+ const check = process.platform === 'win32'
53
+ ? await runCommand('where', [bin])
54
+ : await runCommand('which', [bin]);
55
+ return check.ok;
56
+ }
57
+
58
+ async function resolveAuraCli() {
59
+ for (const candidate of CLI_CANDIDATES) {
60
+ if (await commandExists(candidate)) return candidate;
61
+ }
62
+ return null;
63
+ }
64
+
65
+ // ── Health checks ────────────────────────────────────────────
66
+
67
+ async function isWebReady() {
68
+ try {
69
+ const res = await fetch(WEB_URL, { method: 'GET' });
70
+ return res.ok || res.status < 500;
71
+ } catch {
72
+ return false;
73
+ }
74
+ }
75
+
76
+ async function isApiReady() {
77
+ try {
78
+ const res = await fetch(`${API_URL}/health`, { method: 'GET' });
79
+ return res.ok;
80
+ } catch {
81
+ return false;
82
+ }
83
+ }
84
+
85
+ async function waitForWeb(timeoutMs = 45000) {
86
+ const started = Date.now();
87
+ while (Date.now() - started < timeoutMs) {
88
+ if (await isWebReady()) return;
89
+ await new Promise((r) => setTimeout(r, 700));
90
+ }
91
+ throw new Error(`Timed out waiting for dashboard at ${WEB_URL}`);
92
+ }
93
+
94
+ // ── IPC: service lifecycle ───────────────────────────────────
95
+
96
+ function sendStatus(phase, message) {
97
+ if (mainWindow && !mainWindow.isDestroyed()) {
98
+ mainWindow.webContents.send('aura:start-status', { phase, message });
99
+ }
100
+ }
101
+
102
+ function registerIpcHandlers() {
103
+ ipcMain.handle('app:version', () => app.getVersion());
104
+ ipcMain.handle('shell:openExternal', async (_event, url) => {
105
+ if (typeof url !== 'string' || !/^https?:\/\//i.test(url)) return false;
106
+ await shell.openExternal(url);
107
+ return true;
108
+ });
109
+
110
+ // Quick health check — is the dashboard reachable right now?
111
+ ipcMain.handle('aura:check-ready', async () => {
112
+ return isWebReady();
113
+ });
114
+
115
+ // Full start sequence: find CLI → install if needed → start service → wait
116
+ ipcMain.handle('aura:start-service', async () => {
117
+ try {
118
+ // Already running?
119
+ if (await isWebReady()) {
120
+ sendStatus('ready', 'Dashboard is running');
121
+ return { ok: true };
122
+ }
123
+
124
+ // Resolve CLI
125
+ sendStatus('checking', 'Looking for AuraMaxx CLI\u2026');
126
+ let cli = await resolveAuraCli();
127
+
128
+ if (!cli) {
129
+ sendStatus('installing', 'Installing AuraMaxx (npm install -g auramaxx)\u2026');
130
+ log('CLI not found. Running npm install -g auramaxx ...');
131
+ const install = await runCommand(INSTALL_CMD, ['install', '-g', 'auramaxx'], { stdio: 'pipe' });
132
+ if (!install.ok) {
133
+ const detail = (install.stderr || install.stdout || '').slice(0, 300);
134
+ return { ok: false, error: `npm install failed: ${detail}`.trim() };
135
+ }
136
+ cli = await resolveAuraCli();
137
+ if (!cli) {
138
+ return { ok: false, error: 'AuraMaxx CLI still not found after installation. Check your PATH.' };
139
+ }
140
+ }
141
+
142
+ // Start service
143
+ sendStatus('starting', 'Starting AuraMaxx service\u2026');
144
+ log(`Starting service with: ${cli} start`);
145
+ auraProcess = spawn(cli, ['start'], {
146
+ env: process.env,
147
+ cwd: path.resolve(__dirname, '..', '..'),
148
+ stdio: 'pipe',
149
+ });
150
+ auraProcess.stdout?.on('data', (chunk) => log(String(chunk).trim()));
151
+ auraProcess.stderr?.on('data', (chunk) => console.error('[desktop-electron:aura]', String(chunk).trim()));
152
+
153
+ // Wait for dashboard
154
+ sendStatus('waiting', 'Waiting for dashboard\u2026');
155
+ await waitForWeb(60000);
156
+
157
+ sendStatus('ready', 'Dashboard is ready');
158
+ startStatusPolling();
159
+ return { ok: true };
160
+ } catch (err) {
161
+ log('Start service failed:', err?.message || err);
162
+ return { ok: false, error: err?.message || 'Failed to start AuraMaxx' };
163
+ }
164
+ });
165
+
166
+ // Navigate main window to the live dashboard
167
+ ipcMain.handle('aura:navigate-dashboard', () => {
168
+ if (mainWindow && !mainWindow.isDestroyed()) {
169
+ mainWindow.loadURL(WEB_URL);
170
+ }
171
+ });
172
+ }
173
+
174
+ // ── Tray icon ────────────────────────────────────────────────
175
+
176
+ function createTrayIcon() {
177
+ const icon = nativeImage.createFromPath(APP_ICON);
178
+
179
+ if (process.platform === 'darwin') {
180
+ // macOS menubar: 16pt (32px at 2x retina)
181
+ return icon.resize({ width: 16, height: 16 });
182
+ }
183
+
184
+ // Windows/Linux: 24x24
185
+ return icon.resize({ width: 24, height: 24 });
186
+ }
187
+
188
+ function buildTrayMenu() {
189
+ const windowVisible = mainWindow && !mainWindow.isDestroyed() && mainWindow.isVisible();
190
+ return Menu.buildFromTemplate([
191
+ {
192
+ label: 'AuraMaxx',
193
+ enabled: false,
194
+ },
195
+ { type: 'separator' },
196
+ {
197
+ label: windowVisible ? 'Hide Window' : 'Show Window',
198
+ click: () => {
199
+ if (!mainWindow || mainWindow.isDestroyed()) {
200
+ createWindow();
201
+ } else if (mainWindow.isVisible()) {
202
+ mainWindow.hide();
203
+ } else {
204
+ mainWindow.show();
205
+ mainWindow.focus();
206
+ }
207
+ if (tray) tray.setContextMenu(buildTrayMenu());
208
+ },
209
+ },
210
+ {
211
+ label: 'Open in Browser',
212
+ click: () => shell.openExternal(WEB_URL),
213
+ },
214
+ { type: 'separator' },
215
+ {
216
+ label: 'Quit',
217
+ click: () => {
218
+ if (mainWindow && !mainWindow.isDestroyed()) {
219
+ mainWindow.destroy();
220
+ }
221
+ app.quit();
222
+ },
223
+ },
224
+ ]);
225
+ }
226
+
227
+ function createTray() {
228
+ const icon = createTrayIcon();
229
+ tray = new Tray(icon);
230
+ tray.setToolTip('AuraMaxx');
231
+ tray.setContextMenu(buildTrayMenu());
232
+
233
+ tray.on('click', () => {
234
+ if (!mainWindow || mainWindow.isDestroyed()) {
235
+ createWindow();
236
+ } else if (mainWindow.isVisible()) {
237
+ mainWindow.hide();
238
+ } else {
239
+ mainWindow.show();
240
+ mainWindow.focus();
241
+ }
242
+ if (tray) tray.setContextMenu(buildTrayMenu());
243
+ });
244
+ }
245
+
246
+ // ── Status polling ───────────────────────────────────────────
247
+
248
+ let statusInterval = null;
249
+
250
+ function startStatusPolling() {
251
+ if (statusInterval) return;
252
+ statusInterval = setInterval(async () => {
253
+ const apiUp = await isApiReady();
254
+ const tooltip = apiUp ? 'AuraMaxx — Running' : 'AuraMaxx — Offline';
255
+ if (tray && !tray.isDestroyed()) {
256
+ tray.setToolTip(tooltip);
257
+ }
258
+ }, 15_000);
259
+ }
260
+
261
+ function stopStatusPolling() {
262
+ if (statusInterval) {
263
+ clearInterval(statusInterval);
264
+ statusInterval = null;
265
+ }
266
+ }
267
+
268
+ // ── Menu bar ─────────────────────────────────────────────────
269
+
270
+ function createMenu() {
271
+ const template = [
272
+ {
273
+ label: 'Aura',
274
+ submenu: [
275
+ { role: 'about' },
276
+ { type: 'separator' },
277
+ { role: 'hide' },
278
+ { role: 'hideOthers' },
279
+ { role: 'unhide' },
280
+ { type: 'separator' },
281
+ { role: 'quit' },
282
+ ],
283
+ },
284
+ {
285
+ label: 'Edit',
286
+ submenu: [
287
+ { role: 'undo' },
288
+ { role: 'redo' },
289
+ { type: 'separator' },
290
+ { role: 'cut' },
291
+ { role: 'copy' },
292
+ { role: 'paste' },
293
+ { role: 'selectAll' },
294
+ ],
295
+ },
296
+ {
297
+ label: 'View',
298
+ submenu: [
299
+ { role: 'reload' },
300
+ { role: 'forceReload' },
301
+ { role: 'toggleDevTools' },
302
+ { type: 'separator' },
303
+ { role: 'resetZoom' },
304
+ { role: 'zoomIn' },
305
+ { role: 'zoomOut' },
306
+ { type: 'separator' },
307
+ { role: 'togglefullscreen' },
308
+ ],
309
+ },
310
+ {
311
+ label: 'Window',
312
+ submenu: [
313
+ { role: 'minimize' },
314
+ { role: 'zoom' },
315
+ { type: 'separator' },
316
+ { role: 'front' },
317
+ ],
318
+ },
319
+ {
320
+ label: 'Help',
321
+ submenu: [
322
+ {
323
+ label: 'Open Aura Docs',
324
+ click: () => shell.openExternal(`${WEB_URL}/docs`),
325
+ },
326
+ ],
327
+ },
328
+ ];
329
+ Menu.setApplicationMenu(Menu.buildFromTemplate(template));
330
+ }
331
+
332
+ // ── Windows ──────────────────────────────────────────────────
333
+
334
+ function createWindow() {
335
+ mainWindow = new BrowserWindow({
336
+ width: 1280,
337
+ height: 860,
338
+ minWidth: 1024,
339
+ minHeight: 700,
340
+ title: 'Aura',
341
+ icon: APP_ICON,
342
+ titleBarStyle: process.platform === 'darwin' ? 'hiddenInset' : 'default',
343
+ webPreferences: {
344
+ preload: path.join(__dirname, 'preload.js'),
345
+ contextIsolation: true,
346
+ nodeIntegration: false,
347
+ sandbox: true,
348
+ devTools: true,
349
+ },
350
+ });
351
+
352
+ // On any navigation failure (ERR_CONNECTION_REFUSED, etc.) show the startup page.
353
+ // Only redirect if we were trying to load the dashboard, not the local startup file.
354
+ mainWindow.webContents.on('did-fail-load', (_event, errorCode, _errorDesc, validatedURL) => {
355
+ const isRemoteURL = validatedURL && validatedURL.startsWith('http');
356
+ if (isRemoteURL) {
357
+ log(`Dashboard load failed (code ${errorCode}): ${validatedURL}. Showing startup page.`);
358
+ mainWindow.loadFile(STARTUP_HTML);
359
+ }
360
+ });
361
+
362
+ // Start by loading the local startup page — it auto-checks and redirects if dashboard is up.
363
+ mainWindow.loadFile(STARTUP_HTML);
364
+
365
+ // Close window → hide to tray instead of quitting (macOS behavior)
366
+ mainWindow.on('close', (e) => {
367
+ if (!app.isQuitting) {
368
+ e.preventDefault();
369
+ mainWindow.hide();
370
+ if (tray) tray.setContextMenu(buildTrayMenu());
371
+ }
372
+ });
373
+
374
+ mainWindow.on('show', () => {
375
+ if (tray) tray.setContextMenu(buildTrayMenu());
376
+ });
377
+
378
+ return mainWindow;
379
+ }
380
+
381
+ // ── App lifecycle ────────────────────────────────────────────
382
+
383
+ app.isQuitting = false;
384
+
385
+ app.on('before-quit', () => {
386
+ app.isQuitting = true;
387
+ stopStatusPolling();
388
+ if (auraProcess && !auraProcess.killed) {
389
+ auraProcess.kill('SIGTERM');
390
+ }
391
+ });
392
+
393
+ app.whenReady().then(async () => {
394
+ registerIpcHandlers();
395
+ createMenu();
396
+ createTray();
397
+
398
+ // Set dock icon on macOS (dev mode uses default Electron icon otherwise)
399
+ if (process.platform === 'darwin' && app.dock) {
400
+ app.dock.setIcon(APP_ICON);
401
+ }
402
+
403
+ // Show window immediately with the startup page.
404
+ // The startup page auto-checks if the dashboard is running and redirects if so.
405
+ createWindow();
406
+
407
+ // If the dashboard is already up, start polling right away
408
+ if (await isWebReady()) {
409
+ startStatusPolling();
410
+ }
411
+
412
+ app.on('activate', () => {
413
+ if (mainWindow && !mainWindow.isDestroyed()) {
414
+ mainWindow.show();
415
+ mainWindow.focus();
416
+ } else if (BrowserWindow.getAllWindows().length === 0) {
417
+ createWindow();
418
+ }
419
+ });
420
+ });
421
+
422
+ app.on('window-all-closed', () => {
423
+ if (process.platform !== 'darwin') {
424
+ if (!tray || tray.isDestroyed()) {
425
+ app.quit();
426
+ }
427
+ }
428
+ });