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.
Files changed (334) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +244 -227
  3. package/.next/app-path-routes-manifest.json +11 -10
  4. package/.next/build-manifest.json +14 -14
  5. package/.next/prerender-manifest.json +49 -25
  6. package/.next/react-loadable-manifest.json +41 -41
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +12 -12
  11. package/.next/server/app/api/[...doc]/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/agent-requests/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/apps/install/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/apps/manifests/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/apps/static/[...path]/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/docs/plain/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/events/route.js +1 -19
  18. package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/import-from-openclaw/[channel]/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/import-from-openclaw/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/import-from-openclaw/validate/[channel]/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/update/route.js +63 -1
  25. package/.next/server/app/api/update/route.js.nft.json +1 -1
  26. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/workspace/[id]/apps/[wid]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/workspace/[id]/apps/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/workspace/[id]/export/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/workspace/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/workspace/config/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/workspace/import/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/workspace/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/app-legacy-do-not-use/page.js +1 -1
  36. package/.next/server/app/app-legacy-do-not-use/page.js.nft.json +1 -1
  37. package/.next/server/app/app-legacy-do-not-use/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/app-legacy-do-not-use.html +1 -1
  39. package/.next/server/app/app-legacy-do-not-use.rsc +14 -14
  40. package/.next/server/app/approve/[actionId]/page.js +1 -1
  41. package/.next/server/app/approve/[actionId]/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/docs/[...doc]/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/health/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app/health.html +1 -1
  46. package/.next/server/app/health.rsc +13 -13
  47. package/.next/server/app/hello/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/hello.html +1 -1
  49. package/.next/server/app/hello.rsc +14 -14
  50. package/.next/server/app/index.html +1 -1
  51. package/.next/server/app/index.rsc +18 -21
  52. package/.next/server/app/page.js +3 -3
  53. package/.next/server/app/page.js.nft.json +1 -1
  54. package/.next/server/app/page_client-reference-manifest.js +1 -1
  55. package/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/privacy.html +1 -1
  57. package/.next/server/app/privacy.rsc +13 -13
  58. package/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  60. package/.next/server/app/terms.html +1 -1
  61. package/.next/server/app/terms.rsc +13 -13
  62. package/.next/server/app/yo/page.js +2 -0
  63. package/.next/server/app/yo/page.js.nft.json +1 -0
  64. package/.next/server/app/yo/page_client-reference-manifest.js +1 -0
  65. package/.next/server/app/yo.html +1 -0
  66. package/.next/server/app/yo.meta +7 -0
  67. package/.next/server/app/yo.rsc +23 -0
  68. package/.next/server/app-paths-manifest.json +11 -10
  69. package/.next/server/chunks/2145.js +1 -1
  70. package/.next/server/chunks/2460.js +1 -1
  71. package/.next/server/chunks/5246.js +1 -1
  72. package/.next/server/chunks/5678.js +1 -1
  73. package/.next/server/chunks/5784.js +1 -1
  74. package/.next/server/chunks/6086.js +2 -20
  75. package/.next/server/chunks/{5553.js → 6415.js} +2 -2
  76. package/.next/server/chunks/7935.js +2 -2
  77. package/.next/server/functions-config-manifest.json +1 -1
  78. package/.next/server/instrumentation.js +1 -1
  79. package/.next/server/middleware-build-manifest.js +1 -1
  80. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  81. package/.next/server/pages/404.html +1 -1
  82. package/.next/server/pages/500.html +1 -1
  83. package/.next/server/server-reference-manifest.json +1 -1
  84. package/.next/server/webpack-runtime.js +1 -1
  85. package/.next/static/WshFGr6RxGYP6AbWuT9OG/_buildManifest.js +1 -0
  86. package/.next/static/chunks/1168.aaac1edbb597fe5a.js +1 -0
  87. package/.next/static/chunks/1255-7999eac54f80a49f.js +1 -0
  88. package/.next/static/chunks/142-fa9752f53a551f63.js +1 -0
  89. package/.next/static/chunks/2505.d54ccadc42f4e3d1.js +1 -0
  90. package/.next/static/chunks/2619-04bc32f026a0d946.js +1 -0
  91. package/.next/static/chunks/2927.7e00cc878d9a3f52.js +1 -0
  92. package/.next/static/chunks/3573-1b41d7b8a000d015.js +1 -0
  93. package/.next/static/chunks/3609.ded5a5306e18af9c.js +1 -0
  94. package/.next/static/chunks/3667-1db7bd03948e60df.js +1 -0
  95. package/.next/static/chunks/3826.a73d4a88d8c09030.js +1 -0
  96. package/.next/static/chunks/{3a91511d-648a2ba3dad7df0c.js → 3a91511d-ba215c0b5dc21ba9.js} +1 -1
  97. package/.next/static/chunks/4256.48407d9abad5ea33.js +1 -0
  98. package/.next/static/chunks/4685-7f53bbfc4a9845eb.js +1 -0
  99. package/.next/static/chunks/4901-ba6a32818662e70a.js +1 -0
  100. package/.next/static/chunks/4919-7e7cdd5efc9f2110.js +1 -0
  101. package/.next/static/chunks/4bd1b696-100b9d70ed4e49c1.js +1 -0
  102. package/.next/static/chunks/5336-233ec7ab3807267c.js +1 -0
  103. package/.next/static/chunks/5442-b5bb869e832e8967.js +1 -0
  104. package/.next/static/chunks/6233-97a810aa272af547.js +1 -0
  105. package/.next/static/chunks/626.a5109d16f9eca1f6.js +1 -0
  106. package/.next/static/chunks/6872-faea0f088ab2d450.js +1 -0
  107. package/.next/static/chunks/7338-3ce17a93614f1d77.js +59 -0
  108. package/.next/static/chunks/7394-4bdb1feefad1a74a.js +1 -0
  109. package/.next/static/chunks/7616-1129bcb3eee8d315.js +1 -0
  110. package/.next/static/chunks/786-26deffb41572cbb3.js +1 -0
  111. package/.next/static/chunks/8273-8e92d34180669ca9.js +1 -0
  112. package/.next/static/chunks/8357.5dee1e0c4e5bb091.js +1 -0
  113. package/.next/static/chunks/9062-2bc2d089f9c9c6ba.js +1 -0
  114. package/.next/static/chunks/9380.f198afbf0c6b5369.js +1 -0
  115. package/.next/static/chunks/app/_not-found/page-5a8c6a29f762fa58.js +1 -0
  116. package/.next/static/chunks/app/api/[...doc]/page-f0852f35f0fd1d44.js +1 -0
  117. package/.next/static/chunks/app/api/agent-requests/route-cf84f975aad4c719.js +1 -0
  118. package/.next/static/chunks/app/api/apps/install/route-cf84f975aad4c719.js +1 -0
  119. package/.next/static/chunks/app/api/apps/manifests/route-cf84f975aad4c719.js +1 -0
  120. package/.next/static/chunks/app/api/apps/static/[...path]/route-cf84f975aad4c719.js +1 -0
  121. package/.next/static/chunks/app/api/docs/plain/route-cf84f975aad4c719.js +1 -0
  122. package/.next/static/chunks/app/api/events/route-cf84f975aad4c719.js +1 -0
  123. package/.next/static/chunks/app/api/import-from-openclaw/[channel]/route-cf84f975aad4c719.js +1 -0
  124. package/.next/static/chunks/app/api/import-from-openclaw/route-cf84f975aad4c719.js +1 -0
  125. package/.next/static/chunks/app/api/import-from-openclaw/validate/[channel]/route-cf84f975aad4c719.js +1 -0
  126. package/.next/static/chunks/app/api/page-cc59bebcc0d2c01d.js +1 -0
  127. package/.next/static/chunks/app/api/restart/route-cf84f975aad4c719.js +1 -0
  128. package/.next/static/chunks/app/api/update/route-cf84f975aad4c719.js +1 -0
  129. package/.next/static/chunks/app/api/version/route-cf84f975aad4c719.js +1 -0
  130. package/.next/static/chunks/app/api/workspace/[id]/apps/[wid]/route-cf84f975aad4c719.js +1 -0
  131. package/.next/static/chunks/app/api/workspace/[id]/apps/route-cf84f975aad4c719.js +1 -0
  132. package/.next/static/chunks/app/api/workspace/[id]/export/route-cf84f975aad4c719.js +1 -0
  133. package/.next/static/chunks/app/api/workspace/[id]/route-cf84f975aad4c719.js +1 -0
  134. package/.next/static/chunks/app/api/workspace/config/route-cf84f975aad4c719.js +1 -0
  135. package/.next/static/chunks/app/api/workspace/import/route-cf84f975aad4c719.js +1 -0
  136. package/.next/static/chunks/app/api/workspace/route-cf84f975aad4c719.js +1 -0
  137. package/.next/static/chunks/app/app-legacy-do-not-use/page-e5dc864e92d90ca7.js +1 -0
  138. package/.next/static/chunks/app/approve/[actionId]/page-2acca1f490424f21.js +1 -0
  139. package/.next/static/chunks/app/docs/[...doc]/page-8e2a2d036caab242.js +1 -0
  140. package/.next/static/chunks/app/docs/page-acf872a03ff79893.js +1 -0
  141. package/.next/static/chunks/app/error-66f983b7769dabfa.js +1 -0
  142. package/.next/static/chunks/app/health/page-c9185854ed9c86d0.js +1 -0
  143. package/.next/static/chunks/app/hello/page-74c9f4deaa4b03dd.js +1 -0
  144. package/.next/static/chunks/app/layout-af8d9969c7aeb758.js +1 -0
  145. package/.next/static/chunks/app/page-16dfcd1c7cc88bcc.js +1 -0
  146. package/.next/static/chunks/app/privacy/page-8e2d17079355c2cc.js +1 -0
  147. package/.next/static/chunks/app/share/[token]/page-5dd9b0418eee411f.js +1 -0
  148. package/.next/static/chunks/app/terms/page-8e2d17079355c2cc.js +1 -0
  149. package/.next/static/chunks/app/yo/layout-cf84f975aad4c719.js +1 -0
  150. package/.next/static/chunks/app/yo/page-719dc5f213fdfb30.js +1 -0
  151. package/.next/static/chunks/framework-a32a2a465584c0bc.js +1 -0
  152. package/.next/static/chunks/main-0f0f9142f74e7215.js +1 -0
  153. package/.next/static/chunks/main-app-24f0c92ba10af457.js +1 -0
  154. package/.next/static/chunks/pages/_app-4b3fb5e477a0267f.js +1 -0
  155. package/.next/static/chunks/pages/_error-c970d8b55ace1b48.js +1 -0
  156. package/.next/static/chunks/{webpack-768de8b7d6a7a27a.js → webpack-79ad58260e9b10b4.js} +1 -1
  157. package/.next/static/css/83cd401584ab787f.css +3 -0
  158. package/.next/trace +28 -28
  159. package/.next/types/app/yo/layout.ts +84 -0
  160. package/.next/types/app/yo/page.ts +84 -0
  161. package/.next/types/routes.d.ts +4 -2
  162. package/.next/types/validator.ts +18 -0
  163. package/bin/auramaxx.js +9 -24
  164. package/docs/ARCHITECTURE.md +1 -1
  165. package/docs/AUTH.md +6 -3
  166. package/docs/CLI.md +2 -0
  167. package/docs/MCP.md +2 -0
  168. package/docs/credentials.md +2 -0
  169. package/package.json +1 -1
  170. package/prisma/migrations/20260227214000_update_agent_action_ttl_defaults/migration.sql +19 -0
  171. package/public/0a167e5e-4f52-4715-ae23-bf63d259a6b1.png +0 -0
  172. package/public/141ec92c-6780-4b23-838f-9a7bf1e91bb8.png +0 -0
  173. package/public/3afc4935-92cb-42af-9624-0b1341c12a5e.png +0 -0
  174. package/public/43947df5-dbcf-4e49-ab8b-41b9162c0410.png +0 -0
  175. package/public/5aeae9ce-0d38-49ea-8fd1-167892a04a85.png +0 -0
  176. package/public/660e4ea3-a3a6-4be4-a8ca-2cb74c51dfb5.png +0 -0
  177. package/public/733f02d7-6b58-4ba6-a5c8-d062cd205e1d.png +0 -0
  178. package/public/a32d65cb-95b0-4977-be6b-cf69f515afbe.png +0 -0
  179. package/public/agent1.png +0 -0
  180. package/public/agent10.png +0 -0
  181. package/public/agent2.png +0 -0
  182. package/public/agent3.png +0 -0
  183. package/public/agent4.png +0 -0
  184. package/public/agent5.png +0 -0
  185. package/public/agent6.png +0 -0
  186. package/public/agent7.png +0 -0
  187. package/public/agent8.png +0 -0
  188. package/public/agent9.png +0 -0
  189. package/public/c4938305-b811-4ccc-91db-94d309734827.png +0 -0
  190. package/public/f2ca6825-a4f3-4107-815c-51ee740dfc09.png +0 -0
  191. package/public/llm.txt +2 -0
  192. package/public/llms.txt +39 -0
  193. package/public/ss-dark1.png +0 -0
  194. package/public/ss-dark1.webp +0 -0
  195. package/public/ss-dark2.png +0 -0
  196. package/public/ss-dark2.webp +0 -0
  197. package/public/ss-dark3.png +0 -0
  198. package/public/ss-dark3.webp +0 -0
  199. package/public/ss-light1.png +0 -0
  200. package/public/ss-light1.webp +0 -0
  201. package/public/ss-light2.png +0 -0
  202. package/public/ss-light2.webp +0 -0
  203. package/public/ss-light3.png +0 -0
  204. package/public/ss-light3.webp +0 -0
  205. package/shared/agent-profile-schema.ts +81 -0
  206. package/shared/credential-field-schema.ts +12 -0
  207. package/skills/auramaxx/SKILL.md +71 -691
  208. package/src/app/UnlockPageClient.tsx +1939 -0
  209. package/src/app/api/page.tsx +8 -9
  210. package/src/app/api/update/route.ts +105 -36
  211. package/src/app/approve/[actionId]/page.tsx +4 -1
  212. package/src/app/docs/DocsPageContent.tsx +3 -3
  213. package/src/app/globals.css +94 -0
  214. package/src/app/layout.tsx +1 -0
  215. package/src/app/page.tsx +25 -1935
  216. package/src/app/yo/layout.tsx +29 -0
  217. package/src/app/yo/page.tsx +528 -0
  218. package/src/components/HumanActionBar.tsx +34 -8
  219. package/src/components/agent/AgentSidebar.tsx +3 -1
  220. package/src/components/agent/CredentialAgent.tsx +5 -1
  221. package/src/components/agent/CredentialDetail.tsx +32 -1
  222. package/src/components/agent/CredentialForm.tsx +94 -7
  223. package/src/components/agent/CredentialRow.tsx +8 -1
  224. package/src/components/agent/credentialFormName.ts +22 -1
  225. package/src/components/agent/types.ts +2 -2
  226. package/src/components/design-system/Modal.tsx +14 -1
  227. package/src/hooks/useUpdateChecker.ts +17 -1
  228. package/src/lib/pino.ts +77 -8
  229. package/src/server/cli/commands/actions.ts +1 -1
  230. package/src/server/cli/commands/agent.ts +110 -65
  231. package/src/server/cli/commands/approve.ts +1 -1
  232. package/src/server/cli/commands/auth.ts +81 -20
  233. package/src/server/cli/commands/token.ts +2 -2
  234. package/src/server/cli/lib/escalation.ts +109 -24
  235. package/src/server/cli/lib/process.ts +2 -1
  236. package/src/server/cli/socket.ts +1 -1
  237. package/src/server/index.ts +2 -0
  238. package/src/server/lib/agent-profile-records.ts +72 -0
  239. package/src/server/lib/credential-transport.ts +27 -11
  240. package/src/server/lib/defaults.ts +3 -3
  241. package/src/server/lib/escalation-responder.ts +1 -1
  242. package/src/server/lib/resolve-action.ts +2 -2
  243. package/src/server/mcp/server.ts +6 -1
  244. package/src/server/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  245. package/src/server/routes/actions.ts +2 -2
  246. package/src/server/routes/agent-profiles.ts +82 -0
  247. package/src/server/routes/auth.ts +39 -4
  248. package/src/server/routes/credentials.ts +18 -0
  249. package/src/server/tests/cli/agent-auth.test.ts +20 -39
  250. package/src/server/tests/cli/agent.test.ts +18 -0
  251. package/src/server/tests/cli/auth-action-flag.test.ts +3 -2
  252. package/src/server/tests/cli/bin-entrypoint.test.ts +35 -11
  253. package/src/server/tests/cli/escalation.test.ts +7 -3
  254. package/src/server/tests/cli/process.test.ts +3 -3
  255. package/src/server/tests/cli/socket.test.ts +2 -2
  256. package/src/server/tests/endpoints/actions.test.ts +2 -2
  257. package/src/server/tests/endpoints/agent-profiles.test.ts +117 -0
  258. package/src/server/tests/endpoints/auth.test.ts +34 -0
  259. package/src/server/tests/lib/credential-transport.test.ts +68 -2
  260. package/src/server/tests/lib/defaults.test.ts +2 -2
  261. package/src/server/tests/lib/escalation-responder.test.ts +2 -2
  262. package/src/server/tests/setup.ts +7 -0
  263. package/src/server/tsconfig.tsbuildinfo +1 -1
  264. package/src/server/types.ts +1 -1
  265. package/.next/static/chunks/1168.63dbb444a33b1867.js +0 -1
  266. package/.next/static/chunks/1255-e8718b02724690dd.js +0 -1
  267. package/.next/static/chunks/142-aeaf7ffa9c53516d.js +0 -1
  268. package/.next/static/chunks/2505.22aaa333fd65908f.js +0 -1
  269. package/.next/static/chunks/2619-3c9e02e22d10480a.js +0 -1
  270. package/.next/static/chunks/2927.e7e9e2a1b8d2dc61.js +0 -1
  271. package/.next/static/chunks/3573-27e17f4ff2dd86ed.js +0 -1
  272. package/.next/static/chunks/3609.6f8e0ecd6de9566c.js +0 -1
  273. package/.next/static/chunks/3667-d6770121629db38b.js +0 -1
  274. package/.next/static/chunks/3826.7dfe96467cd74e45.js +0 -1
  275. package/.next/static/chunks/4256.50cb375c979ffd5a.js +0 -1
  276. package/.next/static/chunks/4685-3f8d92f574366fec.js +0 -1
  277. package/.next/static/chunks/4901-54c1ac380b7b43bb.js +0 -1
  278. package/.next/static/chunks/4919-fe6f1553abfc9420.js +0 -1
  279. package/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +0 -1
  280. package/.next/static/chunks/5336-bd251f91235f7c11.js +0 -1
  281. package/.next/static/chunks/5442-be197c885bf12079.js +0 -1
  282. package/.next/static/chunks/5553-c8b86fe3513fce04.js +0 -59
  283. package/.next/static/chunks/6233-44e6fe57a552a816.js +0 -1
  284. package/.next/static/chunks/626.2583673a0386a81b.js +0 -1
  285. package/.next/static/chunks/6872-6442f2f5cce36ce5.js +0 -1
  286. package/.next/static/chunks/7411-3ca797c21b722ccd.js +0 -1
  287. package/.next/static/chunks/7616-b8bd37ce1f735d6f.js +0 -1
  288. package/.next/static/chunks/786-9ed39f96091b2be4.js +0 -1
  289. package/.next/static/chunks/8273-922091226ba84a94.js +0 -1
  290. package/.next/static/chunks/8357.6159472717ff7d11.js +0 -1
  291. package/.next/static/chunks/9062-3eb1607c96486f88.js +0 -1
  292. package/.next/static/chunks/9380.93f361baab2eefdf.js +0 -1
  293. package/.next/static/chunks/app/_not-found/page-c3b87025baf0a9c2.js +0 -1
  294. package/.next/static/chunks/app/api/[...doc]/page-790c4b33ba1fde4a.js +0 -1
  295. package/.next/static/chunks/app/api/agent-requests/route-e83b12cbab2e8707.js +0 -1
  296. package/.next/static/chunks/app/api/apps/install/route-e83b12cbab2e8707.js +0 -1
  297. package/.next/static/chunks/app/api/apps/manifests/route-e83b12cbab2e8707.js +0 -1
  298. package/.next/static/chunks/app/api/apps/static/[...path]/route-e83b12cbab2e8707.js +0 -1
  299. package/.next/static/chunks/app/api/docs/plain/route-e83b12cbab2e8707.js +0 -1
  300. package/.next/static/chunks/app/api/events/route-e83b12cbab2e8707.js +0 -1
  301. package/.next/static/chunks/app/api/import-from-openclaw/[channel]/route-e83b12cbab2e8707.js +0 -1
  302. package/.next/static/chunks/app/api/import-from-openclaw/route-e83b12cbab2e8707.js +0 -1
  303. package/.next/static/chunks/app/api/import-from-openclaw/validate/[channel]/route-e83b12cbab2e8707.js +0 -1
  304. package/.next/static/chunks/app/api/page-b53f9aa17a4c5201.js +0 -1
  305. package/.next/static/chunks/app/api/restart/route-e83b12cbab2e8707.js +0 -1
  306. package/.next/static/chunks/app/api/update/route-e83b12cbab2e8707.js +0 -1
  307. package/.next/static/chunks/app/api/version/route-e83b12cbab2e8707.js +0 -1
  308. package/.next/static/chunks/app/api/workspace/[id]/apps/[wid]/route-e83b12cbab2e8707.js +0 -1
  309. package/.next/static/chunks/app/api/workspace/[id]/apps/route-e83b12cbab2e8707.js +0 -1
  310. package/.next/static/chunks/app/api/workspace/[id]/export/route-e83b12cbab2e8707.js +0 -1
  311. package/.next/static/chunks/app/api/workspace/[id]/route-e83b12cbab2e8707.js +0 -1
  312. package/.next/static/chunks/app/api/workspace/config/route-e83b12cbab2e8707.js +0 -1
  313. package/.next/static/chunks/app/api/workspace/import/route-e83b12cbab2e8707.js +0 -1
  314. package/.next/static/chunks/app/api/workspace/route-e83b12cbab2e8707.js +0 -1
  315. package/.next/static/chunks/app/app-legacy-do-not-use/page-0052191daef60036.js +0 -1
  316. package/.next/static/chunks/app/approve/[actionId]/page-45cd3b8fa062d5e5.js +0 -1
  317. package/.next/static/chunks/app/docs/[...doc]/page-632ac406200b66fe.js +0 -1
  318. package/.next/static/chunks/app/docs/page-b7556394709b43df.js +0 -1
  319. package/.next/static/chunks/app/error-3d6057da512253d8.js +0 -1
  320. package/.next/static/chunks/app/health/page-80c985cd72328b74.js +0 -1
  321. package/.next/static/chunks/app/hello/page-fd71babcd192729b.js +0 -1
  322. package/.next/static/chunks/app/layout-285c6ef3f16bae63.js +0 -1
  323. package/.next/static/chunks/app/page-85017185df14c37b.js +0 -1
  324. package/.next/static/chunks/app/privacy/page-faf36cd0dde6dfa3.js +0 -1
  325. package/.next/static/chunks/app/share/[token]/page-22d51d6c5a47bb75.js +0 -1
  326. package/.next/static/chunks/app/terms/page-faf36cd0dde6dfa3.js +0 -1
  327. package/.next/static/chunks/framework-e60c938074ff7136.js +0 -1
  328. package/.next/static/chunks/main-447abf206d7ebd2f.js +0 -1
  329. package/.next/static/chunks/main-app-f63b86bdbf5b7b88.js +0 -1
  330. package/.next/static/chunks/pages/_app-6c8c2371b16a04b8.js +0 -1
  331. package/.next/static/chunks/pages/_error-94812ad32cad7365.js +0 -1
  332. package/.next/static/css/eb25c6452113486f.css +0 -3
  333. package/.next/static/zCR6u3S4dIjlCtV80nNsp/_buildManifest.js +0 -1
  334. /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(status: number, body: unknown): Promise<boolean> {
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
- ? `<retry_original_command> --reqId ${reqId}`
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 && !deterministic.claimAction ? {
194
+ ...(reqId ? {
103
195
  claimAction: buildCliClaimAction(reqId),
104
196
  } : {}),
105
- ...(reqId && !deterministic.retryAction ? {
197
+ ...(reqId ? {
106
198
  retryAction: buildCliRetryAction(retryCommand),
107
199
  } : {}),
108
- ...(reqId && (!Array.isArray(deterministic.instructions) || deterministic.instructions.length === 0) ? {
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 = `<retry_original_command> --reqId ${reqId}`;
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
- ...(approval.claimAction ? {} : {
134
- claimAction: buildCliClaimAction(reqId),
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('npx next build', { cwd: root, env, stdio: buildStdioMode });
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
  }
@@ -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', false);
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;
@@ -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 profile = (
398
- options.profile ||
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: 3600, type: 'ttl', label: 'Agent Token TTL (seconds)', description: 'Default time-to-live for agent tokens' },
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: 600, type: 'ttl', label: 'Action Token TTL (seconds)', description: 'Default time-to-live for action tokens' },
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: false, 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)' },
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 = ['strict', 'dev', 'admin'] as const;
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', 3600);
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', 3600);
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,
@@ -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: { 'Authorization': `Bearer ${authToken}` },
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
  });
@@ -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', 600);
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', 3600);
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;