auramaxx 0.0.11 → 0.0.13

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 (342) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +240 -223
  3. package/.next/app-path-routes-manifest.json +8 -7
  4. package/.next/build-manifest.json +14 -14
  5. package/.next/prerender-manifest.json +53 -29
  6. package/.next/react-loadable-manifest.json +41 -41
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +12 -12
  11. package/.next/server/app/api/[...doc]/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/agent-requests/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/apps/install/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/apps/manifests/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/apps/static/[...path]/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/docs/plain/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/events/route.js +1 -19
  18. package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/import-from-openclaw/[channel]/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/import-from-openclaw/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/import-from-openclaw/validate/[channel]/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/restart/route.js +1 -1
  24. package/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/update/route.js +63 -1
  26. package/.next/server/app/api/update/route.js.nft.json +1 -1
  27. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/version/route.js +1 -1
  29. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/workspace/[id]/apps/[wid]/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/workspace/[id]/apps/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/workspace/[id]/export/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/workspace/[id]/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/workspace/config/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/workspace/import/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/workspace/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/app-legacy-do-not-use/page.js +1 -1
  38. package/.next/server/app/app-legacy-do-not-use/page.js.nft.json +1 -1
  39. package/.next/server/app/app-legacy-do-not-use/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/app-legacy-do-not-use.html +1 -1
  41. package/.next/server/app/app-legacy-do-not-use.rsc +14 -14
  42. package/.next/server/app/approve/[actionId]/page.js +1 -1
  43. package/.next/server/app/approve/[actionId]/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/docs/[...doc]/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/health/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/health.html +1 -1
  48. package/.next/server/app/health.rsc +13 -13
  49. package/.next/server/app/hello/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/hello.html +1 -1
  51. package/.next/server/app/hello.rsc +14 -14
  52. package/.next/server/app/index.html +1 -1
  53. package/.next/server/app/index.rsc +18 -21
  54. package/.next/server/app/page.js +3 -3
  55. package/.next/server/app/page.js.nft.json +1 -1
  56. package/.next/server/app/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/privacy.html +1 -1
  59. package/.next/server/app/privacy.rsc +13 -13
  60. package/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/terms.html +1 -1
  63. package/.next/server/app/terms.rsc +13 -13
  64. package/.next/server/app/yo/page.js +2 -0
  65. package/.next/server/app/yo/page.js.nft.json +1 -0
  66. package/.next/server/app/yo/page_client-reference-manifest.js +1 -0
  67. package/.next/server/app/yo.html +1 -0
  68. package/.next/server/app/yo.meta +7 -0
  69. package/.next/server/app/yo.rsc +23 -0
  70. package/.next/server/app-paths-manifest.json +8 -7
  71. package/.next/server/chunks/2145.js +1 -1
  72. package/.next/server/chunks/2460.js +1 -1
  73. package/.next/server/chunks/5246.js +1 -1
  74. package/.next/server/chunks/5678.js +1 -1
  75. package/.next/server/chunks/5784.js +1 -1
  76. package/.next/server/chunks/6086.js +2 -20
  77. package/.next/server/chunks/{5553.js → 6415.js} +2 -2
  78. package/.next/server/chunks/7935.js +2 -2
  79. package/.next/server/functions-config-manifest.json +1 -1
  80. package/.next/server/instrumentation.js +1 -1
  81. package/.next/server/middleware-build-manifest.js +1 -1
  82. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  83. package/.next/server/pages/404.html +1 -1
  84. package/.next/server/pages/500.html +1 -1
  85. package/.next/server/server-reference-manifest.json +1 -1
  86. package/.next/server/webpack-runtime.js +1 -1
  87. package/.next/static/WshFGr6RxGYP6AbWuT9OG/_buildManifest.js +1 -0
  88. package/.next/static/chunks/1168.aaac1edbb597fe5a.js +1 -0
  89. package/.next/static/chunks/1255-7999eac54f80a49f.js +1 -0
  90. package/.next/static/chunks/142-fa9752f53a551f63.js +1 -0
  91. package/.next/static/chunks/2505.d54ccadc42f4e3d1.js +1 -0
  92. package/.next/static/chunks/2619-04bc32f026a0d946.js +1 -0
  93. package/.next/static/chunks/2927.7e00cc878d9a3f52.js +1 -0
  94. package/.next/static/chunks/3573-1b41d7b8a000d015.js +1 -0
  95. package/.next/static/chunks/3609.ded5a5306e18af9c.js +1 -0
  96. package/.next/static/chunks/3667-1db7bd03948e60df.js +1 -0
  97. package/.next/static/chunks/3826.a73d4a88d8c09030.js +1 -0
  98. package/.next/static/chunks/{3a91511d-648a2ba3dad7df0c.js → 3a91511d-ba215c0b5dc21ba9.js} +1 -1
  99. package/.next/static/chunks/4256.48407d9abad5ea33.js +1 -0
  100. package/.next/static/chunks/4685-7f53bbfc4a9845eb.js +1 -0
  101. package/.next/static/chunks/4901-ba6a32818662e70a.js +1 -0
  102. package/.next/static/chunks/4919-7e7cdd5efc9f2110.js +1 -0
  103. package/.next/static/chunks/4bd1b696-100b9d70ed4e49c1.js +1 -0
  104. package/.next/static/chunks/5336-233ec7ab3807267c.js +1 -0
  105. package/.next/static/chunks/5442-b5bb869e832e8967.js +1 -0
  106. package/.next/static/chunks/6233-97a810aa272af547.js +1 -0
  107. package/.next/static/chunks/626.a5109d16f9eca1f6.js +1 -0
  108. package/.next/static/chunks/6872-faea0f088ab2d450.js +1 -0
  109. package/.next/static/chunks/7338-3ce17a93614f1d77.js +59 -0
  110. package/.next/static/chunks/7394-4bdb1feefad1a74a.js +1 -0
  111. package/.next/static/chunks/7616-1129bcb3eee8d315.js +1 -0
  112. package/.next/static/chunks/786-26deffb41572cbb3.js +1 -0
  113. package/.next/static/chunks/8273-8e92d34180669ca9.js +1 -0
  114. package/.next/static/chunks/8357.5dee1e0c4e5bb091.js +1 -0
  115. package/.next/static/chunks/9062-2bc2d089f9c9c6ba.js +1 -0
  116. package/.next/static/chunks/9380.f198afbf0c6b5369.js +1 -0
  117. package/.next/static/chunks/app/_not-found/page-5a8c6a29f762fa58.js +1 -0
  118. package/.next/static/chunks/app/api/[...doc]/page-f0852f35f0fd1d44.js +1 -0
  119. package/.next/static/chunks/app/api/agent-requests/route-cf84f975aad4c719.js +1 -0
  120. package/.next/static/chunks/app/api/apps/install/route-cf84f975aad4c719.js +1 -0
  121. package/.next/static/chunks/app/api/apps/manifests/route-cf84f975aad4c719.js +1 -0
  122. package/.next/static/chunks/app/api/apps/static/[...path]/route-cf84f975aad4c719.js +1 -0
  123. package/.next/static/chunks/app/api/docs/plain/route-cf84f975aad4c719.js +1 -0
  124. package/.next/static/chunks/app/api/events/route-cf84f975aad4c719.js +1 -0
  125. package/.next/static/chunks/app/api/import-from-openclaw/[channel]/route-cf84f975aad4c719.js +1 -0
  126. package/.next/static/chunks/app/api/import-from-openclaw/route-cf84f975aad4c719.js +1 -0
  127. package/.next/static/chunks/app/api/import-from-openclaw/validate/[channel]/route-cf84f975aad4c719.js +1 -0
  128. package/.next/static/chunks/app/api/page-cc59bebcc0d2c01d.js +1 -0
  129. package/.next/static/chunks/app/api/restart/route-cf84f975aad4c719.js +1 -0
  130. package/.next/static/chunks/app/api/update/route-cf84f975aad4c719.js +1 -0
  131. package/.next/static/chunks/app/api/version/route-cf84f975aad4c719.js +1 -0
  132. package/.next/static/chunks/app/api/workspace/[id]/apps/[wid]/route-cf84f975aad4c719.js +1 -0
  133. package/.next/static/chunks/app/api/workspace/[id]/apps/route-cf84f975aad4c719.js +1 -0
  134. package/.next/static/chunks/app/api/workspace/[id]/export/route-cf84f975aad4c719.js +1 -0
  135. package/.next/static/chunks/app/api/workspace/[id]/route-cf84f975aad4c719.js +1 -0
  136. package/.next/static/chunks/app/api/workspace/config/route-cf84f975aad4c719.js +1 -0
  137. package/.next/static/chunks/app/api/workspace/import/route-cf84f975aad4c719.js +1 -0
  138. package/.next/static/chunks/app/api/workspace/route-cf84f975aad4c719.js +1 -0
  139. package/.next/static/chunks/app/app-legacy-do-not-use/page-e5dc864e92d90ca7.js +1 -0
  140. package/.next/static/chunks/app/approve/[actionId]/page-2acca1f490424f21.js +1 -0
  141. package/.next/static/chunks/app/docs/[...doc]/page-8e2a2d036caab242.js +1 -0
  142. package/.next/static/chunks/app/docs/page-acf872a03ff79893.js +1 -0
  143. package/.next/static/chunks/app/error-66f983b7769dabfa.js +1 -0
  144. package/.next/static/chunks/app/health/page-c9185854ed9c86d0.js +1 -0
  145. package/.next/static/chunks/app/hello/page-74c9f4deaa4b03dd.js +1 -0
  146. package/.next/static/chunks/app/layout-af8d9969c7aeb758.js +1 -0
  147. package/.next/static/chunks/app/page-16dfcd1c7cc88bcc.js +1 -0
  148. package/.next/static/chunks/app/privacy/page-8e2d17079355c2cc.js +1 -0
  149. package/.next/static/chunks/app/share/[token]/page-5dd9b0418eee411f.js +1 -0
  150. package/.next/static/chunks/app/terms/page-8e2d17079355c2cc.js +1 -0
  151. package/.next/static/chunks/app/yo/layout-cf84f975aad4c719.js +1 -0
  152. package/.next/static/chunks/app/yo/page-719dc5f213fdfb30.js +1 -0
  153. package/.next/static/chunks/framework-a32a2a465584c0bc.js +1 -0
  154. package/.next/static/chunks/main-0f0f9142f74e7215.js +1 -0
  155. package/.next/static/chunks/main-app-24f0c92ba10af457.js +1 -0
  156. package/.next/static/chunks/pages/_app-4b3fb5e477a0267f.js +1 -0
  157. package/.next/static/chunks/pages/_error-c970d8b55ace1b48.js +1 -0
  158. package/.next/static/chunks/{webpack-768de8b7d6a7a27a.js → webpack-79ad58260e9b10b4.js} +1 -1
  159. package/.next/static/css/83cd401584ab787f.css +3 -0
  160. package/.next/trace +28 -28
  161. package/.next/types/app/yo/layout.ts +84 -0
  162. package/.next/types/app/yo/page.ts +84 -0
  163. package/.next/types/routes.d.ts +4 -2
  164. package/.next/types/validator.ts +18 -0
  165. package/bin/auramaxx.js +11 -26
  166. package/docs/ARCHITECTURE.md +1 -1
  167. package/docs/AUTH.md +6 -3
  168. package/docs/CLI.md +2 -0
  169. package/docs/MCP.md +2 -0
  170. package/docs/TROUBLESHOOTING.md +24 -0
  171. package/docs/credentials.md +2 -0
  172. package/package.json +2 -1
  173. package/prisma/migrations/20260227214000_update_agent_action_ttl_defaults/migration.sql +19 -0
  174. package/public/0a167e5e-4f52-4715-ae23-bf63d259a6b1.png +0 -0
  175. package/public/141ec92c-6780-4b23-838f-9a7bf1e91bb8.png +0 -0
  176. package/public/3afc4935-92cb-42af-9624-0b1341c12a5e.png +0 -0
  177. package/public/43947df5-dbcf-4e49-ab8b-41b9162c0410.png +0 -0
  178. package/public/5aeae9ce-0d38-49ea-8fd1-167892a04a85.png +0 -0
  179. package/public/660e4ea3-a3a6-4be4-a8ca-2cb74c51dfb5.png +0 -0
  180. package/public/733f02d7-6b58-4ba6-a5c8-d062cd205e1d.png +0 -0
  181. package/public/a32d65cb-95b0-4977-be6b-cf69f515afbe.png +0 -0
  182. package/public/agent1.png +0 -0
  183. package/public/agent10.png +0 -0
  184. package/public/agent2.png +0 -0
  185. package/public/agent3.png +0 -0
  186. package/public/agent4.png +0 -0
  187. package/public/agent5.png +0 -0
  188. package/public/agent6.png +0 -0
  189. package/public/agent7.png +0 -0
  190. package/public/agent8.png +0 -0
  191. package/public/agent9.png +0 -0
  192. package/public/c4938305-b811-4ccc-91db-94d309734827.png +0 -0
  193. package/public/f2ca6825-a4f3-4107-815c-51ee740dfc09.png +0 -0
  194. package/public/llm.txt +2 -0
  195. package/public/llms.txt +39 -0
  196. package/public/ss-dark1.png +0 -0
  197. package/public/ss-dark1.webp +0 -0
  198. package/public/ss-dark2.png +0 -0
  199. package/public/ss-dark2.webp +0 -0
  200. package/public/ss-dark3.png +0 -0
  201. package/public/ss-dark3.webp +0 -0
  202. package/public/ss-light1.png +0 -0
  203. package/public/ss-light1.webp +0 -0
  204. package/public/ss-light2.png +0 -0
  205. package/public/ss-light2.webp +0 -0
  206. package/public/ss-light3.png +0 -0
  207. package/public/ss-light3.webp +0 -0
  208. package/shared/agent-profile-schema.ts +81 -0
  209. package/shared/credential-field-schema.ts +12 -0
  210. package/skills/auramaxx/SKILL.md +71 -691
  211. package/src/app/UnlockPageClient.tsx +1939 -0
  212. package/src/app/api/page.tsx +8 -9
  213. package/src/app/api/restart/route.ts +2 -18
  214. package/src/app/api/update/route.ts +104 -51
  215. package/src/app/approve/[actionId]/page.tsx +4 -1
  216. package/src/app/docs/DocsPageContent.tsx +3 -3
  217. package/src/app/globals.css +94 -0
  218. package/src/app/layout.tsx +1 -0
  219. package/src/app/page.tsx +25 -1935
  220. package/src/app/yo/layout.tsx +29 -0
  221. package/src/app/yo/page.tsx +528 -0
  222. package/src/components/HumanActionBar.tsx +34 -8
  223. package/src/components/agent/AgentSidebar.tsx +3 -1
  224. package/src/components/agent/CredentialAgent.tsx +5 -1
  225. package/src/components/agent/CredentialDetail.tsx +32 -1
  226. package/src/components/agent/CredentialForm.tsx +94 -7
  227. package/src/components/agent/CredentialRow.tsx +8 -1
  228. package/src/components/agent/credentialFormName.ts +22 -1
  229. package/src/components/agent/types.ts +2 -2
  230. package/src/components/design-system/Modal.tsx +14 -1
  231. package/src/hooks/useUpdateChecker.ts +17 -1
  232. package/src/lib/pino.ts +77 -8
  233. package/src/server/cli/commands/actions.ts +1 -1
  234. package/src/server/cli/commands/agent.ts +110 -65
  235. package/src/server/cli/commands/approve.ts +1 -1
  236. package/src/server/cli/commands/auth.ts +81 -20
  237. package/src/server/cli/commands/start.ts +42 -3
  238. package/src/server/cli/commands/token.ts +2 -2
  239. package/src/server/cli/lib/escalation.ts +109 -24
  240. package/src/server/cli/lib/process.ts +54 -1
  241. package/src/server/cli/socket.ts +1 -1
  242. package/src/server/index.ts +2 -0
  243. package/src/server/lib/agent-profile-records.ts +72 -0
  244. package/src/server/lib/credential-transport.ts +27 -11
  245. package/src/server/lib/defaults.ts +3 -3
  246. package/src/server/lib/escalation-responder.ts +1 -1
  247. package/src/server/lib/resolve-action.ts +2 -2
  248. package/src/server/lib/update-check.ts +1 -1
  249. package/src/server/mcp/server.ts +6 -1
  250. package/src/server/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  251. package/src/server/routes/actions.ts +2 -2
  252. package/src/server/routes/agent-profiles.ts +82 -0
  253. package/src/server/routes/auth.ts +39 -4
  254. package/src/server/routes/credentials.ts +18 -0
  255. package/src/server/tests/cli/agent-auth.test.ts +20 -39
  256. package/src/server/tests/cli/agent.test.ts +18 -0
  257. package/src/server/tests/cli/auth-action-flag.test.ts +3 -2
  258. package/src/server/tests/cli/bin-entrypoint.test.ts +35 -11
  259. package/src/server/tests/cli/escalation.test.ts +7 -3
  260. package/src/server/tests/cli/process.test.ts +3 -3
  261. package/src/server/tests/cli/socket.test.ts +2 -2
  262. package/src/server/tests/cli/start-run.test.ts +24 -1
  263. package/src/server/tests/endpoints/actions.test.ts +2 -2
  264. package/src/server/tests/endpoints/agent-profiles.test.ts +117 -0
  265. package/src/server/tests/endpoints/auth.test.ts +34 -0
  266. package/src/server/tests/lib/credential-transport.test.ts +68 -2
  267. package/src/server/tests/lib/defaults.test.ts +2 -2
  268. package/src/server/tests/lib/escalation-responder.test.ts +2 -2
  269. package/src/server/tests/lib/update-check.test.ts +1 -1
  270. package/src/server/tests/setup.ts +7 -0
  271. package/src/server/tsconfig.tsbuildinfo +1 -1
  272. package/src/server/types.ts +1 -1
  273. package/.next/static/AcaCjQ4akovHBUnVGPpfN/_buildManifest.js +0 -1
  274. package/.next/static/chunks/1168.63dbb444a33b1867.js +0 -1
  275. package/.next/static/chunks/1255-e8718b02724690dd.js +0 -1
  276. package/.next/static/chunks/142-aeaf7ffa9c53516d.js +0 -1
  277. package/.next/static/chunks/2505.22aaa333fd65908f.js +0 -1
  278. package/.next/static/chunks/2619-3c9e02e22d10480a.js +0 -1
  279. package/.next/static/chunks/2927.e7e9e2a1b8d2dc61.js +0 -1
  280. package/.next/static/chunks/3573-27e17f4ff2dd86ed.js +0 -1
  281. package/.next/static/chunks/3609.6f8e0ecd6de9566c.js +0 -1
  282. package/.next/static/chunks/3667-d6770121629db38b.js +0 -1
  283. package/.next/static/chunks/3826.7dfe96467cd74e45.js +0 -1
  284. package/.next/static/chunks/4256.50cb375c979ffd5a.js +0 -1
  285. package/.next/static/chunks/4685-3f8d92f574366fec.js +0 -1
  286. package/.next/static/chunks/4901-54c1ac380b7b43bb.js +0 -1
  287. package/.next/static/chunks/4919-fe6f1553abfc9420.js +0 -1
  288. package/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +0 -1
  289. package/.next/static/chunks/5336-bd251f91235f7c11.js +0 -1
  290. package/.next/static/chunks/5442-be197c885bf12079.js +0 -1
  291. package/.next/static/chunks/5553-c8b86fe3513fce04.js +0 -59
  292. package/.next/static/chunks/6233-44e6fe57a552a816.js +0 -1
  293. package/.next/static/chunks/626.2583673a0386a81b.js +0 -1
  294. package/.next/static/chunks/6872-6442f2f5cce36ce5.js +0 -1
  295. package/.next/static/chunks/7411-3ca797c21b722ccd.js +0 -1
  296. package/.next/static/chunks/7616-b8bd37ce1f735d6f.js +0 -1
  297. package/.next/static/chunks/786-9ed39f96091b2be4.js +0 -1
  298. package/.next/static/chunks/8273-922091226ba84a94.js +0 -1
  299. package/.next/static/chunks/8357.6159472717ff7d11.js +0 -1
  300. package/.next/static/chunks/9062-3eb1607c96486f88.js +0 -1
  301. package/.next/static/chunks/9380.93f361baab2eefdf.js +0 -1
  302. package/.next/static/chunks/app/_not-found/page-c3b87025baf0a9c2.js +0 -1
  303. package/.next/static/chunks/app/api/[...doc]/page-790c4b33ba1fde4a.js +0 -1
  304. package/.next/static/chunks/app/api/agent-requests/route-e83b12cbab2e8707.js +0 -1
  305. package/.next/static/chunks/app/api/apps/install/route-e83b12cbab2e8707.js +0 -1
  306. package/.next/static/chunks/app/api/apps/manifests/route-e83b12cbab2e8707.js +0 -1
  307. package/.next/static/chunks/app/api/apps/static/[...path]/route-e83b12cbab2e8707.js +0 -1
  308. package/.next/static/chunks/app/api/docs/plain/route-e83b12cbab2e8707.js +0 -1
  309. package/.next/static/chunks/app/api/events/route-e83b12cbab2e8707.js +0 -1
  310. package/.next/static/chunks/app/api/import-from-openclaw/[channel]/route-e83b12cbab2e8707.js +0 -1
  311. package/.next/static/chunks/app/api/import-from-openclaw/route-e83b12cbab2e8707.js +0 -1
  312. package/.next/static/chunks/app/api/import-from-openclaw/validate/[channel]/route-e83b12cbab2e8707.js +0 -1
  313. package/.next/static/chunks/app/api/page-b53f9aa17a4c5201.js +0 -1
  314. package/.next/static/chunks/app/api/restart/route-e83b12cbab2e8707.js +0 -1
  315. package/.next/static/chunks/app/api/update/route-e83b12cbab2e8707.js +0 -1
  316. package/.next/static/chunks/app/api/version/route-e83b12cbab2e8707.js +0 -1
  317. package/.next/static/chunks/app/api/workspace/[id]/apps/[wid]/route-e83b12cbab2e8707.js +0 -1
  318. package/.next/static/chunks/app/api/workspace/[id]/apps/route-e83b12cbab2e8707.js +0 -1
  319. package/.next/static/chunks/app/api/workspace/[id]/export/route-e83b12cbab2e8707.js +0 -1
  320. package/.next/static/chunks/app/api/workspace/[id]/route-e83b12cbab2e8707.js +0 -1
  321. package/.next/static/chunks/app/api/workspace/config/route-e83b12cbab2e8707.js +0 -1
  322. package/.next/static/chunks/app/api/workspace/import/route-e83b12cbab2e8707.js +0 -1
  323. package/.next/static/chunks/app/api/workspace/route-e83b12cbab2e8707.js +0 -1
  324. package/.next/static/chunks/app/app-legacy-do-not-use/page-0052191daef60036.js +0 -1
  325. package/.next/static/chunks/app/approve/[actionId]/page-45cd3b8fa062d5e5.js +0 -1
  326. package/.next/static/chunks/app/docs/[...doc]/page-632ac406200b66fe.js +0 -1
  327. package/.next/static/chunks/app/docs/page-b7556394709b43df.js +0 -1
  328. package/.next/static/chunks/app/error-3d6057da512253d8.js +0 -1
  329. package/.next/static/chunks/app/health/page-80c985cd72328b74.js +0 -1
  330. package/.next/static/chunks/app/hello/page-fd71babcd192729b.js +0 -1
  331. package/.next/static/chunks/app/layout-285c6ef3f16bae63.js +0 -1
  332. package/.next/static/chunks/app/page-85017185df14c37b.js +0 -1
  333. package/.next/static/chunks/app/privacy/page-faf36cd0dde6dfa3.js +0 -1
  334. package/.next/static/chunks/app/share/[token]/page-22d51d6c5a47bb75.js +0 -1
  335. package/.next/static/chunks/app/terms/page-faf36cd0dde6dfa3.js +0 -1
  336. package/.next/static/chunks/framework-e60c938074ff7136.js +0 -1
  337. package/.next/static/chunks/main-447abf206d7ebd2f.js +0 -1
  338. package/.next/static/chunks/main-app-f63b86bdbf5b7b88.js +0 -1
  339. package/.next/static/chunks/pages/_app-6c8c2371b16a04b8.js +0 -1
  340. package/.next/static/chunks/pages/_error-94812ad32cad7365.js +0 -1
  341. package/.next/static/css/eb25c6452113486f.css +0 -3
  342. /package/.next/static/{AcaCjQ4akovHBUnVGPpfN → WshFGr6RxGYP6AbWuT9OG}/_ssgManifest.js +0 -0
@@ -1,745 +1,125 @@
1
1
  ---
2
2
  name: auramaxx
3
3
  description: |
4
- Securely store, retrieve, and share sensitive data with your human.
5
- Use when the user asks for credentials, API keys, credit cards, passwords, or any kind of secret that should not be exposed.
6
- compatibility: Requires Node.js 18+. Network access to RPC endpoints.
4
+ Minimal AuraMaxx skill: trigger on secret/login intents, then use concrete CLI examples (list -> get/set/inject).
5
+ compatibility: Requires Node.js 18+ with local AuraMaxx runtime.
7
6
  allowed-tools: Bash(npx auramaxx *), Bash(auramaxx *), Bash(aura *), Bash(curl *)
8
7
  metadata:
9
8
  author: auramaxx
10
- version: "2.1"
9
+ version: "3.0"
11
10
  ---
12
11
 
13
- # AuraMaxx
12
+ # AuraMaxx (Minimal)
14
13
 
15
- Securely store, retrieve, and share sensitive data with your human. Secrets never leave the machine.
14
+ Use this skill for credential and secret workflows.
16
15
 
17
- | Service | URL |
18
- |---------|-----|
19
- | Wallet Server | `http://localhost:4242` |
20
- | Dashboard UI | `http://localhost:4747` |
21
- | WebSocket | `ws://localhost:4748` |
16
+ ## When To Use
22
17
 
23
- > **SECURITY:** This server runs locally. Never expose these ports to the internet.
18
+ Always use this skill when user intent matches any of these:
24
19
 
25
- ---
26
-
27
- ## Execution Priority (Agent)
28
-
29
- For agent work, always use this order:
30
-
31
- 1. CLI commands (`npx auramaxx ...`) — default path
32
- 2. `curl` API calls — fallback when no CLI equivalent is available
33
- 3. MCP tool calls (`api`, `auth`, `get_token`, `get_secret`, `put_secret`, `del_secret`, `inject_secret`, `share_secret`, `status`, `start`, `unlock`, `doctor`, `list_secrets`, `write_diary`)
34
-
35
- > **Note:** MCP tools use short names (`api`, `auth`). The strategy engine's Tool-Call/Hook mode still uses `wallet_api` and `request_human_action` internally — see the Tool-Call Mode section below.
36
-
37
- > **Command-time secret rule:** `get` returns an encrypted value for display/reference only. When the user asks to run a command with a secret, use `inject` — it decrypts the value into an env variable of your choice without ever printing it:
38
- >
39
- > ```bash
40
- > npx auramaxx inject <SECRET_NAME> --env <ENV_VAR> -- <command>
41
- > ```
42
- >
43
- > Never print or log the decrypted env variable. Never use `get` then paste the value into a command.
20
+ - "log into my <site/service>" (example: "log into my facebook")
21
+ - "what is my <site/service> password"
22
+ - "find my <service> api key/token"
23
+ - "give me my credit card details"
24
+ - "run this command with my <secret>"
44
25
 
45
- ---
46
-
47
- ## Modes
48
-
49
- Use one skill with two explicit modes:
50
- - **Setup Mode**: first-time onboarding, agent initialization, unlock recovery, and first scoped token issuance.
51
- - **Operations Mode**: day-2 wallet work (credentials, send/swap/fund, launch, and approvals).
26
+ ## Auth Precedence
52
27
 
53
- ### Setup Mode (first run / recovery)
28
+ CLI auth order:
54
29
 
55
- Enter Setup Mode when:
56
- - the user asks to onboard, initialize, unlock, or bootstrap agent access
57
- - `GET /setup` reports `hasWallet=false` or `unlocked=false`
30
+ 1. `AURA_TOKEN` env
31
+ 2. socket bootstrap
32
+ 3. `/auth` fallback
58
33
 
59
- Exit Setup Mode only after all are true:
60
- - `hasWallet=true`
61
- - `unlocked=true`
62
- - agent has an active token
34
+ Notes:
63
35
 
64
- #### Setup flow
36
+ - No stored-session fallback in this chain.
37
+ - If `--profile` / `--profile-version` are omitted, CLI resolves from `trust.localProfile` / `trust.localProfileVersion`, then seed defaults (`admin`, `v1`).
38
+ - `AURA_AUTH_PROFILE` / `AURA_AGENT_PROFILE` are not used for CLI fallback profile selection.
65
39
 
66
- On first connect, or when the user asks about setup, run this decision tree:
40
+ ## Retrieval Flow (Do This First)
67
41
 
68
- #### Step 1: Check server
42
+ For login/API key/card/password requests:
69
43
 
70
- ```
71
- api GET /health
72
- ```
44
+ 1. List first with a scoped query.
45
+ 2. Select the matching credential.
46
+ 3. Then run `get` (for read) or `inject` (for command execution).
73
47
 
74
- **Connection refused / error:**
75
- First, try starting the server automatically:
48
+ Examples:
76
49
 
77
50
  ```bash
78
- npx auramaxx start --headless
51
+ aura list --name facebook --json
52
+ aura list --name stripe --json
53
+ aura list --name visa --json
79
54
  ```
80
55
 
81
- If that succeeds, retry `GET /health`. If it fails (no agent exists yet), proceed with init:
82
-
83
-
84
- **Human-assisted:** Run `npx auramaxx init --dashboard` via bash. This is non-interactive and agent-safe — it starts the server + dashboard, then waits for the human to create a agent in the browser. Poll `GET /health` until the server is up, then continue to Step 2.
85
-
86
- **Fully autonomous:** Run `npx auramaxx init --password "AGENT_CHOSEN_PASSWORD"` via bash. This creates the agent non-interactively — prints the seed phrase, cold wallet address, and admin token to stdout. No browser needed. Store the password in env (e.g. `AURA_AGENT_PASSWORD`) for future unlock operations via `POST /unlock` (encrypted password + `pubkey`).
87
-
88
- **200 OK:** Continue to Step 2.
89
-
90
- #### Step 2: Check setup state
91
-
92
- ```
93
- api GET /setup
94
- ```
95
-
96
- This is a public endpoint (no auth needed). Response:
97
-
98
- ```json
99
- {
100
- "hasWallet": true,
101
- "unlocked": true,
102
- "address": "0x...",
103
- "adapters": { "telegram": false, "webhook": false },
104
- "apiKeys": { "alchemy": true, "anthropic": false },
105
- "defaultChain": "base"
106
- }
107
- ```
108
-
109
- **If `hasWallet` is false:**
110
-
111
- Two options:
112
-
113
- **Human-assisted:**
114
- > "You need to create a agent. Open http://localhost:4747/ to set a password — I'll wait."
115
-
116
- Poll `GET /setup` until `hasWallet` becomes `true`.
117
-
118
- **Fully autonomous (CLI):** Run `npx auramaxx init --password "AGENT_CHOSEN_PASSWORD"` via bash. This creates the agent non-interactively. Store the password for future unlock operations.
119
-
120
- **If `unlocked` is false:**
121
- > "Your agent is locked. Open the dashboard at http://localhost:4747/ to unlock it."
122
-
123
- Prefer the dashboard (`http://localhost:4747/`) for unlocking. Only suggest the standalone Express unlock page (`http://localhost:4242/unlock`) or `npx auramaxx unlock` as fallbacks if the dashboard is not running (e.g., headless mode with `--headless` flag).
124
-
125
- Poll `GET /setup` until `unlocked` becomes `true`.
126
-
127
- **If ready (both true):** Continue to Step 3.
128
-
129
- #### Step 3: Bootstrap token (least privilege first)
130
-
131
- Request a minimal token via CLI first:
56
+ If ambiguous, narrow by field:
132
57
 
133
58
  ```bash
134
- npx auramaxx auth request --agent-id claude-assistant --profile strict
59
+ aura list --name facebook --field username --json
135
60
  ```
136
61
 
137
- This handles `POST /auth` + polling `GET /auth/:requestId?secret=...` automatically.
62
+ API equivalent:
138
63
 
139
- If CLI is unavailable, use the MCP `auth` tool (handles keypair + polling automatically), or the manual API flow:
140
-
141
- ```
142
- api POST /auth
143
- body: {
144
- "agentId": "claude-assistant",
145
- "permissions": ["secret:read", "secret:write"],
146
- "ttl": 3600,
147
- "pubkey": "<RSA public key PEM or base64>"
148
- }
149
- ```
150
-
151
- Response: `{ "requestId": "abc-123", "secret": "def-456" }`
152
-
153
- > "I've requested access to your wallet. Please approve the request — you'll see it in your dashboard at http://localhost:4747/, or via Telegram/CLI if you have those set up."
154
-
155
- Poll every 3 seconds, up to 2 minutes:
156
-
157
- ```
158
- api GET /auth/abc-123?secret=def-456
159
- ```
160
-
161
- - `{ "status": "pending" }` — keep polling
162
- - `{ "status": "approved", "token": "eyJ..." }` — save immediately; MCP runtime auto-activates the token for this session
163
- - `{ "status": "rejected" }` — inform user, ask if they want to try again
164
-
165
- **Important:** The token can only be read once. MCP bootstrap keeps it active for the current session automatically.
166
-
167
- If setup work needs higher privilege (API key or adapter configuration), request an upgraded onboarding token:
168
-
169
- ```
170
- api POST /auth
171
- body: {
172
- "agentId": "claude-assistant",
173
- "permissions": ["trade:all", "apikey:set", "adapter:manage"],
174
- "limits": { "fund": 0.5, "send": 1.0, "swap": 0.5 },
175
- "ttl": 3600,
176
- "pubkey": "<RSA public key PEM or base64>"
177
- }
64
+ ```text
65
+ GET /credentials?q=facebook
178
66
  ```
179
67
 
180
- #### Step 4: Configure missing pieces
181
-
182
- Check the `GET /setup` response and offer to configure anything that's missing. Each step is optional — let the user decide. If any call returns `403`, request the upgraded onboarding token from Step 3.
183
-
184
- **Alchemy RPC Key** (when `apiKeys.alchemy` is `false`):
185
-
186
- > "I see you don't have an Alchemy RPC key configured. Public RPCs work but can be unreliable for real transactions. Alchemy has a free tier — you can get a key at https://alchemy.com. Want to set one up?"
187
-
188
- If user provides a key — validate then save:
189
-
190
- ```
191
- api POST /apikeys/validate
192
- body: { "service": "alchemy", "key": "USER_KEY_HERE" }
193
- ```
194
-
195
- - `{ "valid": true }` → save with `POST /apikeys` body: `{ "service": "alchemy", "name": "default", "key": "USER_KEY_HERE" }`
196
- - `{ "valid": false, "error": "..." }` → "That key didn't work: [error]. Double-check it and try again."
197
-
198
- **Anthropic API Key** (when `apiKeys.anthropic` is `false`):
199
-
200
- > "No Anthropic API key found. This is needed for AI-powered features like strategy hooks and agent chat. Do you have an Anthropic API key?"
201
-
202
- Same validate-then-save pattern with `"service": "anthropic"`.
203
-
204
- **Telegram Adapter** (when `adapters.telegram` is `false`):
205
-
206
- > "Want to approve wallet transactions from your phone via Telegram? I can walk you through the setup — it takes about 2 minutes."
207
-
208
- Full 8-step Telegram setup flow:
209
-
210
- 1. **Create a bot:** Guide user to @BotFather → `/newbot` → get bot token
211
- 2. **Validate bot token:** `POST /apikeys/validate` body: `{ "service": "adapter:telegram", "key": "BOT_TOKEN" }`
212
- - `{ "valid": true, "info": { "botUsername": "MyAuraBot" } }` → "Your bot @MyAuraBot is working."
213
- - `{ "valid": false }` → "That token didn't work. Make sure you copied the full token from BotFather."
214
- 3. **Save bot token:** `POST /apikeys` body: `{ "service": "adapter:telegram", "name": "botToken", "key": "BOT_TOKEN" }`
215
- 4. **Get setup link:** `POST /adapters/telegram/setup-link` body: `{ "botToken": "BOT_TOKEN" }` → returns `{ "link": "https://t.me/MyAuraBot?start=abc123", "setupToken": "abc123" }`
216
- > "Click this link to open your bot in Telegram: [link]. Then press Start."
217
- 5. **Detect chat ID:** `POST /adapters/telegram/detect-chat` body: `{ "setupToken": "abc123" }`
218
- - `{ "chatId": "123456789", "verified": true }` → proceed
219
- - `{ "chatId": null, "timeout": true }` → "Did you press Start in Telegram? You can also get your chat ID from @userinfobot."
220
- 6. **Save adapter config:** `POST /adapters` body: `{ "type": "telegram", "enabled": true, "config": { "chatId": "123456789" } }`
221
- 7. **Restart adapter:** `POST /adapters/restart`
222
- 8. **Send test message:** `POST /adapters/test` body: `{ "type": "telegram" }`
223
- > "I sent a test message to your Telegram. Did you receive it?"
224
-
225
- #### Step 5: Summary
226
-
227
- After configuration, check `GET /setup` one final time and summarize:
228
-
229
- > "You're all set! Here's your setup:"
230
- > - **Agent:** Unlocked, address `0x...`
231
- > - **RPC:** Alchemy configured / using public RPCs
232
- > - **AI:** Anthropic key configured / not configured
233
- > - **Telegram:** Connected / not configured
234
- > - **Agent token:** Active
235
-
236
- ### Onboarding permission reference
237
-
238
- | Permission | Why |
239
- |------------|-----|
240
- | `secret:read` | Minimal initial setup read access |
241
- | `secret:write` | Minimal initial setup write access |
242
- | `trade:all` | Core trading operations (expands to wallet:list, send, swap, fund, etc.) |
243
- | `apikey:set` | Validate and save API keys during setup |
244
- | `adapter:manage` | Configure Telegram and other adapters |
245
-
246
- `trade:all` does NOT include `apikey:set` or `adapter:manage` — you must request them explicitly.
247
-
248
- ### CLI Commands
249
-
250
- | Command | Description |
251
- |---------|-------------|
252
- | `npx auramaxx init` | First-time setup — interactive, human-only |
253
- | `npx auramaxx init --dashboard` | Agent-safe startup — skips prompts, opens dashboard for agent creation |
254
- | `npx auramaxx init --password "pass"` | Fully autonomous — creates agent non-interactively, prints address + token |
255
- | `npx auramaxx start` | Start all services (Express + Dashboard + WS) |
256
- | `npx auramaxx start --headless` | Start server only (no dashboard) |
257
- | `npx auramaxx stop` | Stop all running services |
258
- | `npx auramaxx status` | Health check — running? locked? unlocked? |
259
- | `npx auramaxx auth request --agent-id <id> --profile <profile>` | Request auth + poll approval from CLI |
260
- | `npx auramaxx diary write --entry "<text>"` | Append a daily diary note via auth-aware CLI flow |
261
- | `npx auramaxx apikey list|validate|set|delete` | API key management from CLI |
262
- | `npx auramaxx lock` | Lock all agents (or `lock agent <id>`) |
263
- | `npx auramaxx set|get|share|del <name>` | Short aliases for agent get/set/share/delete |
264
- | `npx auramaxx mcp --install` | Auto-configure MCP for detected IDEs (Claude Desktop, Cursor, VS Code, Windsurf) |
265
- | `npx auramaxx skill` | Install AuraMaxx skills for Claude/Codex/OpenClaw agents |
266
- | `npx auramaxx skill --doctor` | Verify skill install status across all targets |
267
- | `npx auramaxx experimental` | List dev feature flags and current values |
268
- | `npx auramaxx experimental <FLAG> <on\|off>` | Toggle a dev feature flag |
269
- | `npx auramaxx doctor` | Run onboarding/runtime diagnostics |
270
- | `npx auramaxx start --debug` | Start with verbose bootstrap output |
271
-
272
- ---
273
-
274
- ### Operations Mode (normal use)
275
-
276
- After Setup Mode succeeds, switch to Operations Mode for routine authenticated wallet and credential operations.
277
-
278
- ## Authentication
279
-
280
- All agent operations require a Bearer token. Prefer CLI polling flow first:
68
+ ## Concrete CLI Examples
281
69
 
282
70
  ```bash
283
- npx auramaxx auth request --agent-id my-trading-bot --profile strict
284
- ```
71
+ # Health
285
72
 
286
- This does:
287
- 1) `POST /auth` with a generated `pubkey`
288
- 2) polls `GET /auth/:requestId?secret=...`
289
- 3) exits on `approved`, `rejected`, or timeout
73
+ aura status
290
74
 
291
- Polling controls:
75
+ # List
292
76
 
293
- - `--no-wait` (create request only)
294
- - `--interval-ms <ms>`
295
- - `--timeout-ms <ms>`
77
+ aura list
78
+ aura list --name facebook --json
296
79
 
297
- Approval response contract:
80
+ # Read
298
81
 
299
- - `pending` -> keep polling
300
- - `approved` -> response includes `encryptedToken` (read-once claim); CLI decrypts locally
301
- - `rejected` -> stop and surface rejection
82
+ aura get FACEBOOK_LOGIN
83
+ aura get FACEBOOK_LOGIN --field password --first
302
84
 
303
- For non-CLI/manual calls, keep using `POST /auth` + `GET /auth/:requestId?secret=...`.
85
+ # Create/update
304
86
 
305
- ---
87
+ aura set FACEBOOK_LOGIN hunter2 --type login --field password --username alice
88
+ aura set STRIPE_KEY sk_live_123 --type apikey --tags prod,api
306
89
 
307
- ## Common Operations
90
+ # Use secret in a command (preferred vs printing)
91
+ aura inject OPENAI_API_KEY --env OPENAI_API_KEY -- node app.js
308
92
 
309
- ### List Wallets
93
+ # Share / delete
94
+ aura share FACEBOOK_LOGIN --expires-after 24h
95
+ aura del FACEBOOK_LOGIN
310
96
 
311
- ```
312
- api GET /wallets
97
+ # Approval flow
98
+ aura auth request --agent-id codex --profile dev
99
+ aura auth claim <reqId> --json
100
+ aura get FACEBOOK_LOGIN --reqId <reqId>
313
101
  ```
314
102
 
315
- Response: array of wallet objects with `address`, `name`, `tier`, `chain`, `balance`.
103
+ ## 403 Handling
316
104
 
317
- ### Create Hot Wallet
105
+ If response includes `reqId`:
318
106
 
319
- ```
320
- api POST /wallet/create
321
- body: { "tier": "hot", "name": "trading", "chain": "base" }
322
- ```
323
-
324
- Response: `{ "address": "0x...", "name": "trading", "tier": "hot", "chain": "base" }`
325
-
326
- Options: `chain` can be `"base"`, `"ethereum"`, `"solana"`, `"solana-devnet"` (default: `"base"`).
107
+ 1. Ask human to approve.
108
+ 2. Claim token (`aura auth claim <reqId> --json`).
109
+ 3. Retry original command with same `reqId` when required.
327
110
 
328
- ### Launch Token
111
+ If 403 has no `reqId`:
329
112
 
330
- ```
331
- api POST /launch
332
- body: {
333
- "from": "0xHOT_WALLET",
334
- "name": "My Token",
335
- "symbol": "MTK",
336
- "preset": "medium",
337
- "imageUrl": "https://telegra.ph/file/abc.jpg",
338
- "metadata": { "description": "A fair launch token" }
339
- }
340
- ```
113
+ - Request a new token with least privilege first (`--profile dev`).
114
+ - Use `--profile admin` only when route explicitly requires admin.
341
115
 
342
- Response: `{ "success": true, "txHash": "0x...", "tokenAddress": "0x..." }`
343
-
344
- Launches via [Doppler](https://doppler.lol) fair launch. Requires `launch` permission.
345
-
346
- Options: `type` (`"multicurve"`, `"static"`, `"dynamic"`), `preset` (`"low"`, `"medium"`, `"high"`), `initialSupply`, `tokenURI`, `chain`.
347
-
348
- **Token image:** Upload the image to a free host like [telegra.ph](https://telegra.ph) (no API key needed: `POST https://telegra.ph/upload` with multipart file) and pass the public URL as `imageUrl`. The server builds the on-chain metadata automatically. Use `metadata` for extra fields like `description`, `website`, `twitter`.
349
-
350
- ### Enable Agent Chat via Telegram
351
-
352
- When setting up Telegram, ask the user if they want to chat with their AI agent via Telegram. If yes, include `chat: { enabled: true }` in the adapter config:
353
-
354
- ```
355
- api POST /adapters
356
- body: {
357
- "type": "telegram",
358
- "enabled": true,
359
- "config": { "chatId": "CHAT_ID" },
360
- "chat": { "enabled": true }
361
- }
362
- ```
363
-
364
- Then set a default app for chat routing:
365
-
366
- ```
367
- api POST /adapters/chat
368
- body: { "defaultApp": "swap-chat" }
369
- ```
370
-
371
- The user can then send text messages in Telegram and the AI agent will reply.
372
-
373
- ### Estimate Gas (no auth required)
374
-
375
- ```
376
- api POST /send/estimate
377
- body: { "from": "0xWALLET", "to": "0xRECIPIENT", "amount": "50000000000000000" }
378
- ```
379
-
380
- Response: `{ "success": true, "gasLimit": "...", "estimatedCostEth": "0.000042" }`
381
-
382
- ### Check Token Permissions
383
-
384
- ```
385
- api POST /auth/validate
386
- body: { "token": "YOUR_TOKEN" }
387
- ```
116
+ ## Guardrails
388
117
 
389
- Response: `{ "valid": true, "payload": { "permissions": [...], "limits": {...} } }`
390
-
391
- ### Transaction History
392
-
393
- ```
394
- api GET /wallet/0xADDRESS/transactions
395
- ```
396
-
397
- Query params: `type` (send, receive, swap, contract), `status`, `limit`, `offset`.
398
-
399
- ### Asset Tracking
400
-
401
- ```
402
- api GET /wallet/0xADDRESS/assets
403
- ```
404
-
405
- Returns tracked token balances for the wallet.
406
-
407
- ---
408
-
409
- ## Permission Denied (403)
410
-
411
- When any CLI command or MCP tool returns 403, the response includes structured guidance with a `nextStep` field. Follow it — it tells you exactly what to do.
412
-
413
- Typically:
414
- ```bash
415
- npx auramaxx auth request --profile strict
416
- ```
417
-
418
- This requests a new token with the required permissions. Approve in the dashboard, then retry your command.
419
-
420
- > **Note:** The `request_human_action` tool is only available in strategy engine Tool-Call/Hook mode (see below).
421
-
422
- ---
423
-
424
- ## Permissions Quick Reference
425
-
426
- | Permission | Description |
427
- |------------|-------------|
428
- | `trade:all` | **Recommended** — Expands to: `wallet:list`, `wallet:create:hot`, `wallet:create:temp`, `send:hot`, `send:temp`, `swap`, `fund`, `launch`, `apikey:get`, `strategy:read` |
429
- | `wallet:create:hot` | Create hot wallets |
430
- | `wallet:create:temp` | Create temp wallets |
431
- | `wallet:list` | List wallets |
432
- | `send:hot` | Send from hot wallets |
433
- | `send:temp` | Send from temp wallets |
434
- | `swap` | Execute token swaps |
435
- | `fund` | Transfer from cold to hot |
436
- | `launch` | Launch tokens via Doppler |
437
- | `strategy:read` | Read strategy state |
438
- | `strategy:manage` | Manage strategies (toggle, config, approve) |
439
- | `workspace:modify` | Modify dashboard UI |
440
- | `app:storage` | Read/write own app storage |
441
-
442
- For full permissions reference, see [docs/AUTH.md](./docs/AUTH.md).
443
-
444
- ---
445
-
446
- ## Wallet Tiers
447
-
448
- | Tier | Ownership | Use Case |
449
- |------|-----------|----------|
450
- | **COLD** | Human only | Main funds, requires password |
451
- | **HOT** | Token-owned | Agent operations, spending limits |
452
- | **TEMP** | Ephemeral | One-time use, memory only |
453
-
454
- ---
455
-
456
- ## Agent Unlock
457
-
458
- If the agent is locked (`api GET /wallets` returns 401):
459
-
460
- **Option 1 (preferred):** Tell the human to open `http://localhost:4747` and enter their password. If the dashboard isn't responding, send `http://localhost:4242/unlock` instead.
461
-
462
- **Option 2 (remote/headless):** Ask the human for their password and unlock programmatically:
463
-
464
- ```bash
465
- node -e "
466
- const crypto = require('crypto');
467
- (async () => {
468
- const pk = await (await fetch('http://localhost:4242/auth/connect')).json();
469
- const enc = crypto.publicEncrypt(
470
- { key: pk.publicKey, padding: crypto.constants.RSA_PKCS1_OAEP_PADDING, oaepHash: 'sha256' },
471
- Buffer.from('PASSWORD_HERE')
472
- ).toString('base64');
473
- const agent = crypto.generateKeyPairSync('rsa', {
474
- modulusLength: 2048,
475
- publicKeyEncoding: { type: 'spki', format: 'pem' },
476
- privateKeyEncoding: { type: 'pkcs8', format: 'pem' }
477
- });
478
- const r = await (await fetch('http://localhost:4242/unlock', {
479
- method: 'POST',
480
- headers: { 'Content-Type': 'application/json' },
481
- body: JSON.stringify({ encrypted: enc, pubkey: agent.publicKey })
482
- })).json();
483
- console.log(JSON.stringify(r));
484
- })();
485
- "
486
- ```
487
-
488
- On success, the response includes an admin token.
489
-
490
- ---
491
-
492
- ## Error Recovery
493
-
494
- | Error | Meaning | What to Do |
495
- |-------|---------|------------|
496
- | Connection refused | Server not running | Run `npx auramaxx start --headless` to start it. If that fails, tell the human. |
497
- | 401 `Invalid or expired token` | Server restarted or TTL expired | Re-request via `POST /auth` |
498
- | 401 `Cold wallet must be unlocked` | Agent locked | Tell human to unlock in dashboard at `http://localhost:4747/` (or `npx auramaxx unlock` in headless mode) |
499
- | 403 `Insufficient permissions` | Token lacks permission | Follow the `nextStep` in the 403 response, or run `npx auramaxx auth request --profile strict` |
500
- | 403 `Amount exceeds spending limit` | Budget exhausted | Follow the `nextStep` in the 403 response, or request a new token via `npx auramaxx auth request --profile strict` |
501
- | 400 `slippage is required` | Missing on swap | Add `"slippage": 1.0` |
502
-
503
- ---
504
-
505
- ## Key Concepts
506
-
507
- - **Tokens are memory-only** — Server restart invalidates all tokens. Re-request via `POST /auth`.
508
- - **Spending limits** — Optional per-type caps in the auth request: `limits: { fund: 0.5, send: 1.0, swap: 2.0 }`
509
- - **Wallet ownership** — Agents can only access wallets they created (or those listed in `walletAccess`)
510
- - **Human approval** — All token requests require human approval
511
- - **Multi-chain** — Pass `"chain": "ethereum"` or `"chain": "solana"` on create/send/swap/fund (default: base)
512
- - **403 recovery** — When you hit 403, follow the `nextStep` in the structured error response
513
-
514
- ---
515
-
516
- ## Curl Fallback
517
-
518
- If CLI commands are unavailable, use curl directly:
519
-
520
- ```bash
521
- # Health check
522
- curl -s http://localhost:4242/health
523
-
524
- # Request token
525
- curl -X POST http://localhost:4242/auth \
526
- -H "Content-Type: application/json" \
527
- -d '{"agentId": "my-agent", "limit": 0.5, "permissions": ["trade:all"], "ttl": 3600, "pubkey": "<RSA public key PEM or base64>"}'
528
-
529
- # Use token
530
- curl http://localhost:4242/wallets -H "Authorization: Bearer $TOKEN"
531
-
532
- # Send
533
- curl -X POST http://localhost:4242/send \
534
- -H "Authorization: Bearer $TOKEN" \
535
- -H "Content-Type: application/json" \
536
- -d '{"from": "0xWALLET", "to": "0xRECIPIENT", "amount": "50000000000000000"}'
537
- ```
538
-
539
- ---
540
-
541
- ## Tool-Call Mode (Chat / Message Hooks)
542
-
543
- > **Name note:** The strategy engine provides `wallet_api` and `request_human_action` as tool names in this mode. These are internal strategy engine names, distinct from the MCP tool names (`api`, `auth`, etc.).
544
-
545
- ### Response format
546
- Return a JSON object with: reply, state, emit (all optional). No intents needed.
547
-
548
- ```json
549
- {
550
- "reply": "Your response to the user",
551
- "state": { "key": "updated values" },
552
- "emit": { "channel": "event-name", "data": { ... } }
553
- }
554
- ```
555
-
556
- ### Available tools
557
-
558
- #### wallet_api
559
- Call the AuraMaxx API for reads and writes.
560
- - wallet_api({ method: "GET", endpoint: "/wallets" }) — list wallets
561
- - wallet_api({ method: "GET", endpoint: "/wallet/<address>/assets" }) — get balances
562
- - wallet_api({ method: "POST", endpoint: "/swap", body: {...} }) — execute a swap
563
-
564
- #### request_human_action
565
- Request human approval for a privileged action. Use this when wallet_api returns 403.
566
- - summary: human-readable description (shown in approval card)
567
- - permissions: array of permission strings needed (e.g. ["swap"], ["send:hot"])
568
- - action: pre-computed API call { endpoint, method, body }
569
- - limits: spending caps per permission (e.g. { swap: 0.01 })
570
- - walletAccess: wallet addresses the temp token needs access to (e.g. ["0x123...", "0x456..."]). Include ALL wallet addresses involved in the action (from + to).
571
- - ttl: seconds the temp token lives (default 120)
572
-
573
- ### Token discovery (ticker/name -> contract)
574
-
575
- When the user gives a token ticker or name but no contract address:
576
-
577
- 1. Call `wallet_api({ method: "GET", endpoint: "/token/search?q=<query>&chain=<chain>" })`
578
- 2. If results exist, present the best candidate(s) with contract addresses and ask for confirmation only if ambiguous
579
- 3. Only ask the user for a contract address when search returns no reliable results
580
-
581
- Never tell the user to search external websites first without trying `/token/search`.
582
-
583
- ### Performing Actions
584
-
585
- Follow this flow for any privileged operation:
586
-
587
- 1. **Try the action directly** via wallet_api (POST)
588
- 2. **If you get 403** (insufficient permissions), call request_human_action with:
589
- - A clear summary of what you want to do
590
- - The permissions you need
591
- - The exact API call to execute on approval
592
- 3. **The human approves** → the action auto-executes with a scoped temporary token
593
- 4. **NEVER give up** or say "I don't have permission." Always use request_human_action.
594
-
595
- Example flow:
596
- - User: "Swap 0.01 ETH for USDC"
597
- - You: call wallet_api GET /wallets to find the hot wallet
598
- - You: call wallet_api POST /swap with the swap params
599
- - Response: 403 → call request_human_action with summary, permissions: ["swap"], action: { endpoint: "/swap", method: "POST", body: {...} }
600
- - Reply: "I've requested approval to swap 0.01 ETH for USDC. Waiting for your confirmation."
601
-
602
- ### Permission → Endpoint mapping (for request_human_action)
603
-
604
- Use EXACTLY these permission strings — other strings will be rejected:
605
-
606
- | Permission | Endpoint |
607
- |------------|----------|
608
- | swap | /swap |
609
- | send:hot | /send |
610
- | send:temp | /send |
611
- | fund | /fund |
612
- | launch | /launch |
613
- | wallet:create:hot | /wallet/create |
614
- | wallet:create:temp | /wallet/create |
615
-
616
- ### Multi-step operations
617
-
618
- When a task requires multiple privileged steps (e.g., "send ETH to 0x..."):
619
-
620
- 1. **Check existing wallets first** — call wallet_api GET /wallets before creating new ones
621
- 2. **Plan all steps** — identify all permissions needed upfront
622
- 3. **Request ONE approval** with all permissions needed for the entire flow
623
- - Example: permissions: ["wallet:create:hot", "fund", "send:hot"]
624
- - The action should be the FIRST step (e.g., create wallet)
625
- 4. **On success callback, continue** — use wallet_api and request_human_action for remaining steps
626
-
627
- Common multi-step flows:
628
- - "Send ETH to external address" → fund existing hot wallet from cold (/fund), then send (/send)
629
- - "Create wallet and fund it" → create hot wallet (/wallet/create), then fund from cold (/fund)
630
- - Gas: always account for gas fees (~0.0002 ETH on Base) when funding for a send
631
-
632
- ### Error recovery
633
-
634
- When an action fails after approval (you receive a [SYSTEM] message with an error):
635
-
636
- 1. **Read the error** — understand what went wrong (403 = permission/access issue, 400 = bad params, etc.)
637
- 2. **Investigate** — call wallet_api to gather info (e.g. GET /wallets to check addresses, tiers, ownership)
638
- 3. **Retry** — call request_human_action again with corrected parameters
639
- 4. **NEVER just explain the error** — always try to fix it first
640
-
641
- Common fixes:
642
- - "Token does not have access to this wallet" → include walletAccess in request_human_action with the wallet addresses involved
643
- - "insufficient funds" → check balances and adjust amount
644
- - Wrong wallet type → check wallet tiers with GET /wallets and pick the right one
645
-
646
- ### Wallet tiers
647
- - COLD: Human-only, never use for agent operations
648
- - HOT: Agent-accessible, use for swaps/sends/funding
649
- - TEMP: Ephemeral, agent full control
650
-
651
- ### Authentication & Permissions
652
-
653
- Your pre-approved permissions and spending budget are in the context:
654
- - `context.permissions` — array of permissions your app token already has
655
- - `context.budget.limits` — spending caps per permission (ETH)
656
- - `context.budget.spent` — amount used this session
657
- - `context.budget.remaining` — amount left before limit is hit
658
-
659
- If your token already has the needed permission AND sufficient budget, wallet_api will succeed directly.
660
- If not, use request_human_action to get a scoped temporary token via human approval.
661
-
662
- ---
663
-
664
- ## Intent Mode (Tick / Strategy Hooks)
665
-
666
- ### Response format
667
- Return a JSON object with: reply, state, intents, emit (all optional).
668
-
669
- ### Intent format for privileged actions
670
- To execute wallet operations, return intents with a permissions array.
671
- The engine will request human approval and create a scoped temporary token.
672
-
673
- ```json
674
- {
675
- "intents": [{
676
- "type": "swap",
677
- "summary": "Human-readable description of the action",
678
- "permissions": ["swap"],
679
- "limits": { "swap": 0.01 },
680
- "ttl": 120,
681
- "action": { "endpoint": "/swap", "method": "POST", "body": { ... } }
682
- }]
683
- }
684
- ```
685
-
686
- - permissions: array of permission strings needed (swap, send:hot, fund, etc.)
687
- - limits: spending caps per permission (in native currency)
688
- - ttl: seconds the temp token lives (default 60)
689
- - action: pre-computed API call the engine will execute with the temp token
690
- - summary: shown to human in the approval card
691
-
692
- ### Wallet tiers
693
- - COLD: Human-only, cannot be used in intents
694
- - HOT: Agent-accessible, use for swaps/sends/funding
695
- - TEMP: Ephemeral, agent full control
696
-
697
- ### Authentication & Permissions
698
-
699
- Your pre-approved permissions and spending budget are in the context:
700
- - `context.permissions` — array of permissions your app token already has
701
- - `context.budget.limits` — spending caps per permission (ETH)
702
- - `context.budget.spent` — amount used this session
703
- - `context.budget.remaining` — amount left before limit is hit
704
-
705
- #### Decision logic for intents:
706
-
707
- 1. **Permission exists AND remaining >= amount needed**
708
- → Return intent WITHOUT `permissions` array. The engine uses your existing token.
709
- ```json
710
- { "type": "swap", "action": { "endpoint": "/swap", ... } }
711
- ```
712
-
713
- 2. **Permission exists BUT remaining < amount needed**
714
- → Return intent WITH permissions array to request a fresh per-action token with a higher limit.
715
- ```json
716
- { "type": "swap", "summary": "Buy 0.5 ETH of TOKEN (exceeds session budget, needs approval)",
717
- "permissions": ["swap"], "limits": { "swap": 0.5 }, "ttl": 120,
718
- "action": { "endpoint": "/swap", ... } }
719
- ```
720
-
721
- 3. **Permission does NOT exist**
722
- → Return intent WITH permissions array. Human must approve.
723
- ```json
724
- { "type": "swap", "summary": "Buy 0.1 ETH of TOKEN",
725
- "permissions": ["swap"], "limits": { "swap": 0.1 }, "ttl": 120,
726
- "action": { "endpoint": "/swap", ... } }
727
- ```
728
-
729
- Never propose an action that exceeds context.budget.remaining without requesting
730
- a new per-action token via the permissions array.
731
-
732
- The executor handles authentication — hooks never see bearer tokens.
733
- Just return the endpoint/method/body in your intent and the engine does the rest.
734
-
735
- ---
118
+ - For commands, use `inject`, not plaintext copy/paste.
119
+ - Do not print secrets unless user explicitly asks for plaintext output.
120
+ - Prefer `aura` alias (`npx auramaxx` equivalent).
736
121
 
737
- ## Reference Documentation (bundled with skill payload)
122
+ ## Full Reference
738
123
 
739
- - [docs/API.md](./docs/API.md) - Full HTTP endpoint reference
740
- - [docs/AUTH.md](./docs/AUTH.md) - Complete permissions & token lifecycle
741
- - [docs/MCP.md](./docs/MCP.md) - MCP server setup & bootstrap flow
742
- - [docs/AGENT_SETUP.md](./docs/AGENT_SETUP.md) - End-to-end setup guide
743
- - [docs/WORKSPACE.md](./docs/WORKSPACE.md) - WebSocket dashboard control
744
- - [docs/CLI.md](./docs/CLI.md) - Headless CLI mode & Unix socket IPC
745
- - [docs/security.md](./docs/security.md) - Security architecture
124
+ - CLI examples and command reference: `docs/CLI.md`
125
+ - Auth flow details: `docs/AUTH.md`