auramaxx 0.0.12 → 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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +244 -227
- package/.next/app-path-routes-manifest.json +11 -10
- package/.next/build-manifest.json +14 -14
- package/.next/prerender-manifest.json +49 -25
- package/.next/react-loadable-manifest.json +41 -41
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +12 -12
- package/.next/server/app/api/[...doc]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent-requests/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/apps/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/apps/manifests/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/apps/static/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/docs/plain/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/events/route.js +1 -19
- package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/import-from-openclaw/[channel]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/import-from-openclaw/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/import-from-openclaw/validate/[channel]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +63 -1
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/[id]/apps/[wid]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/[id]/apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/[id]/export/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspace/route_client-reference-manifest.js +1 -1
- package/.next/server/app/app-legacy-do-not-use/page.js +1 -1
- package/.next/server/app/app-legacy-do-not-use/page.js.nft.json +1 -1
- package/.next/server/app/app-legacy-do-not-use/page_client-reference-manifest.js +1 -1
- package/.next/server/app/app-legacy-do-not-use.html +1 -1
- package/.next/server/app/app-legacy-do-not-use.rsc +14 -14
- package/.next/server/app/approve/[actionId]/page.js +1 -1
- package/.next/server/app/approve/[actionId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs/[...doc]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/health/page_client-reference-manifest.js +1 -1
- package/.next/server/app/health.html +1 -1
- package/.next/server/app/health.rsc +13 -13
- package/.next/server/app/hello/page_client-reference-manifest.js +1 -1
- package/.next/server/app/hello.html +1 -1
- package/.next/server/app/hello.rsc +14 -14
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +18 -21
- package/.next/server/app/page.js +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/.next/server/app/privacy.html +1 -1
- package/.next/server/app/privacy.rsc +13 -13
- package/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/.next/server/app/terms.html +1 -1
- package/.next/server/app/terms.rsc +13 -13
- package/.next/server/app/yo/page.js +2 -0
- package/.next/server/app/yo/page.js.nft.json +1 -0
- package/.next/server/app/yo/page_client-reference-manifest.js +1 -0
- package/.next/server/app/yo.html +1 -0
- package/.next/server/app/yo.meta +7 -0
- package/.next/server/app/yo.rsc +23 -0
- package/.next/server/app-paths-manifest.json +11 -10
- package/.next/server/chunks/2145.js +1 -1
- package/.next/server/chunks/2460.js +1 -1
- package/.next/server/chunks/5246.js +1 -1
- package/.next/server/chunks/5678.js +1 -1
- package/.next/server/chunks/5784.js +1 -1
- package/.next/server/chunks/6086.js +2 -20
- package/.next/server/chunks/{5553.js → 6415.js} +2 -2
- package/.next/server/chunks/7935.js +2 -2
- package/.next/server/functions-config-manifest.json +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/WshFGr6RxGYP6AbWuT9OG/_buildManifest.js +1 -0
- package/.next/static/chunks/1168.aaac1edbb597fe5a.js +1 -0
- package/.next/static/chunks/1255-7999eac54f80a49f.js +1 -0
- package/.next/static/chunks/142-fa9752f53a551f63.js +1 -0
- package/.next/static/chunks/2505.d54ccadc42f4e3d1.js +1 -0
- package/.next/static/chunks/2619-04bc32f026a0d946.js +1 -0
- package/.next/static/chunks/2927.7e00cc878d9a3f52.js +1 -0
- package/.next/static/chunks/3573-1b41d7b8a000d015.js +1 -0
- package/.next/static/chunks/3609.ded5a5306e18af9c.js +1 -0
- package/.next/static/chunks/3667-1db7bd03948e60df.js +1 -0
- package/.next/static/chunks/3826.a73d4a88d8c09030.js +1 -0
- package/.next/static/chunks/{3a91511d-648a2ba3dad7df0c.js → 3a91511d-ba215c0b5dc21ba9.js} +1 -1
- package/.next/static/chunks/4256.48407d9abad5ea33.js +1 -0
- package/.next/static/chunks/4685-7f53bbfc4a9845eb.js +1 -0
- package/.next/static/chunks/4901-ba6a32818662e70a.js +1 -0
- package/.next/static/chunks/4919-7e7cdd5efc9f2110.js +1 -0
- package/.next/static/chunks/4bd1b696-100b9d70ed4e49c1.js +1 -0
- package/.next/static/chunks/5336-233ec7ab3807267c.js +1 -0
- package/.next/static/chunks/5442-b5bb869e832e8967.js +1 -0
- package/.next/static/chunks/6233-97a810aa272af547.js +1 -0
- package/.next/static/chunks/626.a5109d16f9eca1f6.js +1 -0
- package/.next/static/chunks/6872-faea0f088ab2d450.js +1 -0
- package/.next/static/chunks/7338-3ce17a93614f1d77.js +59 -0
- package/.next/static/chunks/7394-4bdb1feefad1a74a.js +1 -0
- package/.next/static/chunks/7616-1129bcb3eee8d315.js +1 -0
- package/.next/static/chunks/786-26deffb41572cbb3.js +1 -0
- package/.next/static/chunks/8273-8e92d34180669ca9.js +1 -0
- package/.next/static/chunks/8357.5dee1e0c4e5bb091.js +1 -0
- package/.next/static/chunks/9062-2bc2d089f9c9c6ba.js +1 -0
- package/.next/static/chunks/9380.f198afbf0c6b5369.js +1 -0
- package/.next/static/chunks/app/_not-found/page-5a8c6a29f762fa58.js +1 -0
- package/.next/static/chunks/app/api/[...doc]/page-f0852f35f0fd1d44.js +1 -0
- package/.next/static/chunks/app/api/agent-requests/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/apps/install/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/apps/manifests/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/apps/static/[...path]/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/docs/plain/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/events/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/import-from-openclaw/[channel]/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/import-from-openclaw/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/import-from-openclaw/validate/[channel]/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/page-cc59bebcc0d2c01d.js +1 -0
- package/.next/static/chunks/app/api/restart/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/update/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/version/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/[id]/apps/[wid]/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/[id]/apps/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/[id]/export/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/[id]/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/config/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/import/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/app-legacy-do-not-use/page-e5dc864e92d90ca7.js +1 -0
- package/.next/static/chunks/app/approve/[actionId]/page-2acca1f490424f21.js +1 -0
- package/.next/static/chunks/app/docs/[...doc]/page-8e2a2d036caab242.js +1 -0
- package/.next/static/chunks/app/docs/page-acf872a03ff79893.js +1 -0
- package/.next/static/chunks/app/error-66f983b7769dabfa.js +1 -0
- package/.next/static/chunks/app/health/page-c9185854ed9c86d0.js +1 -0
- package/.next/static/chunks/app/hello/page-74c9f4deaa4b03dd.js +1 -0
- package/.next/static/chunks/app/layout-af8d9969c7aeb758.js +1 -0
- package/.next/static/chunks/app/page-16dfcd1c7cc88bcc.js +1 -0
- package/.next/static/chunks/app/privacy/page-8e2d17079355c2cc.js +1 -0
- package/.next/static/chunks/app/share/[token]/page-5dd9b0418eee411f.js +1 -0
- package/.next/static/chunks/app/terms/page-8e2d17079355c2cc.js +1 -0
- package/.next/static/chunks/app/yo/layout-cf84f975aad4c719.js +1 -0
- package/.next/static/chunks/app/yo/page-719dc5f213fdfb30.js +1 -0
- package/.next/static/chunks/framework-a32a2a465584c0bc.js +1 -0
- package/.next/static/chunks/main-0f0f9142f74e7215.js +1 -0
- package/.next/static/chunks/main-app-24f0c92ba10af457.js +1 -0
- package/.next/static/chunks/pages/_app-4b3fb5e477a0267f.js +1 -0
- package/.next/static/chunks/pages/_error-c970d8b55ace1b48.js +1 -0
- package/.next/static/chunks/{webpack-768de8b7d6a7a27a.js → webpack-79ad58260e9b10b4.js} +1 -1
- package/.next/static/css/83cd401584ab787f.css +3 -0
- package/.next/trace +28 -28
- package/.next/types/app/yo/layout.ts +84 -0
- package/.next/types/app/yo/page.ts +84 -0
- package/.next/types/routes.d.ts +4 -2
- package/.next/types/validator.ts +18 -0
- package/bin/auramaxx.js +9 -24
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/AUTH.md +6 -3
- package/docs/CLI.md +2 -0
- package/docs/MCP.md +2 -0
- package/docs/credentials.md +2 -0
- package/package.json +1 -1
- package/prisma/migrations/20260227214000_update_agent_action_ttl_defaults/migration.sql +19 -0
- package/public/0a167e5e-4f52-4715-ae23-bf63d259a6b1.png +0 -0
- package/public/141ec92c-6780-4b23-838f-9a7bf1e91bb8.png +0 -0
- package/public/3afc4935-92cb-42af-9624-0b1341c12a5e.png +0 -0
- package/public/43947df5-dbcf-4e49-ab8b-41b9162c0410.png +0 -0
- package/public/5aeae9ce-0d38-49ea-8fd1-167892a04a85.png +0 -0
- package/public/660e4ea3-a3a6-4be4-a8ca-2cb74c51dfb5.png +0 -0
- package/public/733f02d7-6b58-4ba6-a5c8-d062cd205e1d.png +0 -0
- package/public/a32d65cb-95b0-4977-be6b-cf69f515afbe.png +0 -0
- package/public/agent1.png +0 -0
- package/public/agent10.png +0 -0
- package/public/agent2.png +0 -0
- package/public/agent3.png +0 -0
- package/public/agent4.png +0 -0
- package/public/agent5.png +0 -0
- package/public/agent6.png +0 -0
- package/public/agent7.png +0 -0
- package/public/agent8.png +0 -0
- package/public/agent9.png +0 -0
- package/public/c4938305-b811-4ccc-91db-94d309734827.png +0 -0
- package/public/f2ca6825-a4f3-4107-815c-51ee740dfc09.png +0 -0
- package/public/llm.txt +2 -0
- package/public/llms.txt +39 -0
- package/public/ss-dark1.png +0 -0
- package/public/ss-dark1.webp +0 -0
- package/public/ss-dark2.png +0 -0
- package/public/ss-dark2.webp +0 -0
- package/public/ss-dark3.png +0 -0
- package/public/ss-dark3.webp +0 -0
- package/public/ss-light1.png +0 -0
- package/public/ss-light1.webp +0 -0
- package/public/ss-light2.png +0 -0
- package/public/ss-light2.webp +0 -0
- package/public/ss-light3.png +0 -0
- package/public/ss-light3.webp +0 -0
- package/shared/agent-profile-schema.ts +81 -0
- package/shared/credential-field-schema.ts +12 -0
- package/skills/auramaxx/SKILL.md +71 -691
- package/src/app/UnlockPageClient.tsx +1939 -0
- package/src/app/api/page.tsx +8 -9
- package/src/app/api/update/route.ts +105 -36
- package/src/app/approve/[actionId]/page.tsx +4 -1
- package/src/app/docs/DocsPageContent.tsx +3 -3
- package/src/app/globals.css +94 -0
- package/src/app/layout.tsx +1 -0
- package/src/app/page.tsx +25 -1935
- package/src/app/yo/layout.tsx +29 -0
- package/src/app/yo/page.tsx +528 -0
- package/src/components/HumanActionBar.tsx +34 -8
- package/src/components/agent/AgentSidebar.tsx +3 -1
- package/src/components/agent/CredentialAgent.tsx +5 -1
- package/src/components/agent/CredentialDetail.tsx +32 -1
- package/src/components/agent/CredentialForm.tsx +94 -7
- package/src/components/agent/CredentialRow.tsx +8 -1
- package/src/components/agent/credentialFormName.ts +22 -1
- package/src/components/agent/types.ts +2 -2
- package/src/components/design-system/Modal.tsx +14 -1
- package/src/hooks/useUpdateChecker.ts +17 -1
- package/src/lib/pino.ts +77 -8
- package/src/server/cli/commands/actions.ts +1 -1
- package/src/server/cli/commands/agent.ts +110 -65
- package/src/server/cli/commands/approve.ts +1 -1
- package/src/server/cli/commands/auth.ts +81 -20
- package/src/server/cli/commands/token.ts +2 -2
- package/src/server/cli/lib/escalation.ts +109 -24
- package/src/server/cli/lib/process.ts +2 -1
- package/src/server/cli/socket.ts +1 -1
- package/src/server/index.ts +2 -0
- package/src/server/lib/agent-profile-records.ts +72 -0
- package/src/server/lib/credential-transport.ts +27 -11
- package/src/server/lib/defaults.ts +3 -3
- package/src/server/lib/escalation-responder.ts +1 -1
- package/src/server/lib/resolve-action.ts +2 -2
- package/src/server/mcp/server.ts +6 -1
- package/src/server/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/src/server/routes/actions.ts +2 -2
- package/src/server/routes/agent-profiles.ts +82 -0
- package/src/server/routes/auth.ts +39 -4
- package/src/server/routes/credentials.ts +18 -0
- package/src/server/tests/cli/agent-auth.test.ts +20 -39
- package/src/server/tests/cli/agent.test.ts +18 -0
- package/src/server/tests/cli/auth-action-flag.test.ts +3 -2
- package/src/server/tests/cli/bin-entrypoint.test.ts +35 -11
- package/src/server/tests/cli/escalation.test.ts +7 -3
- package/src/server/tests/cli/process.test.ts +3 -3
- package/src/server/tests/cli/socket.test.ts +2 -2
- package/src/server/tests/endpoints/actions.test.ts +2 -2
- package/src/server/tests/endpoints/agent-profiles.test.ts +117 -0
- package/src/server/tests/endpoints/auth.test.ts +34 -0
- package/src/server/tests/lib/credential-transport.test.ts +68 -2
- package/src/server/tests/lib/defaults.test.ts +2 -2
- package/src/server/tests/lib/escalation-responder.test.ts +2 -2
- package/src/server/tests/setup.ts +7 -0
- package/src/server/tsconfig.tsbuildinfo +1 -1
- package/src/server/types.ts +1 -1
- package/.next/static/chunks/1168.63dbb444a33b1867.js +0 -1
- package/.next/static/chunks/1255-e8718b02724690dd.js +0 -1
- package/.next/static/chunks/142-aeaf7ffa9c53516d.js +0 -1
- package/.next/static/chunks/2505.22aaa333fd65908f.js +0 -1
- package/.next/static/chunks/2619-3c9e02e22d10480a.js +0 -1
- package/.next/static/chunks/2927.e7e9e2a1b8d2dc61.js +0 -1
- package/.next/static/chunks/3573-27e17f4ff2dd86ed.js +0 -1
- package/.next/static/chunks/3609.6f8e0ecd6de9566c.js +0 -1
- package/.next/static/chunks/3667-d6770121629db38b.js +0 -1
- package/.next/static/chunks/3826.7dfe96467cd74e45.js +0 -1
- package/.next/static/chunks/4256.50cb375c979ffd5a.js +0 -1
- package/.next/static/chunks/4685-3f8d92f574366fec.js +0 -1
- package/.next/static/chunks/4901-54c1ac380b7b43bb.js +0 -1
- package/.next/static/chunks/4919-fe6f1553abfc9420.js +0 -1
- package/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +0 -1
- package/.next/static/chunks/5336-bd251f91235f7c11.js +0 -1
- package/.next/static/chunks/5442-be197c885bf12079.js +0 -1
- package/.next/static/chunks/5553-c8b86fe3513fce04.js +0 -59
- package/.next/static/chunks/6233-44e6fe57a552a816.js +0 -1
- package/.next/static/chunks/626.2583673a0386a81b.js +0 -1
- package/.next/static/chunks/6872-6442f2f5cce36ce5.js +0 -1
- package/.next/static/chunks/7411-3ca797c21b722ccd.js +0 -1
- package/.next/static/chunks/7616-b8bd37ce1f735d6f.js +0 -1
- package/.next/static/chunks/786-9ed39f96091b2be4.js +0 -1
- package/.next/static/chunks/8273-922091226ba84a94.js +0 -1
- package/.next/static/chunks/8357.6159472717ff7d11.js +0 -1
- package/.next/static/chunks/9062-3eb1607c96486f88.js +0 -1
- package/.next/static/chunks/9380.93f361baab2eefdf.js +0 -1
- package/.next/static/chunks/app/_not-found/page-c3b87025baf0a9c2.js +0 -1
- package/.next/static/chunks/app/api/[...doc]/page-790c4b33ba1fde4a.js +0 -1
- package/.next/static/chunks/app/api/agent-requests/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/apps/install/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/apps/manifests/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/apps/static/[...path]/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/docs/plain/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/events/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/import-from-openclaw/[channel]/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/import-from-openclaw/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/import-from-openclaw/validate/[channel]/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/page-b53f9aa17a4c5201.js +0 -1
- package/.next/static/chunks/app/api/restart/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/update/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/version/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/[id]/apps/[wid]/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/[id]/apps/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/[id]/export/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/[id]/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/config/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/import/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-e83b12cbab2e8707.js +0 -1
- package/.next/static/chunks/app/app-legacy-do-not-use/page-0052191daef60036.js +0 -1
- package/.next/static/chunks/app/approve/[actionId]/page-45cd3b8fa062d5e5.js +0 -1
- package/.next/static/chunks/app/docs/[...doc]/page-632ac406200b66fe.js +0 -1
- package/.next/static/chunks/app/docs/page-b7556394709b43df.js +0 -1
- package/.next/static/chunks/app/error-3d6057da512253d8.js +0 -1
- package/.next/static/chunks/app/health/page-80c985cd72328b74.js +0 -1
- package/.next/static/chunks/app/hello/page-fd71babcd192729b.js +0 -1
- package/.next/static/chunks/app/layout-285c6ef3f16bae63.js +0 -1
- package/.next/static/chunks/app/page-85017185df14c37b.js +0 -1
- package/.next/static/chunks/app/privacy/page-faf36cd0dde6dfa3.js +0 -1
- package/.next/static/chunks/app/share/[token]/page-22d51d6c5a47bb75.js +0 -1
- package/.next/static/chunks/app/terms/page-faf36cd0dde6dfa3.js +0 -1
- package/.next/static/chunks/framework-e60c938074ff7136.js +0 -1
- package/.next/static/chunks/main-447abf206d7ebd2f.js +0 -1
- package/.next/static/chunks/main-app-f63b86bdbf5b7b88.js +0 -1
- package/.next/static/chunks/pages/_app-6c8c2371b16a04b8.js +0 -1
- package/.next/static/chunks/pages/_error-94812ad32cad7365.js +0 -1
- package/.next/static/css/eb25c6452113486f.css +0 -3
- package/.next/static/zCR6u3S4dIjlCtV80nNsp/_buildManifest.js +0 -1
- /package/.next/static/{zCR6u3S4dIjlCtV80nNsp → WshFGr6RxGYP6AbWuT9OG}/_ssgManifest.js +0 -0
package/skills/auramaxx/SKILL.md
CHANGED
|
@@ -1,745 +1,125 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: auramaxx
|
|
3
3
|
description: |
|
|
4
|
-
|
|
5
|
-
|
|
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: "
|
|
9
|
+
version: "3.0"
|
|
11
10
|
---
|
|
12
11
|
|
|
13
|
-
# AuraMaxx
|
|
12
|
+
# AuraMaxx (Minimal)
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
Use this skill for credential and secret workflows.
|
|
16
15
|
|
|
17
|
-
|
|
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
|
-
|
|
18
|
+
Always use this skill when user intent matches any of these:
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
28
|
+
CLI auth order:
|
|
54
29
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
30
|
+
1. `AURA_TOKEN` env
|
|
31
|
+
2. socket bootstrap
|
|
32
|
+
3. `/auth` fallback
|
|
58
33
|
|
|
59
|
-
|
|
60
|
-
- `hasWallet=true`
|
|
61
|
-
- `unlocked=true`
|
|
62
|
-
- agent has an active token
|
|
34
|
+
Notes:
|
|
63
35
|
|
|
64
|
-
|
|
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
|
-
|
|
40
|
+
## Retrieval Flow (Do This First)
|
|
67
41
|
|
|
68
|
-
|
|
42
|
+
For login/API key/card/password requests:
|
|
69
43
|
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
75
|
-
First, try starting the server automatically:
|
|
48
|
+
Examples:
|
|
76
49
|
|
|
77
50
|
```bash
|
|
78
|
-
|
|
51
|
+
aura list --name facebook --json
|
|
52
|
+
aura list --name stripe --json
|
|
53
|
+
aura list --name visa --json
|
|
79
54
|
```
|
|
80
55
|
|
|
81
|
-
If
|
|
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
|
-
|
|
59
|
+
aura list --name facebook --field username --json
|
|
135
60
|
```
|
|
136
61
|
|
|
137
|
-
|
|
62
|
+
API equivalent:
|
|
138
63
|
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
|
|
284
|
-
```
|
|
71
|
+
# Health
|
|
285
72
|
|
|
286
|
-
|
|
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
|
-
|
|
75
|
+
# List
|
|
292
76
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
- `--timeout-ms <ms>`
|
|
77
|
+
aura list
|
|
78
|
+
aura list --name facebook --json
|
|
296
79
|
|
|
297
|
-
|
|
80
|
+
# Read
|
|
298
81
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
- `rejected` -> stop and surface rejection
|
|
82
|
+
aura get FACEBOOK_LOGIN
|
|
83
|
+
aura get FACEBOOK_LOGIN --field password --first
|
|
302
84
|
|
|
303
|
-
|
|
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
|
-
|
|
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
|
-
|
|
93
|
+
# Share / delete
|
|
94
|
+
aura share FACEBOOK_LOGIN --expires-after 24h
|
|
95
|
+
aura del FACEBOOK_LOGIN
|
|
310
96
|
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
|
|
103
|
+
## 403 Handling
|
|
316
104
|
|
|
317
|
-
|
|
105
|
+
If response includes `reqId`:
|
|
318
106
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
|
|
111
|
+
If 403 has no `reqId`:
|
|
329
112
|
|
|
330
|
-
|
|
331
|
-
|
|
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
|
-
|
|
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
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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
|
|
122
|
+
## Full Reference
|
|
738
123
|
|
|
739
|
-
-
|
|
740
|
-
-
|
|
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`
|