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
|
@@ -37,6 +37,10 @@ interface DeterministicErrorBody {
|
|
|
37
37
|
instructions?: string[];
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
interface PermissionDeniedContext {
|
|
41
|
+
retryCommandTemplate?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
40
44
|
function isEscalationPayload(body: unknown): body is Record<string, unknown> {
|
|
41
45
|
if (!body || typeof body !== 'object' || Array.isArray(body)) return false;
|
|
42
46
|
const obj = body as Record<string, unknown>;
|
|
@@ -59,6 +63,83 @@ function isDeterministicErrorBody(body: Record<string, unknown>): boolean {
|
|
|
59
63
|
return errorCode.length > 0 && DETERMINISTIC_ESCALATION_ERROR_CODES.has(errorCode);
|
|
60
64
|
}
|
|
61
65
|
|
|
66
|
+
function shellQuote(arg: string): string {
|
|
67
|
+
if (/^[A-Za-z0-9_./:=+-]+$/.test(arg)) return arg;
|
|
68
|
+
return `'${arg.replace(/'/g, `'\"'\"'`)}'`;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function deriveRetryCommandTemplateFromArgv(): string | undefined {
|
|
72
|
+
const scriptPath = process.argv[1] || '';
|
|
73
|
+
const match = scriptPath.match(/\/([^/]+)\.ts$/);
|
|
74
|
+
if (!match) return undefined;
|
|
75
|
+
const commandName = match[1];
|
|
76
|
+
const args = process.argv.slice(2).map(shellQuote).join(' ').trim();
|
|
77
|
+
return args.length > 0
|
|
78
|
+
? `npx auramaxx ${commandName} ${args}`
|
|
79
|
+
: `npx auramaxx ${commandName}`;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function materializeRetryCommand(baseCommand: string | undefined, reqId: string): string | undefined {
|
|
83
|
+
const base = String(baseCommand || '').trim();
|
|
84
|
+
if (!base) return undefined;
|
|
85
|
+
let command = base.replace(/<reqId>/g, reqId);
|
|
86
|
+
command = command
|
|
87
|
+
.replace(/--req-id\s+\S+/g, `--reqId ${reqId}`)
|
|
88
|
+
.replace(/--request-id\s+\S+/g, `--reqId ${reqId}`)
|
|
89
|
+
.replace(/--requestId\s+\S+/g, `--reqId ${reqId}`)
|
|
90
|
+
.replace(/--reqId\s+\S+/g, `--reqId ${reqId}`);
|
|
91
|
+
if (!/\s--(?:reqId|req-id|requestId|request-id)(?:\s|=|$)/.test(command)) {
|
|
92
|
+
command = `${command} --reqId ${reqId}`;
|
|
93
|
+
}
|
|
94
|
+
return command;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function isPlaceholderRetryCommand(command: string | undefined): boolean {
|
|
98
|
+
const value = String(command || '').trim();
|
|
99
|
+
if (!value) return true;
|
|
100
|
+
return value.includes('<retry_original_command>') || value.includes('<retry_original_tool>');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function resolveRetryCommand(params: {
|
|
104
|
+
reqId: string;
|
|
105
|
+
body: Record<string, unknown>;
|
|
106
|
+
context?: PermissionDeniedContext;
|
|
107
|
+
}): string {
|
|
108
|
+
const retryAction = (
|
|
109
|
+
params.body.retryAction
|
|
110
|
+
&& typeof params.body.retryAction === 'object'
|
|
111
|
+
&& !Array.isArray(params.body.retryAction)
|
|
112
|
+
) ? params.body.retryAction as Record<string, unknown> : null;
|
|
113
|
+
|
|
114
|
+
const actionCommand = retryAction && typeof retryAction.command === 'string'
|
|
115
|
+
? retryAction.command
|
|
116
|
+
: undefined;
|
|
117
|
+
const retryCommand = typeof params.body.retryCommand === 'string'
|
|
118
|
+
? params.body.retryCommand
|
|
119
|
+
: undefined;
|
|
120
|
+
const template = String(params.context?.retryCommandTemplate || '').trim();
|
|
121
|
+
const derivedTemplate = deriveRetryCommandTemplateFromArgv();
|
|
122
|
+
|
|
123
|
+
const candidate = [
|
|
124
|
+
template,
|
|
125
|
+
retryCommand,
|
|
126
|
+
isPlaceholderRetryCommand(actionCommand) ? '' : (actionCommand || ''),
|
|
127
|
+
derivedTemplate || '',
|
|
128
|
+
]
|
|
129
|
+
.map((entry) => String(entry || '').trim())
|
|
130
|
+
.find((entry) => entry.length > 0);
|
|
131
|
+
|
|
132
|
+
return materializeRetryCommand(candidate || '<retry_original_command>', params.reqId)
|
|
133
|
+
|| `<retry_original_command> --reqId ${params.reqId}`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function hasPlaceholderInstructions(instructions: unknown): boolean {
|
|
137
|
+
if (!Array.isArray(instructions)) return false;
|
|
138
|
+
return instructions.some((entry) =>
|
|
139
|
+
typeof entry === 'string'
|
|
140
|
+
&& (entry.includes('<retry_original_command>') || entry.includes('<retry_original_tool>')));
|
|
141
|
+
}
|
|
142
|
+
|
|
62
143
|
function emitUnsupportedContractVersion(status: number, rawVersion: string): void {
|
|
63
144
|
const payload = {
|
|
64
145
|
contractVersion: ESCALATION_CONTRACT_VERSION,
|
|
@@ -78,7 +159,11 @@ function emitUnsupportedContractVersion(status: number, rawVersion: string): voi
|
|
|
78
159
|
* Returns `true` if the error was handled (caller should exit),
|
|
79
160
|
* `false` if this isn't an escalation-shaped permission response.
|
|
80
161
|
*/
|
|
81
|
-
export async function handlePermissionDenied(
|
|
162
|
+
export async function handlePermissionDenied(
|
|
163
|
+
status: number,
|
|
164
|
+
body: unknown,
|
|
165
|
+
context?: PermissionDeniedContext,
|
|
166
|
+
): Promise<boolean> {
|
|
82
167
|
if (status !== 400 && status !== 403) return false;
|
|
83
168
|
if (!isEscalationPayload(body)) return false;
|
|
84
169
|
|
|
@@ -93,24 +178,26 @@ export async function handlePermissionDenied(status: number, body: unknown): Pro
|
|
|
93
178
|
const reqId = typeof body.reqId === 'string' ? body.reqId.trim() : '';
|
|
94
179
|
const claimCommand = reqId ? `npx auramaxx auth claim ${reqId} --json` : undefined;
|
|
95
180
|
const retryCommand = reqId
|
|
96
|
-
?
|
|
181
|
+
? resolveRetryCommand({ reqId, body: deterministic, context })
|
|
97
182
|
: '<retry_original_command>';
|
|
183
|
+
const existingInstructions = Array.isArray(deterministic.instructions) ? deterministic.instructions : [];
|
|
184
|
+
const instructions = reqId && (existingInstructions.length === 0 || hasPlaceholderInstructions(existingInstructions))
|
|
185
|
+
? [
|
|
186
|
+
...(claimCommand ? [`1) Re-claim token: ${claimCommand}`] : []),
|
|
187
|
+
`2) Run this exact command now: ${retryCommand}`,
|
|
188
|
+
]
|
|
189
|
+
: deterministic.instructions;
|
|
98
190
|
const guidance = {
|
|
99
191
|
status,
|
|
100
192
|
...deterministic,
|
|
101
193
|
...(reqId ? { reqId } : {}),
|
|
102
|
-
...(reqId
|
|
194
|
+
...(reqId ? {
|
|
103
195
|
claimAction: buildCliClaimAction(reqId),
|
|
104
196
|
} : {}),
|
|
105
|
-
...(reqId
|
|
197
|
+
...(reqId ? {
|
|
106
198
|
retryAction: buildCliRetryAction(retryCommand),
|
|
107
199
|
} : {}),
|
|
108
|
-
...(
|
|
109
|
-
instructions: [
|
|
110
|
-
...(claimCommand ? [`1) Re-claim token: ${claimCommand}`] : []),
|
|
111
|
-
`2) Retry original command: ${retryCommand}`,
|
|
112
|
-
],
|
|
113
|
-
} : {}),
|
|
200
|
+
...(instructions ? { instructions } : {}),
|
|
114
201
|
};
|
|
115
202
|
console.error(JSON.stringify(guidance, null, 2));
|
|
116
203
|
return true;
|
|
@@ -123,26 +210,24 @@ export async function handlePermissionDenied(status: number, body: unknown): Pro
|
|
|
123
210
|
? approval.approveUrl
|
|
124
211
|
: '<approve_url>';
|
|
125
212
|
const claimCommand = `npx auramaxx auth claim ${reqId} --json`;
|
|
126
|
-
const retryCommand =
|
|
213
|
+
const retryCommand = resolveRetryCommand({ reqId, body: approval, context });
|
|
214
|
+
const existingInstructions = Array.isArray(approval.instructions) ? approval.instructions : [];
|
|
215
|
+
const instructions = existingInstructions.length === 0 || hasPlaceholderInstructions(existingInstructions)
|
|
216
|
+
? [
|
|
217
|
+
`1) Ask a human to approve: ${approveUrl}`,
|
|
218
|
+
`2) Claim now: ${claimCommand}`,
|
|
219
|
+
`3) Run this exact command now: ${retryCommand}`,
|
|
220
|
+
]
|
|
221
|
+
: approval.instructions;
|
|
127
222
|
const guidance = {
|
|
128
223
|
status,
|
|
129
224
|
...approval,
|
|
130
225
|
reqId,
|
|
131
226
|
claimStatus: typeof approval.claimStatus === 'string' ? approval.claimStatus : 'pending',
|
|
132
227
|
retryReady: typeof approval.retryReady === 'boolean' ? approval.retryReady : false,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}),
|
|
136
|
-
...(approval.retryAction ? {} : {
|
|
137
|
-
retryAction: buildCliRetryAction(retryCommand),
|
|
138
|
-
}),
|
|
139
|
-
...(!Array.isArray(approval.instructions) || approval.instructions.length === 0 ? {
|
|
140
|
-
instructions: [
|
|
141
|
-
`1) Ask a human to approve: ${approveUrl}`,
|
|
142
|
-
`2) Claim now: ${claimCommand}`,
|
|
143
|
-
`3) Retry now: ${retryCommand}`,
|
|
144
|
-
],
|
|
145
|
-
} : {}),
|
|
228
|
+
claimAction: buildCliClaimAction(reqId),
|
|
229
|
+
retryAction: buildCliRetryAction(retryCommand),
|
|
230
|
+
...(instructions ? { instructions } : {}),
|
|
146
231
|
};
|
|
147
232
|
console.error(JSON.stringify(guidance, null, 2));
|
|
148
233
|
return true;
|
|
@@ -376,10 +376,11 @@ export function startDashboardProcess(opts: StartDashboardProcessOptions = {}):
|
|
|
376
376
|
let hasProductionBuild = fs.existsSync(buildIdPath);
|
|
377
377
|
|
|
378
378
|
// If build artifacts are missing, recover once by rebuilding in place.
|
|
379
|
+
// Use the package build script so prebuild cleanup runs and avoids stale chunk graphs.
|
|
379
380
|
if (!opts.dev && !hasProductionBuild) {
|
|
380
381
|
console.warn(`[AuraMaxx] Missing production dashboard build (${buildIdPath}); attempting one-time dashboard build.`);
|
|
381
382
|
try {
|
|
382
|
-
execSync('
|
|
383
|
+
execSync('npm run build', { cwd: root, env, stdio: buildStdioMode });
|
|
383
384
|
} catch {
|
|
384
385
|
// Fall back to next dev below so local workflows remain usable if build fails.
|
|
385
386
|
}
|
package/src/server/cli/socket.ts
CHANGED
|
@@ -237,7 +237,7 @@ export class SocketServer {
|
|
|
237
237
|
|
|
238
238
|
// ── Auto-approve path ──
|
|
239
239
|
if (request.autoApprove) {
|
|
240
|
-
const autoApproveEnabled = getDefaultSync<boolean>('trust.localAutoApprove',
|
|
240
|
+
const autoApproveEnabled = getDefaultSync<boolean>('trust.localAutoApprove', true);
|
|
241
241
|
if (!autoApproveEnabled) {
|
|
242
242
|
this.send(socket, { type: 'error', message: 'Auto-approve is disabled. Use standard approval flow.' });
|
|
243
243
|
return;
|
package/src/server/index.ts
CHANGED
|
@@ -29,6 +29,7 @@ import appRoutes from './routes/apps';
|
|
|
29
29
|
import actionsRoutes from './routes/actions';
|
|
30
30
|
import credentialAgentRoutes from './routes/credential-agents';
|
|
31
31
|
import credentialsRoutes from './routes/credentials';
|
|
32
|
+
import agentProfilesRoutes from './routes/agent-profiles';
|
|
32
33
|
import credentialSharesRoutes from './routes/credential-shares';
|
|
33
34
|
import passkeyCredentialRoutes from './routes/passkey-credentials';
|
|
34
35
|
import importRoutes from './routes/import';
|
|
@@ -198,6 +199,7 @@ app.use('/agents/credential', credentialAgentRoutes);
|
|
|
198
199
|
app.use('/credentials/import', importRoutes);
|
|
199
200
|
app.use('/credentials/passkey', passkeyCredentialRoutes);
|
|
200
201
|
app.use('/credentials', credentialsRoutes);
|
|
202
|
+
app.use('/agent-profiles', agentProfilesRoutes);
|
|
201
203
|
app.use('/credential-shares', credentialSharesRoutes);
|
|
202
204
|
app.use('/adapters', adaptersRoutes);
|
|
203
205
|
app.use('/defaults', defaultsRoutes);
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { DATA_PATHS } from './config';
|
|
4
|
+
import type { AgentProfileInput, AgentProfileRecord } from '../../../shared/agent-profile-schema';
|
|
5
|
+
|
|
6
|
+
interface AgentProfilesFile {
|
|
7
|
+
version: 1;
|
|
8
|
+
profiles: Record<string, AgentProfileRecord>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const AGENT_PROFILES_FILE = 'agent-profiles.json';
|
|
12
|
+
|
|
13
|
+
function getAgentProfilesPath(): string {
|
|
14
|
+
return path.join(DATA_PATHS.wallets, AGENT_PROFILES_FILE);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function defaultStore(): AgentProfilesFile {
|
|
18
|
+
return { version: 1, profiles: {} };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function readStore(): AgentProfilesFile {
|
|
22
|
+
const filePath = getAgentProfilesPath();
|
|
23
|
+
if (!fs.existsSync(filePath)) return defaultStore();
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
const raw = fs.readFileSync(filePath, 'utf8');
|
|
27
|
+
const parsed = JSON.parse(raw) as Partial<AgentProfilesFile> | null;
|
|
28
|
+
if (!parsed || typeof parsed !== 'object') return defaultStore();
|
|
29
|
+
if (parsed.version !== 1 || !parsed.profiles || typeof parsed.profiles !== 'object') return defaultStore();
|
|
30
|
+
return {
|
|
31
|
+
version: 1,
|
|
32
|
+
profiles: parsed.profiles as Record<string, AgentProfileRecord>,
|
|
33
|
+
};
|
|
34
|
+
} catch {
|
|
35
|
+
return defaultStore();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function writeStore(store: AgentProfilesFile): void {
|
|
40
|
+
const filePath = getAgentProfilesPath();
|
|
41
|
+
fs.writeFileSync(filePath, JSON.stringify(store, null, 2), { mode: 0o600 });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function listAgentProfiles(): AgentProfileRecord[] {
|
|
45
|
+
return Object.values(readStore().profiles).sort((a, b) => a.agentId.localeCompare(b.agentId));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function getAgentProfile(agentId: string): AgentProfileRecord | null {
|
|
49
|
+
return readStore().profiles[agentId] || null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function upsertAgentProfile(input: AgentProfileInput): AgentProfileRecord {
|
|
53
|
+
const store = readStore();
|
|
54
|
+
const existing = store.profiles[input.agentId];
|
|
55
|
+
const now = new Date().toISOString();
|
|
56
|
+
const next: AgentProfileRecord = {
|
|
57
|
+
...input,
|
|
58
|
+
createdAt: existing?.createdAt || now,
|
|
59
|
+
updatedAt: now,
|
|
60
|
+
};
|
|
61
|
+
store.profiles[input.agentId] = next;
|
|
62
|
+
writeStore(store);
|
|
63
|
+
return next;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function deleteAgentProfile(agentId: string): boolean {
|
|
67
|
+
const store = readStore();
|
|
68
|
+
if (!store.profiles[agentId]) return false;
|
|
69
|
+
delete store.profiles[agentId];
|
|
70
|
+
writeStore(store);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
} from 'crypto';
|
|
12
12
|
import * as net from 'net';
|
|
13
13
|
import { buildPollUrl } from './approval-flow';
|
|
14
|
+
import { getDefault, SEED_DEFAULTS } from './defaults';
|
|
14
15
|
import { resolveAuraSocketCandidates } from './socket-path';
|
|
15
16
|
|
|
16
17
|
interface HybridEnvelope {
|
|
@@ -275,6 +276,29 @@ function parseProfileOverridesFromEnv(): ProfileIssuanceOverrides | undefined {
|
|
|
275
276
|
}
|
|
276
277
|
}
|
|
277
278
|
|
|
279
|
+
function seedStringDefault(key: string, fallback: string): string {
|
|
280
|
+
const seed = SEED_DEFAULTS.find((entry) => entry.key === key);
|
|
281
|
+
if (!seed || typeof seed.value !== 'string') return fallback;
|
|
282
|
+
const normalized = seed.value.trim();
|
|
283
|
+
return normalized || fallback;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export async function resolveAuthFallbackProfileConfig(options?: AuthRequestBootstrapOptions): Promise<{
|
|
287
|
+
profile: string;
|
|
288
|
+
profileVersion: string;
|
|
289
|
+
}> {
|
|
290
|
+
const explicitProfile = options?.profile?.trim();
|
|
291
|
+
const explicitProfileVersion = options?.profileVersion?.trim();
|
|
292
|
+
|
|
293
|
+
const defaultProfile = String(await getDefault<string | null>('trust.localProfile', '') || '').trim();
|
|
294
|
+
const defaultProfileVersion = String(await getDefault<string | null>('trust.localProfileVersion', '') || '').trim();
|
|
295
|
+
|
|
296
|
+
return {
|
|
297
|
+
profile: explicitProfile || defaultProfile || seedStringDefault('trust.localProfile', 'admin'),
|
|
298
|
+
profileVersion: explicitProfileVersion || defaultProfileVersion || seedStringDefault('trust.localProfileVersion', 'v1'),
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
|
|
278
302
|
// ── Socket bootstrap (CLI auth via Unix socket) ──
|
|
279
303
|
|
|
280
304
|
/**
|
|
@@ -394,21 +418,13 @@ export async function bootstrapViaAuthRequest(
|
|
|
394
418
|
keypair: EphemeralKeypair,
|
|
395
419
|
options: AuthRequestBootstrapOptions = {},
|
|
396
420
|
): Promise<string | AuthRequestCreated> {
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
process.env.AURA_AUTH_PROFILE ||
|
|
400
|
-
process.env.AURA_AGENT_PROFILE ||
|
|
401
|
-
'strict'
|
|
402
|
-
).trim();
|
|
421
|
+
const resolvedProfile = await resolveAuthFallbackProfileConfig(options);
|
|
422
|
+
const profile = resolvedProfile.profile;
|
|
403
423
|
if (!profile) {
|
|
404
424
|
throw new Error('No profile configured for /auth fallback');
|
|
405
425
|
}
|
|
406
426
|
|
|
407
|
-
const profileVersion =
|
|
408
|
-
options.profileVersion ||
|
|
409
|
-
process.env.AURA_AUTH_PROFILE_VERSION ||
|
|
410
|
-
'v1'
|
|
411
|
-
).trim();
|
|
427
|
+
const profileVersion = resolvedProfile.profileVersion;
|
|
412
428
|
const profileOverrides = options.profileOverrides || parseProfileOverridesFromEnv();
|
|
413
429
|
const timeoutMs = options.timeoutMs ?? 120_000;
|
|
414
430
|
const pollIntervalMs = options.pollIntervalMs ?? 3_000;
|
|
@@ -36,10 +36,10 @@ export const SEED_DEFAULTS: SeedDefault[] = [
|
|
|
36
36
|
{ key: 'gas.sol_buffer', value: 0.000005, type: 'financial', label: 'Solana Gas Buffer (SOL)', description: 'Reserved SOL buffer for max-send in UI' },
|
|
37
37
|
|
|
38
38
|
// TTLs
|
|
39
|
-
{ key: 'ttl.agent', value:
|
|
39
|
+
{ key: 'ttl.agent', value: 604800, type: 'ttl', label: 'Agent Token TTL (seconds)', description: 'Default time-to-live for agent tokens (7 days)' },
|
|
40
40
|
{ key: 'ttl.admin', value: 2592000, type: 'ttl', label: 'Admin Token TTL (seconds)', description: 'Time-to-live for admin tokens (30 days)' },
|
|
41
41
|
{ key: 'ttl.app', value: 86400, type: 'ttl', label: 'App Token TTL (seconds)', description: 'Time-to-live for app tokens (24h)' },
|
|
42
|
-
{ key: 'ttl.action', value:
|
|
42
|
+
{ key: 'ttl.action', value: 3600, type: 'ttl', label: 'Action Token TTL (seconds)', description: 'Default time-to-live for action tokens (1 hour)' },
|
|
43
43
|
|
|
44
44
|
// Strategy runtime (cron-owned)
|
|
45
45
|
{ key: 'strategy.cron_enabled', value: true, type: 'strategy', label: 'Enable Cron-Owned Strategy Runtime', description: 'When true, strategy ticks and message hooks are owned by the cron process only' },
|
|
@@ -89,7 +89,7 @@ export const SEED_DEFAULTS: SeedDefault[] = [
|
|
|
89
89
|
{ key: 'discovery.max_initial_lookback', value: 302400, type: 'discovery', label: 'Max Initial Lookback (blocks)', description: 'How far back to scan on first run (~7 days on Base)' },
|
|
90
90
|
|
|
91
91
|
// Trust / auto-approve defaults
|
|
92
|
-
{ key: 'trust.localAutoApprove', value:
|
|
92
|
+
{ key: 'trust.localAutoApprove', value: true, type: 'trust', label: 'Auto-Approve Local Socket Connections', description: 'Auto-approve auth requests from same-UID processes via Unix socket (0600 permission = same user = trusted)' },
|
|
93
93
|
{ key: 'trust.localProfile', value: 'admin', type: 'trust', label: 'Local Socket Agent Profile', description: 'Built-in profile used for local socket-issued agent tokens (strict/dev/admin). Default is admin.' },
|
|
94
94
|
{ key: 'trust.localProfileVersion', value: 'v1', type: 'trust', label: 'Local Socket Agent Profile Version', description: 'Version for local socket profile resolution' },
|
|
95
95
|
{ key: 'trust.localProfileOverrides', value: null, type: 'trust', label: 'Local Socket Agent Profile Overrides', description: 'Optional tighten-only overrides for the local socket profile' },
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
|
|
26
26
|
const SESSION_TOKEN_TTL_SECONDS = 7 * 24 * 60 * 60;
|
|
27
27
|
const STRICT_SESSION_TOKEN_TTL_SECONDS = 60 * 60;
|
|
28
|
-
const ESCALATION_PROFILE_ORDER = ['
|
|
28
|
+
const ESCALATION_PROFILE_ORDER = ['dev', 'strict', 'admin'] as const;
|
|
29
29
|
|
|
30
30
|
export interface OneShotEscalationContext {
|
|
31
31
|
routeContractId: string;
|
|
@@ -122,7 +122,7 @@ export async function resolveAction(
|
|
|
122
122
|
const defaultSendLimit = await getDefault<number>('limits.send', 0.1);
|
|
123
123
|
const defaultSwapLimit = await getDefault<number>('limits.swap', 0.1);
|
|
124
124
|
const defaultPermissions = await getDefault<string[]>('permissions.default', ['wallet:create:hot', 'send:hot', 'swap', 'fund', 'action:create']);
|
|
125
|
-
const defaultTtl = await getDefault<number>('ttl.agent',
|
|
125
|
+
const defaultTtl = await getDefault<number>('ttl.agent', 604800);
|
|
126
126
|
const effectivePolicy = parseRequestedPolicy(metadata.effectivePolicy);
|
|
127
127
|
const compiledBinding = parsePolicyOperationBinding(metadata.binding);
|
|
128
128
|
const oneShotBinding = metadata.approvalScope === 'one_shot_read'
|
|
@@ -315,7 +315,7 @@ export async function resolveAction(
|
|
|
315
315
|
return { success: false, statusCode: 400, data: { success: false, error: 'requestedPubkey is required for token issuance' } };
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
-
const ttl = await getDefault<number>('ttl.agent',
|
|
318
|
+
const ttl = await getDefault<number>('ttl.agent', 604800);
|
|
319
319
|
const token = await createToken(agentId, newLimits?.fund ?? 0, newPermissions, ttl, {
|
|
320
320
|
limits: newLimits,
|
|
321
321
|
walletAccess: newWalletAccess,
|
package/src/server/mcp/server.ts
CHANGED
|
@@ -1501,6 +1501,7 @@ server.tool(
|
|
|
1501
1501
|
'Authorization': `Bearer ${authToken}`,
|
|
1502
1502
|
'X-Secret-Surface': 'get_secret',
|
|
1503
1503
|
'X-Credential-Name': credentialName || name,
|
|
1504
|
+
'X-Aura-Original-Command': `mcp get_secret ${JSON.stringify(name)}`,
|
|
1504
1505
|
},
|
|
1505
1506
|
signal: AbortSignal.timeout(5000),
|
|
1506
1507
|
});
|
|
@@ -1532,7 +1533,10 @@ server.tool(
|
|
|
1532
1533
|
try {
|
|
1533
1534
|
const totpRes = await fetch(`${base}/credentials/${credentialId}/totp`, {
|
|
1534
1535
|
method: 'POST',
|
|
1535
|
-
headers: {
|
|
1536
|
+
headers: {
|
|
1537
|
+
'Authorization': `Bearer ${authToken}`,
|
|
1538
|
+
'X-Aura-Original-Command': `mcp get_secret ${JSON.stringify(name)}`,
|
|
1539
|
+
},
|
|
1536
1540
|
signal: AbortSignal.timeout(5000),
|
|
1537
1541
|
});
|
|
1538
1542
|
if (totpRes.ok) {
|
|
@@ -1993,6 +1997,7 @@ server.tool(
|
|
|
1993
1997
|
'X-Secret-Surface': 'inject_secret',
|
|
1994
1998
|
'X-Secret-EnvVar': resolvedEnvVar,
|
|
1995
1999
|
'X-Credential-Name': resolved.credentialName || name,
|
|
2000
|
+
'X-Aura-Original-Command': `mcp inject_secret ${JSON.stringify(name)}`,
|
|
1996
2001
|
},
|
|
1997
2002
|
signal: AbortSignal.timeout(5000),
|
|
1998
2003
|
});
|
package/src/server/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"4.0.18","results":[[":tests/send.test.ts",{"duration":162.08154100000002,"failed":false}],[":tests/approve.test.ts",{"duration":257.27824999999996,"failed":false}],[":tests/unlock.test.ts",{"duration":213.61050000000003,"failed":false}],[":tests/setup.test.ts",{"duration":128.30779199999998,"failed":false}],[":tests/e2e.test.ts",{"duration":4135.749916,"failed":false}],[":tests/wallet.test.ts",{"duration":1768.446334,"failed":false}],[":tests/auth.test.ts",{"duration":174.709292,"failed":false}],[":tests/fund.test.ts",{"duration":820.6141660000001,"failed":false}],[":tests/integration/agent-flow.test.ts",{"duration":6484.0229580000005,"failed":false}],[":tests/auth/permissions.test.ts",{"duration":6860.946166,"failed":false}],[":tests/auth/middleware.test.ts",{"duration":8665.335458,"failed":false}],[":tests/lib/sessions.test.ts",{"duration":140.3890839999999,"failed":false}],[":tests/lib/auth.test.ts",{"duration":4161.155875,"failed":false}],[":tests/endpoints/unlock.test.ts",{"duration":10516.088167,"failed":false}],[":tests/endpoints/wallet.test.ts",{"duration":4695.9856660000005,"failed":false}],[":tests/endpoints/approve.test.ts",{"duration":497.64808300000004,"failed":false}],[":tests/endpoints/fund.test.ts",{"duration":1913.7957499999998,"failed":false}],[":tests/endpoints/send.test.ts",{"duration":2299.269958,"failed":false}],[":tests/endpoints/auth.test.ts",{"duration":1626.0414170000001,"failed":false}],[":tests/endpoints/setup.test.ts",{"duration":4903.555625,"failed":false}],[":tests/lib/uniswap.test.ts",{"duration":12.922124999999994,"failed":false}],[":tests/auth/apikeys.test.ts",{"duration":11033.728000000001,"failed":false}],[":tests/endpoints/wallet-data.test.ts",{"duration":2361.0938749999996,"failed":false}],[":tests/endpoints/swap.test.ts",{"duration":2080.850333,"failed":false}],[":tests/endpoints/token-clearing.test.ts",{"duration":1275.667166,"failed":false}],[":tests/endpoints/rate-limit.test.ts",{"duration":2472.636834,"failed":false}],[":tests/endpoints/solana-swap.test.ts",{"duration":1135.3400419999998,"failed":false}],[":tests/endpoints/solana-wallet.test.ts",{"duration":1332.447167,"failed":false}],[":tests/endpoints/solana-send.test.ts",{"duration":1137.762542,"failed":false}],[":tests/lib/sessions-currency.test.ts",{"duration":98.28037499999994,"failed":false}],[":tests/endpoints/solana-fund.test.ts",{"duration":1389.5039170000002,"failed":false}],[":tests/lib/solana-wallet.test.ts",{"duration":152.42383300000003,"failed":false}],[":tests/lib/address.test.ts",{"duration":2.3867500000000064,"failed":false}],[":tests/lib/strategy/sources.test.ts",{"duration":23.263125000000002,"failed":false}],[":tests/lib/strategy/loader.test.ts",{"duration":13.031958000000003,"failed":false}],[":tests/lib/strategy/executor.test.ts",{"duration":10.344791999999998,"failed":false}],[":tests/lib/strategy/state.test.ts",{"duration":8.204291000000012,"failed":false}],[":tests/lib/strategy/hooks.test.ts",{"duration":15.095167000000004,"failed":false}],[":tests/endpoints/widgets.test.ts",{"duration":2127.785625,"failed":false}],[":tests/lib/strategy/message.test.ts",{"duration":117.03549999999998,"failed":false}],[":tests/endpoints/actions.test.ts",{"duration":2490.171959,"failed":false}],[":tests/endpoints/vault.test.ts",{"duration":7419.710874999999,"failed":false}],[":tests/integration/adapter-resolve.test.ts",{"duration":3419.947875,"failed":false}],[":tests/lib/adapters.test.ts",{"duration":39.44187499999998,"failed":false}],[":tests/lib/strategy/tick.test.ts",{"duration":14.114249999999998,"failed":false}],[":tests/lib/relay.test.ts",{"duration":5.098500000000001,"failed":false}],[":tests/lib/ai.test.ts",{"duration":5.766832999999991,"failed":false}],[":tests/endpoints/launch.test.ts",{"duration":33387.771875000006,"failed":false}],[":tests/widget-installer.test.ts",{"duration":154.704459,"failed":false}],[":tests/mcp/tools.test.ts",{"duration":18.470208999999997,"failed":false}],[":tests/ai-integration/scenarios.test.ts",{"duration":7.4487499999999045,"failed":true}],[":tests/mcp/server.test.ts",{"duration":1315.3400000000001,"failed":false}],[":tests/ai-integration/live.test.ts",{"duration":77572.38508299999,"failed":false}],[":tests/auth/apikeys-validate.test.ts",{"duration":10194.185916999999,"failed":false}],[":tests/lib/adapters-test.test.ts",{"duration":25068.145,"failed":false}],[":tests/setup-integration/wizard-flow.test.ts",{"duration":124.21662500000002,"failed":false}],[":tests/setup-integration/adapter-test.test.ts",{"duration":166.0367080000001,"failed":false}],[":tests/setup-integration/edge-cases.test.ts",{"duration":156.02324999999996,"failed":false}],[":tests/setup-integration/apikey-validation.test.ts",{"duration":147.53583400000002,"failed":false}],[":tests/setup-integration/fresh-setup.test.ts",{"duration":107.81912499999999,"failed":false}],[":tests/lib/network.test.ts",{"duration":8.958541000000011,"failed":false}],[":tests/cli/process.test.ts",{"duration":71.598583,"failed":false}],[":tests/cli/init-steps.test.ts",{"duration":6.675083000000001,"failed":false}],[":tests/cli/init-flow.test.ts",{"duration":2391.04175,"failed":false}],[":tests/cli/http.test.ts",{"duration":1542.3549170000001,"failed":false}],[":tests/lib/verified-summary.test.ts",{"duration":7.465000000000003,"failed":false}],[":tests/lib/defaults.test.ts",{"duration":68.78937500000006,"failed":false}],[":tests/endpoints/defaults.test.ts",{"duration":5949.6704580000005,"failed":false}],[":tests/lib/adapters-chat.test.ts",{"duration":27.50725,"failed":false}],[":tests/setup-integration/terminal-flow.test.ts",{"duration":248.770042,"failed":false}],[":tests/endpoints/transactions.test.ts",{"duration":1075.1703750000001,"failed":false}],[":tests/cron/scheduler.test.ts",{"duration":9.289000000000001,"failed":false}],[":tests/endpoints/portfolio.test.ts",{"duration":399.819125,"failed":false}],[":tests/cron/native-price.test.ts",{"duration":90.79191700000013,"failed":false}],[":tests/resolve.test.ts",{"duration":12.519958999999972,"failed":false}],[":tests/lib/prices.test.ts",{"duration":117.50366599999995,"failed":false}],[":tests/swap-quote.test.ts",{"duration":1032.03225,"failed":false}],[":tests/send-token.test.ts",{"duration":1129.1477089999998,"failed":false}],[":tests/endpoints/price.test.ts",{"duration":34.99437499999999,"failed":false}],[":tests/lib/price.test.ts",{"duration":6.063124999999999,"failed":false}],[":tests/endpoints/token-search.test.ts",{"duration":34.08495800000003,"failed":false}],[":tests/lib/token-search.test.ts",{"duration":65.659459,"failed":false}],[":tests/lib/token-safety.test.ts",{"duration":3.9480840000000086,"failed":false}],[":tests/endpoints/token-safety.test.ts",{"duration":39.586874999999964,"failed":false}],[":tests/lib/batch.test.ts",{"duration":6.194333,"failed":false}],[":tests/endpoints/batch.test.ts",{"duration":40.957624999999894,"failed":false}],[":tests/endpoints/token-balance.test.ts",{"duration":23.568333000000052,"failed":false}],[":tests/lib/events-decoder.test.ts",{"duration":4.653541999999987,"failed":false}],[":tests/lib/events-enricher.test.ts",{"duration":4.722249999999974,"failed":false}],[":tests/endpoints/address-transactions.test.ts",{"duration":1001.8793330000001,"failed":false}],[":tests/endpoints/bookmarks.test.ts",{"duration":1273.168834,"failed":false}],[":tests/endpoints/addressbook.test.ts",{"duration":1140.520709,"failed":false}],[":tests/lib/strategy/session-logger.test.ts",{"duration":1475.4438750000002,"failed":false}],[":tests/cron/incoming-scan.test.ts",{"duration":473.96349999999984,"failed":false}],[":tests/lib/auto-unlock.test.ts",{"duration":1026.6505419999999,"failed":false}],[":tests/lib/widget-tokens-tier.test.ts",{"duration":226.36699999999996,"failed":false}],[":tests/cron/strategy-runner.test.ts",{"duration":5.196749999999994,"failed":false}],[":tests/endpoints/strategy-routes.test.ts",{"duration":11061.511792000001,"failed":false}],[":tests/endpoints/apps.test.ts",{"duration":21020.667667,"failed":false}],[":tests/lib/events-fetcher.test.ts",{"duration":8.513292000000035,"failed":false}],[":tests/app-installer.test.ts",{"duration":125.662,"failed":false}],[":tests/lib/app-tokens-tier.test.ts",{"duration":279.3665000000001,"failed":false}],[":tests/setup-integration/onboarding-e2e.test.ts",{"duration":445.7834579999999,"failed":true}],[":tests/cron/orphan-cleanup.test.ts",{"duration":4.350957999999991,"failed":false}],[":tests/lib/strategy/repository.test.ts",{"duration":57.19095900000002,"failed":false}],[":tests/setup-integration/autonomous-agent.test.ts",{"duration":7.406667000000027,"failed":true}],[":tests/lib/websocket-auth.test.ts",{"duration":244.669125,"failed":false}],[":tests/lib/credentials.test.ts",{"duration":7409.140666,"failed":false}],[":tests/lib/credential-access.test.ts",{"duration":5.373667000000012,"failed":false}],[":tests/lib/credential-scope.test.ts",{"duration":3.3769999999999953,"failed":false}],[":tests/endpoints/credential-ops.test.ts",{"duration":2993.527792,"failed":false}],[":tests/endpoints/credentials.test.ts",{"duration":27436.171167,"failed":false}],[":tests/lib/credential-transport.test.ts",{"duration":82.691125,"failed":false}],[":tests/lib/credential-vault.test.ts",{"duration":4433.612583,"failed":false}],[":tests/lib/resolve-action.test.ts",{"duration":5.167874999999995,"failed":false}],[":tests/credential-import.test.ts",{"duration":18.033333,"failed":false}],[":tests/endpoints/passkey.test.ts",{"duration":14119.862792,"failed":false}],[":tests/lib/oauth2-refresh.test.ts",{"duration":3.6922079999999937,"failed":false}],[":tests/lib/totp.test.ts",{"duration":4.893249999999995,"failed":false}],[":tests/lib/passkey-credential.test.ts",{"duration":10.088207999999995,"failed":false}],[":tests/cli/env.test.ts",{"duration":5.473374999999976,"failed":false}],[":tests/dotenv-parser.test.ts",{"duration":3.5254580000000004,"failed":false}],[":tests/cli/socket.test.ts",{"duration":182.058041,"failed":false}],[":tests/cli/vault.test.ts",{"duration":5.563457999999997,"failed":false}],[":tests/cli/credential-resolve.test.ts",{"duration":5.233750000000001,"failed":false}],[":tests/cli/env-check-server-vault.test.ts",{"duration":239.821708,"failed":false}],[":tests/e2e-agent/validation.test.ts",{"duration":7.211583999999988,"failed":false}],[":tests/e2e-agent/artifacts.test.ts",{"duration":2.1269999999999953,"failed":false}],[":tests/e2e-agent/ci-lanes.test.ts",{"duration":1.2214999999999918,"failed":false}],[":tests/lib/api-registry/validation.test.ts",{"duration":5.2849159999999955,"failed":false}],[":tests/lib/aura-parser.test.ts",{"duration":8.70774999999999,"failed":false}],[":tests/lib/agent-auth/contracts.test.ts",{"duration":8.485083000000003,"failed":false}],[":tests/cli/doctor.test.ts",{"duration":11.789917000000003,"failed":false}],[":tests/endpoints/import.test.ts",{"duration":8544.381041,"failed":false}],[":tests/endpoints/passkey-credentials.test.ts",{"duration":2465.343125,"failed":false}],[":tests/lib/credential-health.test.ts",{"duration":5.434459000000004,"failed":false}],[":tests/lib/agent-profiles.test.ts",{"duration":3.715292000000005,"failed":false}],[":tests/mcp/profile-policy.test.ts",{"duration":2.9203329999999994,"failed":false}],[":tests/endpoints/profile-parity.test.ts",{"duration":9.213209000000006,"failed":true}],[":tests/lib/profile-parity.test.ts",{"duration":1.5617079999999959,"failed":false}],[":tests/endpoints/credential-access-audit.test.ts",{"duration":1831.280084,"failed":false}],[":tests/lib/project-scope.test.ts",{"duration":7.087417000000002,"failed":false}],[":tests/docs/job-docs-validation.test.ts",{"duration":34.77499999999999,"failed":false}],[":tests/endpoints/credential-shares.test.ts",{"duration":5679.323708,"failed":false}],[":tests/lib/task-lifecycle.test.ts",{"duration":7.928124999999994,"failed":false}],[":tests/endpoints/tasks-lifecycle.test.ts",{"duration":191.46470899999997,"failed":false}],[":tests/cli/local-agent-trust.test.ts",{"duration":2.5420000000000016,"failed":false}],[":tests/cli/token.test.ts",{"duration":1.4254999999999995,"failed":false}],[":tests/endpoints/heartbeat.test.ts",{"duration":4185.5347919999995,"failed":false}],[":tests/cli/bin-entrypoint.test.ts",{"duration":2070.419542,"failed":false}],[":tests/sandbox/cli.test.ts",{"duration":298.06512499999997,"failed":false}],[":tests/cli/vault-auth.test.ts",{"duration":195.026916,"failed":false}],[":tests/lib/encrypt.test.ts",{"duration":873.5956249999999,"failed":false}],[":tests/cli/vault-share-gist.test.ts",{"duration":14.503625,"failed":false}],[":tests/lib/secret-gist-share.test.ts",{"duration":1.6548749999999899,"failed":false}],[":tests/cli/vault-list-filters.test.ts",{"duration":14.040582999999984,"failed":false}],[":tests/cli/start.test.ts",{"duration":1.5543749999999932,"failed":false}],[":tests/cli/wallet.test.ts",{"duration":1.5067919999999901,"failed":false}],[":tests/cli/prompt-select.test.ts",{"duration":5.0974159999999955,"failed":false}],[":tests/cli/quickhack.test.ts",{"duration":1.8575830000000053,"failed":false}],[":tests/lib/human-action-summary.test.ts",{"duration":2.172708,"failed":false}],[":tests/pipeline-db/paths.test.ts",{"duration":5.902790999999979,"failed":false}],[":tests/pipeline-db/bootstrap.test.ts",{"duration":39.007125,"failed":false}],[":tests/pipeline-db/snapshot.test.ts",{"duration":29.974833999999987,"failed":false}],[":tests/pipeline-db/dual-write.test.ts",{"duration":60.147583,"failed":false}],[":tests/pipeline-db/importer.test.ts",{"duration":33.614417,"failed":false}],[":tests/pipeline-lifecycle/service.test.ts",{"duration":32.389666000000005,"failed":false}],[":tests/pipeline-lifecycle/taskctl.test.ts",{"duration":2885.294625,"failed":false}],[":tests/pipeline-lifecycle/agent-cron-integration.test.ts",{"duration":28.44970900000004,"failed":false}],[":tests/pipeline-db/cutover-plan.test.ts",{"duration":2.5047919999999806,"failed":false}],[":tests/lib/approval-link.test.ts",{"duration":1.0736249999999998,"failed":false}],[":tests/lib/dont-ask-again-policy.test.ts",{"duration":1.1969999999999956,"failed":false}],[":tests/lib/update-check.test.ts",{"duration":1.2907499999999956,"failed":false}],[":tests/lib/auto-execute.test.ts",{"duration":108.52020800000001,"failed":false}],[":tests/lib/auth-action.test.ts",{"duration":2381.883417,"failed":false}],[":tests/cli/auth-action-flag.test.ts",{"duration":3.2717090000000013,"failed":false}],[":tests/pipeline-lifecycle/tags.test.ts",{"duration":321.27825,"failed":false}],[":tests/endpoints/nuke.test.ts",{"duration":69.0028749999999,"failed":false}],[":tests/endpoints/apikeys.test.ts",{"duration":11085.063833,"failed":false}],[":tests/endpoints/security.test.ts",{"duration":9164.535417000001,"failed":false}],[":tests/endpoints/dashboard.test.ts",{"duration":103.2655420000001,"failed":false}],[":tests/endpoints/logs.test.ts",{"duration":183.44812500000035,"failed":false}],[":tests/endpoints/views.test.ts",{"duration":17.28716600000007,"failed":false}],[":tests/endpoints/flags.test.ts",{"duration":12.482625000000098,"failed":false}],[":tests/endpoints/lock.test.ts",{"duration":11063.760583,"failed":false}],[":tests/endpoints/backup.test.ts",{"duration":6926.148333000001,"failed":false}],[":tests/auth/approval-permissions-regression.test.ts",{"duration":2480.281,"failed":false}],[":tests/sandbox/cli-cd-suite.test.ts",{"duration":716.216417,"failed":false}],[":tests/mcp/contract.test.ts",{"duration":137.964667,"failed":false}],[":tests/lib/credential-paths.test.ts",{"duration":3868.3269579999996,"failed":false}],[":tests/runtime-vault-smoke.test.ts",{"duration":1521.938291,"failed":false}],[":tests/cli/taskctl-lock-smoke.test.ts",{"duration":0,"failed":false}],[":tests/cli/start-run.test.ts",{"duration":5.508500000000012,"failed":false}],[":tests/cli/restart-run.test.ts",{"duration":5.842624999999998,"failed":false}],[":tests/endpoints/approve-action.test.ts",{"duration":1189.9009999999998,"failed":false}],[":tests/cli/escalation.test.ts",{"duration":2.6644580000000104,"failed":false}],[":tests/cli/actions-auth.test.ts",{"duration":28.956958,"failed":false}],[":tests/lib/temp-policy.test.ts",{"duration":2.522082999999995,"failed":false}],[":tests/endpoints/escalation-migration-gate.test.ts",{"duration":11759.366875,"failed":false}],[":tests/lib/escalation-responder.test.ts",{"duration":29.30250000000001,"failed":false}],[":tests/cli/service.test.ts",{"duration":30.206625000000003,"failed":false}],[":tests/cli/init-runtime.test.ts",{"duration":5.384709000000015,"failed":false}],[":tests/cli/agent.test.ts",{"duration":3.6429999999999865,"failed":false}],[":tests/runtime-agent-smoke.test.ts",{"duration":1153.6031249999999,"failed":false}],[":tests/endpoints/agent.test.ts",{"duration":5839.951833,"failed":false}],[":tests/lib/credential-agent.test.ts",{"duration":3050.413583,"failed":false}],[":tests/cli/agent-auth.test.ts",{"duration":666.145958,"failed":false}],[":tests/cli/agent-share-gist.test.ts",{"duration":14.854874999999993,"failed":false}],[":tests/cli/agent-list-filters.test.ts",{"duration":12.56774999999999,"failed":false}],[":tests/cli/env-check-server-agent.test.ts",{"duration":321.9115,"failed":false}],[":tests/lib/import-from-openclaw-paths.test.ts",{"duration":0,"failed":true}]]}
|
|
1
|
+
{"version":"4.0.18","results":[[":tests/send.test.ts",{"duration":162.08154100000002,"failed":false}],[":tests/approve.test.ts",{"duration":257.27824999999996,"failed":false}],[":tests/unlock.test.ts",{"duration":213.61050000000003,"failed":false}],[":tests/setup.test.ts",{"duration":128.30779199999998,"failed":false}],[":tests/e2e.test.ts",{"duration":4341.373875,"failed":false}],[":tests/wallet.test.ts",{"duration":1768.446334,"failed":false}],[":tests/auth.test.ts",{"duration":174.709292,"failed":false}],[":tests/fund.test.ts",{"duration":820.6141660000001,"failed":false}],[":tests/integration/agent-flow.test.ts",{"duration":6350.61575,"failed":false}],[":tests/auth/permissions.test.ts",{"duration":6955.744291999999,"failed":false}],[":tests/auth/middleware.test.ts",{"duration":8667.608209,"failed":false}],[":tests/lib/sessions.test.ts",{"duration":100.3447920000001,"failed":false}],[":tests/lib/auth.test.ts",{"duration":4552.982083,"failed":false}],[":tests/endpoints/unlock.test.ts",{"duration":10486.351083,"failed":false}],[":tests/endpoints/wallet.test.ts",{"duration":4370.477584,"failed":false}],[":tests/endpoints/approve.test.ts",{"duration":497.64808300000004,"failed":false}],[":tests/endpoints/fund.test.ts",{"duration":1897.905,"failed":false}],[":tests/endpoints/send.test.ts",{"duration":2268.8852079999997,"failed":false}],[":tests/endpoints/auth.test.ts",{"duration":1334.914333,"failed":false}],[":tests/endpoints/setup.test.ts",{"duration":5293.225625,"failed":false}],[":tests/lib/uniswap.test.ts",{"duration":21.776292000000012,"failed":false}],[":tests/auth/apikeys.test.ts",{"duration":10995.417958,"failed":false}],[":tests/endpoints/wallet-data.test.ts",{"duration":2099.3379170000003,"failed":false}],[":tests/endpoints/swap.test.ts",{"duration":1653.693583,"failed":false}],[":tests/endpoints/token-clearing.test.ts",{"duration":1247.484042,"failed":false}],[":tests/endpoints/rate-limit.test.ts",{"duration":2154.356209,"failed":false}],[":tests/endpoints/solana-swap.test.ts",{"duration":998.2979999999999,"failed":false}],[":tests/endpoints/solana-wallet.test.ts",{"duration":1363.0256249999998,"failed":false}],[":tests/endpoints/solana-send.test.ts",{"duration":1039.8317080000002,"failed":false}],[":tests/lib/sessions-currency.test.ts",{"duration":56.1837079999998,"failed":false}],[":tests/endpoints/solana-fund.test.ts",{"duration":1418.0586249999997,"failed":false}],[":tests/lib/solana-wallet.test.ts",{"duration":161.13887499999998,"failed":false}],[":tests/lib/address.test.ts",{"duration":3.510084000000006,"failed":false}],[":tests/lib/strategy/sources.test.ts",{"duration":21.01504100000001,"failed":false}],[":tests/lib/strategy/loader.test.ts",{"duration":59.308375,"failed":false}],[":tests/lib/strategy/executor.test.ts",{"duration":7.492707999999993,"failed":false}],[":tests/lib/strategy/state.test.ts",{"duration":6.136792,"failed":false}],[":tests/lib/strategy/hooks.test.ts",{"duration":14.00120800000002,"failed":false}],[":tests/endpoints/widgets.test.ts",{"duration":2127.785625,"failed":false}],[":tests/lib/strategy/message.test.ts",{"duration":127.83229099999997,"failed":false}],[":tests/endpoints/actions.test.ts",{"duration":2396.4307919999997,"failed":false}],[":tests/endpoints/vault.test.ts",{"duration":7419.710874999999,"failed":false}],[":tests/integration/adapter-resolve.test.ts",{"duration":3486.7960000000003,"failed":false}],[":tests/lib/adapters.test.ts",{"duration":38.35904199999999,"failed":false}],[":tests/lib/strategy/tick.test.ts",{"duration":6.34379100000001,"failed":false}],[":tests/lib/relay.test.ts",{"duration":4.984791000000001,"failed":false}],[":tests/lib/ai.test.ts",{"duration":6.82841599999999,"failed":false}],[":tests/endpoints/launch.test.ts",{"duration":35837.233333,"failed":false}],[":tests/widget-installer.test.ts",{"duration":154.704459,"failed":false}],[":tests/mcp/tools.test.ts",{"duration":15.441082999999992,"failed":false}],[":tests/ai-integration/scenarios.test.ts",{"duration":7.4487499999999045,"failed":true}],[":tests/mcp/server.test.ts",{"duration":1333.480375,"failed":false}],[":tests/ai-integration/live.test.ts",{"duration":77572.38508299999,"failed":false}],[":tests/auth/apikeys-validate.test.ts",{"duration":10219.787667,"failed":false}],[":tests/lib/adapters-test.test.ts",{"duration":25429.400542,"failed":false}],[":tests/setup-integration/wizard-flow.test.ts",{"duration":124.21662500000002,"failed":false}],[":tests/setup-integration/adapter-test.test.ts",{"duration":166.0367080000001,"failed":false}],[":tests/setup-integration/edge-cases.test.ts",{"duration":156.02324999999996,"failed":false}],[":tests/setup-integration/apikey-validation.test.ts",{"duration":147.53583400000002,"failed":false}],[":tests/setup-integration/fresh-setup.test.ts",{"duration":107.81912499999999,"failed":false}],[":tests/lib/network.test.ts",{"duration":12.689417000000006,"failed":false}],[":tests/cli/process.test.ts",{"duration":33.650542,"failed":false}],[":tests/cli/init-steps.test.ts",{"duration":4.78708300000001,"failed":false}],[":tests/cli/init-flow.test.ts",{"duration":2517.034083,"failed":false}],[":tests/cli/http.test.ts",{"duration":1563.349083,"failed":false}],[":tests/lib/verified-summary.test.ts",{"duration":8.588290999999998,"failed":false}],[":tests/lib/defaults.test.ts",{"duration":89.18312500000002,"failed":false}],[":tests/endpoints/defaults.test.ts",{"duration":6137.610333,"failed":false}],[":tests/lib/adapters-chat.test.ts",{"duration":28.19304200000002,"failed":false}],[":tests/setup-integration/terminal-flow.test.ts",{"duration":248.770042,"failed":false}],[":tests/endpoints/transactions.test.ts",{"duration":1127.6649169999998,"failed":false}],[":tests/cron/scheduler.test.ts",{"duration":16.875292,"failed":false}],[":tests/endpoints/portfolio.test.ts",{"duration":381.701917,"failed":false}],[":tests/cron/native-price.test.ts",{"duration":58.4565419999999,"failed":false}],[":tests/resolve.test.ts",{"duration":13.15741700000001,"failed":false}],[":tests/lib/prices.test.ts",{"duration":103.56858299999999,"failed":false}],[":tests/swap-quote.test.ts",{"duration":945.5037500000001,"failed":false}],[":tests/send-token.test.ts",{"duration":996.399292,"failed":false}],[":tests/endpoints/price.test.ts",{"duration":61.327583000000004,"failed":false}],[":tests/lib/price.test.ts",{"duration":4.805790999999999,"failed":false}],[":tests/endpoints/token-search.test.ts",{"duration":35.89754199999993,"failed":false}],[":tests/lib/token-search.test.ts",{"duration":65.472708,"failed":false}],[":tests/lib/token-safety.test.ts",{"duration":5.724790999999996,"failed":false}],[":tests/endpoints/token-safety.test.ts",{"duration":41.85649999999987,"failed":false}],[":tests/lib/batch.test.ts",{"duration":11.763874999999999,"failed":false}],[":tests/endpoints/batch.test.ts",{"duration":48.719875,"failed":false}],[":tests/endpoints/token-balance.test.ts",{"duration":29.900082999999995,"failed":false}],[":tests/lib/events-decoder.test.ts",{"duration":4.558958999999987,"failed":false}],[":tests/lib/events-enricher.test.ts",{"duration":4.474500000000035,"failed":false}],[":tests/endpoints/address-transactions.test.ts",{"duration":962.0601669999999,"failed":false}],[":tests/endpoints/bookmarks.test.ts",{"duration":1349.6050840000003,"failed":false}],[":tests/endpoints/addressbook.test.ts",{"duration":995.706459,"failed":false}],[":tests/lib/strategy/session-logger.test.ts",{"duration":1471.763333,"failed":false}],[":tests/cron/incoming-scan.test.ts",{"duration":385.8459999999999,"failed":false}],[":tests/lib/auto-unlock.test.ts",{"duration":1104.2137500000001,"failed":false}],[":tests/lib/widget-tokens-tier.test.ts",{"duration":226.36699999999996,"failed":false}],[":tests/cron/strategy-runner.test.ts",{"duration":6.080332999999996,"failed":false}],[":tests/endpoints/strategy-routes.test.ts",{"duration":11390.736792,"failed":false}],[":tests/endpoints/apps.test.ts",{"duration":21435.455708999998,"failed":false}],[":tests/lib/events-fetcher.test.ts",{"duration":6.5429169999999885,"failed":false}],[":tests/app-installer.test.ts",{"duration":114.05204099999997,"failed":false}],[":tests/lib/app-tokens-tier.test.ts",{"duration":276.60683300000005,"failed":false}],[":tests/setup-integration/onboarding-e2e.test.ts",{"duration":445.7834579999999,"failed":true}],[":tests/cron/orphan-cleanup.test.ts",{"duration":6.764916999999997,"failed":false}],[":tests/lib/strategy/repository.test.ts",{"duration":28.425665999999865,"failed":false}],[":tests/setup-integration/autonomous-agent.test.ts",{"duration":7.406667000000027,"failed":true}],[":tests/lib/websocket-auth.test.ts",{"duration":235.461,"failed":false}],[":tests/lib/credentials.test.ts",{"duration":7320.739874999999,"failed":false}],[":tests/lib/credential-access.test.ts",{"duration":3.4029999999999916,"failed":false}],[":tests/lib/credential-scope.test.ts",{"duration":3.2806659999999965,"failed":false}],[":tests/endpoints/credential-ops.test.ts",{"duration":3004.8909169999997,"failed":false}],[":tests/endpoints/credentials.test.ts",{"duration":27923.241459,"failed":false}],[":tests/lib/credential-transport.test.ts",{"duration":138.75,"failed":false}],[":tests/lib/credential-vault.test.ts",{"duration":4433.612583,"failed":false}],[":tests/lib/resolve-action.test.ts",{"duration":4.514791000000002,"failed":false}],[":tests/credential-import.test.ts",{"duration":19.897791999999995,"failed":false}],[":tests/endpoints/passkey.test.ts",{"duration":14553.136708,"failed":false}],[":tests/lib/oauth2-refresh.test.ts",{"duration":3.752541000000008,"failed":false}],[":tests/lib/totp.test.ts",{"duration":7.506458999999992,"failed":false}],[":tests/lib/passkey-credential.test.ts",{"duration":9.192250000000001,"failed":false}],[":tests/cli/env.test.ts",{"duration":8.821500000000015,"failed":false}],[":tests/dotenv-parser.test.ts",{"duration":3.3828749999999985,"failed":false}],[":tests/cli/socket.test.ts",{"duration":164.548791,"failed":false}],[":tests/cli/vault.test.ts",{"duration":5.563457999999997,"failed":false}],[":tests/cli/credential-resolve.test.ts",{"duration":2.6654999999999944,"failed":false}],[":tests/cli/env-check-server-vault.test.ts",{"duration":239.821708,"failed":false}],[":tests/e2e-agent/validation.test.ts",{"duration":8.998582999999996,"failed":false}],[":tests/e2e-agent/artifacts.test.ts",{"duration":3.1474170000000044,"failed":false}],[":tests/e2e-agent/ci-lanes.test.ts",{"duration":1.272790999999998,"failed":false}],[":tests/lib/api-registry/validation.test.ts",{"duration":5.377708000000013,"failed":false}],[":tests/lib/aura-parser.test.ts",{"duration":10.007750000000001,"failed":false}],[":tests/lib/agent-auth/contracts.test.ts",{"duration":11.581041999999997,"failed":false}],[":tests/cli/doctor.test.ts",{"duration":9.576459,"failed":false}],[":tests/endpoints/import.test.ts",{"duration":8348.137416,"failed":false}],[":tests/endpoints/passkey-credentials.test.ts",{"duration":2573.4603340000003,"failed":false}],[":tests/lib/credential-health.test.ts",{"duration":3.1082080000000047,"failed":false}],[":tests/lib/agent-profiles.test.ts",{"duration":3.3868339999999932,"failed":false}],[":tests/mcp/profile-policy.test.ts",{"duration":3.01100000000001,"failed":false}],[":tests/endpoints/profile-parity.test.ts",{"duration":9.213209000000006,"failed":true}],[":tests/lib/profile-parity.test.ts",{"duration":1.7047079999999966,"failed":false}],[":tests/endpoints/credential-access-audit.test.ts",{"duration":1768.71025,"failed":false}],[":tests/lib/project-scope.test.ts",{"duration":8.761667000000003,"failed":false}],[":tests/docs/job-docs-validation.test.ts",{"duration":33.986999999999995,"failed":false}],[":tests/endpoints/credential-shares.test.ts",{"duration":6208.950334,"failed":false}],[":tests/lib/task-lifecycle.test.ts",{"duration":7.928124999999994,"failed":false}],[":tests/endpoints/tasks-lifecycle.test.ts",{"duration":191.46470899999997,"failed":false}],[":tests/cli/local-agent-trust.test.ts",{"duration":2.7987499999999983,"failed":false}],[":tests/cli/token.test.ts",{"duration":1.4059579999999983,"failed":false}],[":tests/endpoints/heartbeat.test.ts",{"duration":4575.689417,"failed":false}],[":tests/cli/bin-entrypoint.test.ts",{"duration":4248.5371669999995,"failed":false}],[":tests/sandbox/cli.test.ts",{"duration":332.983625,"failed":false}],[":tests/cli/vault-auth.test.ts",{"duration":195.026916,"failed":false}],[":tests/lib/encrypt.test.ts",{"duration":763.462208,"failed":false}],[":tests/cli/vault-share-gist.test.ts",{"duration":14.503625,"failed":false}],[":tests/lib/secret-gist-share.test.ts",{"duration":1.757791999999995,"failed":false}],[":tests/cli/vault-list-filters.test.ts",{"duration":14.040582999999984,"failed":false}],[":tests/cli/start.test.ts",{"duration":1.8407080000000065,"failed":false}],[":tests/cli/wallet.test.ts",{"duration":1.465874999999997,"failed":false}],[":tests/cli/prompt-select.test.ts",{"duration":4.252083999999996,"failed":false}],[":tests/cli/quickhack.test.ts",{"duration":1.982292000000001,"failed":false}],[":tests/lib/human-action-summary.test.ts",{"duration":2.1798750000000098,"failed":false}],[":tests/pipeline-db/paths.test.ts",{"duration":5.902790999999979,"failed":false}],[":tests/pipeline-db/bootstrap.test.ts",{"duration":39.007125,"failed":false}],[":tests/pipeline-db/snapshot.test.ts",{"duration":29.974833999999987,"failed":false}],[":tests/pipeline-db/dual-write.test.ts",{"duration":60.147583,"failed":false}],[":tests/pipeline-db/importer.test.ts",{"duration":33.614417,"failed":false}],[":tests/pipeline-lifecycle/service.test.ts",{"duration":32.389666000000005,"failed":false}],[":tests/pipeline-lifecycle/taskctl.test.ts",{"duration":2885.294625,"failed":false}],[":tests/pipeline-lifecycle/agent-cron-integration.test.ts",{"duration":28.44970900000004,"failed":false}],[":tests/pipeline-db/cutover-plan.test.ts",{"duration":2.5047919999999806,"failed":false}],[":tests/lib/approval-link.test.ts",{"duration":1.0141670000000005,"failed":false}],[":tests/lib/dont-ask-again-policy.test.ts",{"duration":1.2326669999999922,"failed":false}],[":tests/lib/update-check.test.ts",{"duration":1.4486670000000004,"failed":false}],[":tests/lib/auto-execute.test.ts",{"duration":108.225667,"failed":false}],[":tests/lib/auth-action.test.ts",{"duration":1998.647583,"failed":false}],[":tests/cli/auth-action-flag.test.ts",{"duration":3.1158340000000067,"failed":false}],[":tests/pipeline-lifecycle/tags.test.ts",{"duration":321.27825,"failed":false}],[":tests/endpoints/nuke.test.ts",{"duration":69.0028749999999,"failed":false}],[":tests/endpoints/apikeys.test.ts",{"duration":11085.063833,"failed":false}],[":tests/endpoints/security.test.ts",{"duration":9164.535417000001,"failed":false}],[":tests/endpoints/dashboard.test.ts",{"duration":103.2655420000001,"failed":false}],[":tests/endpoints/logs.test.ts",{"duration":183.44812500000035,"failed":false}],[":tests/endpoints/views.test.ts",{"duration":17.28716600000007,"failed":false}],[":tests/endpoints/flags.test.ts",{"duration":12.482625000000098,"failed":false}],[":tests/endpoints/lock.test.ts",{"duration":11063.760583,"failed":false}],[":tests/endpoints/backup.test.ts",{"duration":6926.148333000001,"failed":false}],[":tests/auth/approval-permissions-regression.test.ts",{"duration":2333.866833,"failed":false}],[":tests/sandbox/cli-cd-suite.test.ts",{"duration":578.572375,"failed":false}],[":tests/mcp/contract.test.ts",{"duration":78.60249999999999,"failed":false}],[":tests/lib/credential-paths.test.ts",{"duration":3899.7734170000003,"failed":false}],[":tests/runtime-vault-smoke.test.ts",{"duration":1521.938291,"failed":false}],[":tests/cli/taskctl-lock-smoke.test.ts",{"duration":0,"failed":false}],[":tests/cli/start-run.test.ts",{"duration":6.923584000000005,"failed":false}],[":tests/cli/restart-run.test.ts",{"duration":4.698082999999997,"failed":false}],[":tests/endpoints/approve-action.test.ts",{"duration":1056.1783329999998,"failed":false}],[":tests/cli/escalation.test.ts",{"duration":3.389707999999999,"failed":false}],[":tests/cli/actions-auth.test.ts",{"duration":39.753000000000014,"failed":false}],[":tests/lib/temp-policy.test.ts",{"duration":2.585374999999999,"failed":false}],[":tests/endpoints/escalation-migration-gate.test.ts",{"duration":11955.108208,"failed":false}],[":tests/lib/escalation-responder.test.ts",{"duration":24.61208400000001,"failed":false}],[":tests/cli/service.test.ts",{"duration":38.05449999999999,"failed":false}],[":tests/cli/init-runtime.test.ts",{"duration":4.873333000000002,"failed":false}],[":tests/cli/agent.test.ts",{"duration":7.902833000000001,"failed":false}],[":tests/runtime-agent-smoke.test.ts",{"duration":1154.7805830000002,"failed":false}],[":tests/endpoints/agent.test.ts",{"duration":6459.912458000001,"failed":false}],[":tests/lib/credential-agent.test.ts",{"duration":3084.496541,"failed":false}],[":tests/cli/agent-auth.test.ts",{"duration":528.433583,"failed":false}],[":tests/cli/agent-share-gist.test.ts",{"duration":16.512332999999984,"failed":false}],[":tests/cli/agent-list-filters.test.ts",{"duration":18.725041000000004,"failed":false}],[":tests/cli/env-check-server-agent.test.ts",{"duration":292.08354199999997,"failed":false}],[":tests/lib/import-from-openclaw-paths.test.ts",{"duration":0,"failed":true}],[":tests/endpoints/agent-profiles.test.ts",{"duration":3425.8750000000005,"failed":false}]]}
|
|
@@ -187,7 +187,7 @@ router.post('/', requireWalletAuth, requirePermissionForRoute(ESCALATION_ROUTE_I
|
|
|
187
187
|
}
|
|
188
188
|
const normalizedPubkey = normalizeAgentPubkey(pubkey);
|
|
189
189
|
|
|
190
|
-
const defaultActionTtl = await getDefault<number>('ttl.action',
|
|
190
|
+
const defaultActionTtl = await getDefault<number>('ttl.action', 3600);
|
|
191
191
|
const actionTtl = typeof ttl === 'number' && ttl > 0 ? ttl : defaultActionTtl;
|
|
192
192
|
|
|
193
193
|
// Generate secret for polling (same pattern as POST /auth)
|
|
@@ -405,7 +405,7 @@ router.post('/token', requireWalletAuth, requireAdminForRoute(ESCALATION_ROUTE_I
|
|
|
405
405
|
|
|
406
406
|
const defaultSendLimit = await getDefault<number>('limits.send', 0.1);
|
|
407
407
|
const defaultSwapLimit = await getDefault<number>('limits.swap', 0.1);
|
|
408
|
-
const defaultTtl = await getDefault<number>('ttl.agent',
|
|
408
|
+
const defaultTtl = await getDefault<number>('ttl.agent', 604800);
|
|
409
409
|
|
|
410
410
|
const hasProfile = typeof profile === 'string' && profile.trim().length > 0;
|
|
411
411
|
const hasPermissions = permissions !== undefined;
|