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,453 @@
1
+ # Developing Apps
2
+
3
+ Detailed reference for building AuraMaxx UI apps — manifest format, SDK API, theming, security, and storage.
4
+
5
+ For a high-level overview and installation guide, see [APPS.md](./APPS.md). For building strategy apps (tick-based and message-based), see [DEVELOPING-STRATEGIES.md](./wallet/DEVELOPING-STRATEGIES.md). For AI engine internals, see [AI.md](./wallet/AI.md).
6
+
7
+ ## Table of Contents
8
+
9
+ 1. [File Structure](#file-structure)
10
+ 2. [App SDK API (window.AuraApp)](#app-sdk-api-windowauraapp)
11
+ 3. [Theming](#theming)
12
+ 4. [Manifest Reference](#manifest-reference)
13
+ 5. [Security Model](#security-model)
14
+ 6. [Storage API (REST)](#storage-api-rest)
15
+ 7. [Example: Annotated Kanban App](#example-annotated-kanban-app)
16
+
17
+ ---
18
+
19
+ ## File Structure
20
+
21
+ ```
22
+ apps/
23
+ my-app/
24
+ app.md # Manifest (YAML frontmatter + description)
25
+ index.html # UI entry point (HTML + inline JS/CSS)
26
+ ```
27
+
28
+ - `app.md` is required. The engine discovers apps by scanning `apps/*/app.md`.
29
+ - `index.html` is optional. Apps without it show a default placeholder on the dashboard. Strategy-only (headless) apps commonly omit it.
30
+ - The folder name becomes the app `id`.
31
+
32
+ ---
33
+
34
+ ## App SDK API (`window.AuraApp`)
35
+
36
+ The SDK is automatically injected into every installed app iframe. It is available as `window.AuraApp` (or just `AuraApp`). Storage methods and `fetch()` use direct HTTP calls with an injected Bearer token; `send()` uses direct HTTP; `on()` uses postMessage to communicate with the host.
37
+
38
+ ### `AuraApp.storage.get(key)`
39
+
40
+ Read a value from persistent storage.
41
+
42
+ ```javascript
43
+ var data = await AuraApp.storage.get('myKey');
44
+ // data is the parsed JSON value, or null if not found
45
+ ```
46
+
47
+ - **Parameters:** `key` (string) -- the storage key
48
+ - **Returns:** `Promise<any>` -- the stored value, or `null` if the key does not exist
49
+
50
+ ### `AuraApp.storage.set(key, value)`
51
+
52
+ Write a value to persistent storage. Values are JSON-serialized.
53
+
54
+ ```javascript
55
+ await AuraApp.storage.set('myKey', { count: 42, items: ['a', 'b'] });
56
+ ```
57
+
58
+ - **Parameters:** `key` (string), `value` (any JSON-serializable value)
59
+ - **Returns:** `Promise<any>` -- the stored value on success
60
+ - **Behavior:** Upserts -- creates the key if it does not exist, updates if it does
61
+
62
+ ### `AuraApp.storage.delete(key)`
63
+
64
+ Delete a key from persistent storage.
65
+
66
+ ```javascript
67
+ var ok = await AuraApp.storage.delete('myKey');
68
+ ```
69
+
70
+ - **Parameters:** `key` (string)
71
+ - **Returns:** `Promise<boolean>` -- `true` on success
72
+ - **Error:** Rejects if the key does not exist
73
+
74
+ ### `AuraApp.send(message)`
75
+
76
+ Send a natural language message to the app's AI and receive a reply.
77
+
78
+ ```javascript
79
+ var reply = await AuraApp.send('Check the ETH balance on my hot wallet');
80
+ console.log(reply); // "Your hot wallet has 2.5 ETH"
81
+ ```
82
+
83
+ - **Parameters:** `message` (string) -- natural language instruction
84
+ - **Returns:** `Promise<string | null>` -- the AI's text reply, or `null` if no reply was generated
85
+ - **Rate limit:** 10 messages per 60 seconds per app
86
+ - **Requires:** App must have a `hooks.message` field in its manifest
87
+
88
+ ### `AuraApp.fetch(url, options)`
89
+
90
+ Fetch an external URL via the server-side proxy. Apps run in sandboxed `blob:` iframes with an opaque origin, so direct `fetch()` calls to external APIs will fail with CORS errors. This method proxies the request through the wallet server.
91
+
92
+ ```javascript
93
+ // Simple GET
94
+ var data = await AuraApp.fetch('https://api.example.com/prices');
95
+
96
+ // POST with headers
97
+ var result = await AuraApp.fetch('https://api.example.com/submit', {
98
+ method: 'POST',
99
+ headers: { 'Content-Type': 'application/json' },
100
+ body: JSON.stringify({ token: '0xABC' })
101
+ });
102
+ ```
103
+
104
+ - **Parameters:**
105
+ - `url` (string) -- the external URL to fetch (must be HTTP or HTTPS)
106
+ - `options` (object, optional): `method`, `headers`, `body`
107
+ - **Returns:** `Promise<any>` -- parsed JSON or text string
108
+ - **Rate limit:** 60 requests per 60 seconds per app
109
+ - **Restrictions:** Only HTTP/HTTPS; private IPs blocked (SSRF prevention); 10s timeout
110
+
111
+ ### `AuraApp.action(params)`
112
+
113
+ Request human approval for a privileged operation. Creates a pending action request. On approval, a temporary scoped token is created and the action auto-executes.
114
+
115
+ ```javascript
116
+ var result = await AuraApp.action({
117
+ summary: 'Buy $DOGE2 for 0.005 ETH',
118
+ permissions: ['swap'],
119
+ limits: { swap: 0.005 },
120
+ walletAccess: ['0x...'],
121
+ ttl: 60
122
+ });
123
+ // result = { success: true, requestId: '...', secret: '...' }
124
+ ```
125
+
126
+ - **Parameters:** `params` (object): `summary` (string, required), `permissions` (string[], required), `limits` (object), `walletAccess` (string[]), `ttl` (number)
127
+ - **Returns:** `Promise<{ success, requestId, secret }>`
128
+ - **Requires:** `action:create` permission in the manifest
129
+
130
+ **Event sequence on approval:** `action:resolved` → `action:executed` → `agent:message`
131
+
132
+ ### `AuraApp.on(channel, callback)`
133
+
134
+ Subscribe to a real-time event channel. Events are forwarded from the WebSocket to your iframe via postMessage.
135
+
136
+ ```javascript
137
+ var unsub = AuraApp.on('tx:created', function(data) {
138
+ console.log('New transaction:', data);
139
+ });
140
+ unsub(); // unsubscribe
141
+ ```
142
+
143
+ - **Parameters:** `channel` (string), `callback` (function)
144
+ - **Returns:** unsubscribe function
145
+
146
+ #### Common Event Channels
147
+
148
+ | Channel | Data | Description |
149
+ |---------|------|-------------|
150
+ | `tx:created` | `{walletAddress, id, type, txHash, amount}` | New transaction |
151
+ | `asset:changed` | `{walletAddress, tokenAddress, symbol}` | Asset added/removed |
152
+ | `wallet:created` | `{address, tier, chain}` | New wallet created |
153
+ | `strategy:tick` | `{strategyId, intents, duration, state}` | Strategy tick completed |
154
+ | `strategy:error` | `{strategyId, error, phase}` | Strategy error |
155
+ | `action:executed` | `{requestId, approved, status, result}` | Action auto-executed (app-scoped) |
156
+ | `agent:message` | `{message}` | AI follow-up after action (app-scoped) |
157
+
158
+ Strategy hooks can emit custom app-scoped events via the `emit` field in hook responses:
159
+
160
+ ```json
161
+ { "emit": { "channel": "price-update", "data": { "price": 42 } } }
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Theming
167
+
168
+ The host injects CSS variables from the current theme into every app iframe. Use these to match the dashboard in both light and dark modes.
169
+
170
+ ### CSS Variables
171
+
172
+ | Variable | Purpose | Fallback |
173
+ |----------|---------|----------|
174
+ | `--color-background` | Page background | `#fafafa` |
175
+ | `--color-background-alt` | Alternate background | `#f4f4f5` |
176
+ | `--color-surface` | App/card background | `#ffffff` |
177
+ | `--color-surface-alt` | Alternate surface | `#f9fafb` |
178
+ | `--color-text` | Primary text | `#0a0a0a` |
179
+ | `--color-text-muted` | Secondary text | `#6b7280` |
180
+ | `--color-text-faint` | Tertiary text | `#9ca3af` |
181
+ | `--color-border` | Standard borders | `#d4d4d8` |
182
+ | `--color-border-muted` | Subtle borders | `#e4e4e7` |
183
+ | `--color-border-focus` | Focused borders | `#0a0a0a` |
184
+ | `--color-accent` | Accent/highlight | `#ccff00` |
185
+ | `--color-info` | Info accent | `#0047ff` |
186
+ | `--color-success` | Success state | `#22c55e` |
187
+ | `--color-warning` | Warning state | `#ff4d00` |
188
+ | `--color-danger` | Error/danger state | `#ef4444` |
189
+
190
+ Always provide fallback values:
191
+
192
+ ```css
193
+ body {
194
+ background: var(--color-surface, #fff);
195
+ color: var(--color-text, #0a0a0a);
196
+ font-family: ui-monospace, monospace;
197
+ }
198
+ ```
199
+
200
+ ### Injected Base Styles
201
+
202
+ The host injects a base reset into every app:
203
+
204
+ ```css
205
+ * { margin: 0; padding: 0; box-sizing: border-box; }
206
+ body {
207
+ font-family: ui-monospace, monospace;
208
+ overflow: auto;
209
+ background: var(--color-surface, #fff);
210
+ color: var(--color-text, #0a0a0a);
211
+ }
212
+ ```
213
+
214
+ Your app's own `<style>` blocks are applied after this reset.
215
+
216
+ ---
217
+
218
+ ## Manifest Reference
219
+
220
+ The manifest is a Markdown file with YAML frontmatter. The body text after `---` is the description shown in the App Store.
221
+
222
+ ```markdown
223
+ ---
224
+ name: My App
225
+ icon: Zap
226
+ # ...fields...
227
+ ---
228
+
229
+ Description shown in the App Store listing.
230
+ ```
231
+
232
+ ### Base Fields
233
+
234
+ | Field | Type | Required | Default | Description |
235
+ |-------|------|:---:|---------|-------------|
236
+ | `name` | string | yes | folder name | Display name |
237
+ | `icon` | string | no | `Box` | [Lucide](https://lucide.dev) icon name |
238
+ | `category` | string | no | `general` | App Store category filter |
239
+ | `size` | string | no | `1x1` | Default grid size `WxH` (1=320x280, 2=640x560, 3=960x840) |
240
+ | `permissions` | string[] | no | `[]` | Wallet permissions the app needs |
241
+ | `data` | string[] | no | `[]` | Real-time WebSocket channels to subscribe to (informational) |
242
+
243
+ ### Permissions
244
+
245
+ Declare the permissions your app needs. Apps with permissions or limits require human approval before the engine creates auth tokens for them. Zero-permission apps skip approval.
246
+
247
+ Valid permission strings (see [AUTH.md](./AUTH.md) for full details):
248
+
249
+ | Permission | Description |
250
+ |------------|-------------|
251
+ | `wallet:list` | List/view wallets and balances |
252
+ | `wallet:create:hot` | Create hot wallets |
253
+ | `wallet:create:temp` | Create temp wallets |
254
+ | `wallet:rename` | Rename wallets |
255
+ | `wallet:export` | Export private keys |
256
+ | `send:hot` | Send from hot wallets |
257
+ | `send:temp` | Send from temp wallets |
258
+ | `swap` | Execute token swaps |
259
+ | `fund` | Transfer cold to hot |
260
+ | `launch` | Launch tokens via Doppler |
261
+ | `action:create` | Create human action requests |
262
+ | `apikey:get` | Read API keys |
263
+ | `apikey:set` | Manage API keys |
264
+ | `strategy:read` | View strategies |
265
+ | `strategy:manage` | Enable/disable strategies |
266
+ | `trade:all` | Compound: all trading + apikey:get |
267
+ | `wallet:write` | Compound: all wallet write ops |
268
+
269
+ ### Extending Your App with Strategy Fields
270
+
271
+ Any app can become AI-powered by adding strategy fields to its `app.md` manifest. A strategy is just an app that activates the AI engine — there is no separate directory or manifest format.
272
+
273
+ The strategy-specific fields are:
274
+
275
+ | Field | Purpose |
276
+ |-------|---------|
277
+ | `ticker` | Schedule tick interval (`sniper`, `active`, `standard`, `slow`, `maintenance`) |
278
+ | `jobs` | Multi-interval scheduling (alternative to `ticker`) |
279
+ | `hooks` | Natural-language AI instructions (`tick`, `message`, `init`, `execute`, `result`, `shutdown`) |
280
+ | `sources` | External data endpoints fetched each tick |
281
+ | `keys` | API key declarations |
282
+ | `config` | Strategy configuration passed to hooks |
283
+ | `limits` | Spending caps (`fund`, `send`) |
284
+ | `allowedHosts` | Hostnames allowed for external fetches |
285
+
286
+ Adding any of these fields turns your app into a strategy. The base fields (`name`, `icon`, `category`, `size`, `permissions`, `data`) remain the same.
287
+
288
+ See [DEVELOPING-STRATEGIES.md](./wallet/DEVELOPING-STRATEGIES.md) for the full reference on these fields, hook lifecycle, sources, intents, and examples.
289
+
290
+ ---
291
+
292
+ ## Security Model
293
+
294
+ Installed apps run in a strict sandbox with isolation guarantees.
295
+
296
+ ### Sandbox Restrictions
297
+
298
+ The iframe is created with `sandbox="allow-scripts"` **without** `allow-same-origin`:
299
+
300
+ | Capability | Allowed? | Reason |
301
+ |-----------|----------|--------|
302
+ | JavaScript execution | Yes | `allow-scripts` is set |
303
+ | Access parent DOM | No | No `allow-same-origin` |
304
+ | Read/write cookies | No | Opaque origin |
305
+ | Use localStorage/sessionStorage | No | Opaque origin |
306
+ | Submit forms | No | No `allow-forms` |
307
+ | Open popups | No | No `allow-popups` |
308
+ | Navigate top frame | No | No `allow-top-navigation` |
309
+
310
+ Apps are loaded via blob URLs (opaque origin `null`). Each app runs in complete isolation from the parent page and other apps.
311
+
312
+ ### Communication Model
313
+
314
+ ```
315
+ App iframe --fetch()--------> Express :4242/apps/<id>/storage/* (Bearer token)
316
+ App iframe --fetch()--------> Express :4242/apps/<id>/message (Bearer token)
317
+ App iframe --fetch()--------> Express :4242/apps/<id>/fetch (Bearer token, proxied)
318
+ App iframe --postMessage--> Host (subscriptions via on())
319
+ ```
320
+
321
+ The Bearer token is injected as `window.__AURA_TOKEN__` before the SDK loads. Tokens are scoped per-app and carry only `app:storage` permission by default.
322
+
323
+ ### What Apps Cannot Do
324
+
325
+ - Access the parent page's DOM, JavaScript scope, or React state
326
+ - Read admin tokens or wallet credentials (apps get scoped tokens)
327
+ - Access other apps' storage (tokens scoped by app ID)
328
+ - Load external scripts (`<script src="...">` tags are stripped)
329
+ - Fetch private/internal IPs (SSRF prevention)
330
+
331
+ ---
332
+
333
+ ## Storage API (REST)
334
+
335
+ The SDK wraps these endpoints, but they can also be called directly with a Bearer token.
336
+
337
+ ### Endpoints (Express :4242)
338
+
339
+ | Endpoint | Method | Permission | Description |
340
+ |----------|--------|------------|-------------|
341
+ | `/apps/:appId/storage` | GET | `app:storage` | List all keys and values |
342
+ | `/apps/:appId/storage/:key` | GET | `app:storage` | Read a single value |
343
+ | `/apps/:appId/storage/:key` | PUT | `app:storage` | Write a value (upsert) |
344
+ | `/apps/:appId/storage/:key` | DELETE | `app:storage` | Delete a key |
345
+ | `/apps/:appId/apikey/:keyName` | GET | `app:accesskey` | Read an API key |
346
+ | `/apps/:appId/approve` | POST | `strategy:manage` | Approve app permissions |
347
+ | `/apps/:appId/approve` | DELETE | `strategy:manage` | Revoke app approval |
348
+ | `/apps/:appId/token` | GET | admin | Get app's Bearer token |
349
+
350
+ Storage is scoped by `appId`. A token with `app:storage` can only access storage matching its own `agentId`. Use `app:storage:all` for cross-app access.
351
+
352
+ ---
353
+
354
+ ## Example: Annotated Kanban App
355
+
356
+ A complete UI app (`apps/example-kanban/`) demonstrating storage, theming, and vanilla JS patterns.
357
+
358
+ ### Manifest (`app.md`)
359
+
360
+ ```markdown
361
+ ---
362
+ name: Kanban Board
363
+ icon: LayoutGrid
364
+ category: productivity
365
+ size: 2x2
366
+ permissions:
367
+ data:
368
+ ---
369
+
370
+ A simple kanban board for tracking tasks. Demonstrates app storage
371
+ persistence -- your cards survive page reloads.
372
+ ```
373
+
374
+ ### Entry Point (`index.html`)
375
+
376
+ ```html
377
+ <!DOCTYPE html>
378
+ <html>
379
+ <head>
380
+ <style>
381
+ body {
382
+ font-family: ui-monospace, monospace;
383
+ background: var(--color-surface, #fff);
384
+ color: var(--color-text, #0a0a0a);
385
+ padding: 8px;
386
+ font-size: 10px;
387
+ }
388
+ .column {
389
+ border: 1px solid var(--color-border, #d4d4d8);
390
+ background: var(--color-background-alt, #f4f4f5);
391
+ }
392
+ .card {
393
+ background: var(--color-surface, #fff);
394
+ border: 1px solid var(--color-border, #d4d4d8);
395
+ }
396
+ .card:hover {
397
+ border-color: var(--color-border-focus, #0a0a0a);
398
+ }
399
+ </style>
400
+ </head>
401
+ <body>
402
+ <div class="header">
403
+ <span class="title">Kanban</span>
404
+ <button class="add-btn" onclick="showAddForm()">+ ADD</button>
405
+ </div>
406
+ <div class="columns" id="columns"></div>
407
+
408
+ <script>
409
+ var app = window.AuraApp;
410
+ var state = { cards: [] };
411
+
412
+ function save() {
413
+ if (app && app.storage) {
414
+ app.storage.set('kanban', state).catch(function() {});
415
+ }
416
+ }
417
+
418
+ function init() {
419
+ if (app && app.storage) {
420
+ app.storage.get('kanban').then(function(data) {
421
+ if (data && data.cards) { state = data; }
422
+ render();
423
+ }).catch(function() { render(); });
424
+ } else {
425
+ render();
426
+ }
427
+ }
428
+
429
+ function escapeHtml(str) {
430
+ var div = document.createElement('div');
431
+ div.textContent = str;
432
+ return div.innerHTML;
433
+ }
434
+
435
+ function render() {
436
+ // Build columns, cards, drag-and-drop handlers
437
+ // Each state change calls save() then render()
438
+ }
439
+
440
+ init();
441
+ </script>
442
+ </body>
443
+ </html>
444
+ ```
445
+
446
+ ### Key Patterns
447
+
448
+ 1. **Theme integration** -- All colors use `var(--color-*)` with fallbacks
449
+ 2. **Storage persistence** -- `storage.get()` on init, `storage.set()` on every change
450
+ 3. **Graceful degradation** -- Works even if `AuraApp` is not available
451
+ 4. **XSS prevention** -- User input escaped via `textContent`/`innerHTML`
452
+ 5. **Vanilla JS only** -- No build step, no external dependencies
453
+ 6. **Inline everything** -- All CSS and JS in a single file (external `<script src>` tags are stripped)
package/docs/MCP.md ADDED
@@ -0,0 +1,122 @@
1
+ # MCP
2
+
3
+ AuraMaxx MCP server exposes credential vault and wallet APIs to MCP clients over stdio.
4
+
5
+ ## Start
6
+
7
+ ```bash
8
+ auramaxx
9
+ auramaxx mcp
10
+ ```
11
+
12
+ `auramaxx` starts the API server on `http://localhost:4242` and dashboard UI on `http://localhost:4747`.
13
+
14
+ Auto-configure local IDE MCP files:
15
+
16
+ ```bash
17
+ auramaxx mcp --install
18
+ ```
19
+
20
+ ## Per-client setup (exact locations + JSON)
21
+
22
+ Use the client-specific setup guide:
23
+
24
+ - `docs/AGENT_SETUP.md`
25
+
26
+ It includes exact config locations, copy-paste JSON, restart steps, and quick verification for Cursor, Codex, Claude Desktop, OpenClaw, and generic MCP clients.
27
+
28
+ ## MCP Resources
29
+
30
+ - `docs://api`
31
+ - `docs://auth`
32
+ - `docs://guide`
33
+
34
+ ## Tools (12)
35
+
36
+ | # | Tool | Description |
37
+ |---|------|-------------|
38
+ | 1 | `get_secret` | Look up a credential by name/tag, decrypt and return all fields |
39
+ | 2 | `put_secret` | Store a new credential (note type) in the default vault |
40
+ | 3 | `list_secrets` | List credentials with optional query/tag/vault/lifecycle filters |
41
+ | 4 | `del_secret` | Delete a credential by name |
42
+ | 5 | `inject_secret` | Read a credential and inject its value as an env var (or into a child process) |
43
+ | 6 | `share_secret` | Create a time-limited shareable link for a credential |
44
+ | 7 | `api` | Generic AuraMaxx API caller (any endpoint, any method) |
45
+ | 8 | `auth` | Request an authenticated session token (ephemeral RSA + human approval polling) |
46
+ | 9 | `get_token` | Check if session has an active token (poll after `auth` for approval status) |
47
+ | 10 | `status` | Get server setup/unlock health state |
48
+ | 11 | `start` | Start the AuraMaxx server in headless mode if not already running |
49
+ | 12 | `write_diary` | Append an entry to a daily diary note |
50
+
51
+ `api` is the generic fallback for any endpoint; the other tools provide typed, higher-level operations.
52
+
53
+ ## Skill Install
54
+
55
+ Install AuraMaxx skills for your AI agents:
56
+
57
+ ```bash
58
+ npx auramaxx skill
59
+ ```
60
+
61
+ This auto-installs skills for Claude, Codex, and OpenClaw. Verify with:
62
+
63
+ ```bash
64
+ npx auramaxx skill --doctor
65
+ ```
66
+
67
+ If auto-install fails, use the fallback:
68
+
69
+ ```bash
70
+ cd <your-codebase> && npx -y skills add Aura-Industry/auramaxx
71
+ ```
72
+
73
+ For a pushed GitHub ref (branch or commit):
74
+
75
+ ```bash
76
+ python3 ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py \
77
+ --repo Aura-Industry/auramaxx \
78
+ --path skills/auramaxx \
79
+ --ref <branch-or-commit>
80
+ ```
81
+
82
+ `write_diary` appends to `{YYYY-MM-DD}_LOGS` notes using agent vault by default, with fallback to primary vault.
83
+ Diary notes use canonical note field key `content` (`value` is accepted as a legacy alias and normalized).
84
+
85
+ ## Credential read flow via MCP
86
+
87
+ 1. Obtain token (`auth` tool, or socket bootstrap, or `AURA_TOKEN` env var)
88
+ 2. If using `auth`, poll with `get_token` until `hasToken: true` (approval is async)
89
+ 3. Call `get_secret` (high-level) or `api` POST `/credentials/:id/read` (low-level)
90
+ 4. Decrypt returned `encrypted` payload in your MCP host
91
+
92
+ Note:
93
+ - Typed tools (`get_secret`, `put_secret`, `del_secret`, `share_secret`, `inject_secret`, `write_diary`) use the active MCP token directly.
94
+ - Typed helpers have **built-in 403 escalation** — on permission denied they automatically return a structured `requiresHumanApproval` response. You do not need to detect 403s yourself for typed tools.
95
+ - The generic `api` tool does **not** auto-escalate — on 403, check the error response and request appropriate permissions via `auth`.
96
+
97
+ ## 403 escalation ladder
98
+
99
+ 1. Call the typed tool or `api`.
100
+ 2. If 403, typed tools auto-return a `nextStep` with the `api` call params — follow it.
101
+ For `api`, request a new token via `auth` with the required profile/permissions.
102
+ 3. Tell the human to approve in the dashboard at `http://localhost:4747` (or via Telegram/CLI adapter).
103
+ 4. **Never** retry the same blocked call without escalating first.
104
+
105
+ ## Safety pattern
106
+
107
+ - Start with least privilege (`secret:read`, narrow `credentialAccess.read` scopes)
108
+ - Typed tools auto-escalate on 403; for `api`, use `auth` to request a new token
109
+ - Tell the human to approve at `http://localhost:4747`
110
+ - Avoid broad long-lived tokens
111
+
112
+ ## Example call
113
+
114
+ ```json
115
+ {
116
+ "method": "POST",
117
+ "endpoint": "/credentials/cred-123/read",
118
+ "body": {}
119
+ }
120
+ ```
121
+
122
+ See also: [GETTING_SECRETS](./external/HOW_TO_AURAMAXX/GETTING_SECRETS.md), [AUTH](./AUTH.md), and [Troubleshooting](./TROUBLESHOOTING.md).
@@ -0,0 +1,19 @@
1
+ # Packaging Policy (npm publish)
2
+
3
+ Published package should include only runtime-required code and public docs.
4
+
5
+ ## Intentionally excluded
6
+ - `pipeline/**` tasking artifacts
7
+ - `docs/internal/**` internal-only runbooks
8
+ - `docs/specs/**` draft/spec docs not needed at runtime
9
+ - test folders/data (`server/tests/**`, `server/test-data/**`, `src/__tests__/**`)
10
+ - local/dev DB files under `prisma/**.db*`
11
+
12
+ ## Validation rule
13
+ Before release, run:
14
+
15
+ ```bash
16
+ npm pack --dry-run --json
17
+ ```
18
+
19
+ Review tarball file list for accidental internal/dev leakage.