auramaxx 0.0.13 → 0.0.14

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 (97) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +24 -24
  3. package/.next/app-path-routes-manifest.json +6 -6
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +36 -36
  6. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/_not-found.html +1 -1
  8. package/.next/server/app/_not-found.rsc +1 -1
  9. package/.next/server/app/api/[...doc]/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agent-requests/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/apps/install/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/apps/manifests/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/apps/static/[...path]/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/docs/plain/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/import-from-openclaw/[channel]/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/import-from-openclaw/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/import-from-openclaw/validate/[channel]/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/update/route.js +7 -8
  22. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/version/route.js +1 -1
  24. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/workspace/[id]/apps/[wid]/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/workspace/[id]/apps/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/workspace/[id]/export/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/workspace/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/workspace/config/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/workspace/import/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/workspace/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/app-legacy-do-not-use/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/app-legacy-do-not-use.html +1 -1
  34. package/.next/server/app/app-legacy-do-not-use.rsc +1 -1
  35. package/.next/server/app/approve/[actionId]/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/docs/[...doc]/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/health/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/health.html +1 -1
  40. package/.next/server/app/health.rsc +1 -1
  41. package/.next/server/app/hello/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/hello.html +1 -1
  43. package/.next/server/app/hello.rsc +1 -1
  44. package/.next/server/app/index.html +1 -1
  45. package/.next/server/app/index.rsc +2 -2
  46. package/.next/server/app/page.js +1 -1
  47. package/.next/server/app/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/privacy.html +1 -1
  50. package/.next/server/app/privacy.rsc +1 -1
  51. package/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/terms.html +1 -1
  54. package/.next/server/app/terms.rsc +1 -1
  55. package/.next/server/app/yo/page.js +1 -1
  56. package/.next/server/app/yo/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/yo.html +1 -1
  58. package/.next/server/app/yo.rsc +2 -2
  59. package/.next/server/app-paths-manifest.json +6 -6
  60. package/.next/server/functions-config-manifest.json +1 -1
  61. package/.next/server/pages/404.html +1 -1
  62. package/.next/server/pages/500.html +1 -1
  63. package/.next/server/server-reference-manifest.json +1 -1
  64. package/.next/static/chunks/app/{page-16dfcd1c7cc88bcc.js → page-617dd0e03d79e94f.js} +1 -1
  65. package/.next/static/chunks/app/yo/page-fceb03605805cb44.js +1 -0
  66. package/.next/trace +28 -28
  67. package/README.md +1 -1
  68. package/docs/AGENT_SETUP.md +1 -1
  69. package/docs/AUTH.md +1 -1
  70. package/docs/MCP.md +12 -0
  71. package/docs/SKILLS.md +1 -1
  72. package/docs/api/secrets/credentials.md +9 -0
  73. package/docs/external/POLICY.md +2 -2
  74. package/package.json +1 -1
  75. package/skills/auramaxx/SKILL.md +13 -31
  76. package/skills/auramaxx/docs/AGENT_SETUP.md +1 -1
  77. package/src/app/UnlockPageClient.tsx +9 -9
  78. package/src/app/api/update/route.ts +9 -10
  79. package/src/app/yo/page.tsx +1 -1
  80. package/src/server/cli/commands/agent.ts +58 -0
  81. package/src/server/cli/commands/init.ts +9 -9
  82. package/src/server/cli/lib/credential-resolve.ts +20 -1
  83. package/src/server/cli/lib/local-agent-trust.ts +4 -3
  84. package/src/server/lib/agent-profiles.ts +4 -3
  85. package/src/server/lib/update-check.ts +4 -0
  86. package/src/server/mcp/server.ts +83 -14
  87. package/src/server/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  88. package/src/server/routes/credentials.ts +48 -5
  89. package/src/server/tests/cli/agent-auth.test.ts +114 -0
  90. package/src/server/tests/cli/local-agent-trust.test.ts +11 -6
  91. package/src/server/tests/endpoints/credentials.test.ts +40 -18
  92. package/src/server/tests/endpoints/escalation-migration-gate.test.ts +1 -1
  93. package/src/server/tests/lib/agent-profiles.test.ts +6 -0
  94. package/src/server/tests/lib/update-check.test.ts +9 -1
  95. package/.next/static/chunks/app/yo/page-719dc5f213fdfb30.js +0 -1
  96. /package/.next/static/{WshFGr6RxGYP6AbWuT9OG → 8ep63d3doVXsmbm1zj5k5}/_buildManifest.js +0 -0
  97. /package/.next/static/{WshFGr6RxGYP6AbWuT9OG → 8ep63d3doVXsmbm1zj5k5}/_ssgManifest.js +0 -0
@@ -329,7 +329,7 @@ describe('Credential Endpoints', () => {
329
329
  expect(getDeletedRes.status).toBe(404);
330
330
  });
331
331
 
332
- it('should request human approval when default excluded fields are present in credential reads', async () => {
332
+ it('should only request human approval when excluded fields are explicitly requested', async () => {
333
333
  const { publicKey, privateKey } = generateKeyPairSync('rsa', {
334
334
  modulusLength: 2048,
335
335
  publicKeyEncoding: { type: 'spki', format: 'pem' },
@@ -391,21 +391,39 @@ describe('Credential Endpoints', () => {
391
391
  .post(`/credentials/${loginId}/read`)
392
392
  .set('Authorization', `Bearer ${token}`)
393
393
  .send({});
394
- expect(loginRead.status).toBe(403);
395
- expect(loginRead.body.reasonCode).toBe('DENY_EXCLUDED_FIELD');
396
- expect(loginRead.body.requiresHumanApproval).toBe(true);
397
- const loginReqId = (loginRead.body.reqId ?? loginRead.body.requestId) as string | undefined;
394
+ expect(loginRead.status).toBe(200);
395
+ const loginDecrypted = decryptCredentialPayload(loginRead.body.encrypted, privateKey);
396
+ expect(loginDecrypted.fields.map((field) => field.key)).not.toContain('password');
397
+ expect(loginDecrypted.fields.map((field) => field.key)).toContain('notes');
398
+
399
+ const cardRead = await request(app)
400
+ .post(`/credentials/${cardId}/read`)
401
+ .set('Authorization', `Bearer ${token}`)
402
+ .send({});
403
+ expect(cardRead.status).toBe(200);
404
+ const cardDecrypted = decryptCredentialPayload(cardRead.body.encrypted, privateKey);
405
+ expect(cardDecrypted.fields.map((field) => field.key)).toContain('number');
406
+ expect(cardDecrypted.fields.map((field) => field.key)).not.toContain('cvv');
407
+
408
+ const loginExplicitRead = await request(app)
409
+ .post(`/credentials/${loginId}/read`)
410
+ .set('Authorization', `Bearer ${token}`)
411
+ .send({ requestedFields: ['password'] });
412
+ expect(loginExplicitRead.status).toBe(403);
413
+ expect(loginExplicitRead.body.reasonCode).toBe('DENY_EXCLUDED_FIELD');
414
+ expect(loginExplicitRead.body.requiresHumanApproval).toBe(true);
415
+ const loginReqId = (loginExplicitRead.body.reqId ?? loginExplicitRead.body.requestId) as string | undefined;
398
416
  expect(typeof loginReqId).toBe('string');
399
- expect(typeof loginRead.body.secret).toBe('string');
417
+ expect(typeof loginExplicitRead.body.secret).toBe('string');
400
418
  const expectedPollUrl = `http://127.0.0.1:4242/auth/${encodeURIComponent(loginReqId as string)}`;
401
- expect(loginRead.body.pollUrl).toBe(expectedPollUrl);
402
- expect(loginRead.body.claim).toMatchObject({
419
+ expect(loginExplicitRead.body.pollUrl).toBe(expectedPollUrl);
420
+ expect(loginExplicitRead.body.claim).toMatchObject({
403
421
  method: 'GET',
404
422
  endpoint: `/auth/${encodeURIComponent(loginReqId as string)}`,
405
423
  });
406
- expect(loginRead.body.approvalFlow?.mode).toBe('one_time_scoped_read');
407
- expect(loginRead.body.requestedFields).toEqual(expect.arrayContaining(['password']));
408
- expect(loginRead.body.effectiveExcludeFields).toEqual(expect.arrayContaining(['password']));
424
+ expect(loginExplicitRead.body.approvalFlow?.mode).toBe('one_time_scoped_read');
425
+ expect(loginExplicitRead.body.requestedFields).toEqual(expect.arrayContaining(['password']));
426
+ expect(loginExplicitRead.body.effectiveExcludeFields).toEqual(expect.arrayContaining(['password']));
409
427
 
410
428
  const loginApproval = await testPrisma.humanAction.findUnique({
411
429
  where: { id: loginReqId as string },
@@ -426,13 +444,13 @@ describe('Credential Endpoints', () => {
426
444
  expect(loginApprovalMeta.credentialAccess?.maxReads).toBe(1);
427
445
  expect(loginApprovalMeta.credentialAccess?.ttl).toBe(300);
428
446
 
429
- const cardRead = await request(app)
447
+ const cardExplicitRead = await request(app)
430
448
  .post(`/credentials/${cardId}/read`)
431
449
  .set('Authorization', `Bearer ${token}`)
432
- .send({});
433
- expect(cardRead.status).toBe(403);
434
- expect(cardRead.body.reasonCode).toBe('DENY_EXCLUDED_FIELD');
435
- expect(cardRead.body.requestedFields).toEqual(expect.arrayContaining(['cvv']));
450
+ .send({ requestedFields: ['cvv'] });
451
+ expect(cardExplicitRead.status).toBe(403);
452
+ expect(cardExplicitRead.body.reasonCode).toBe('DENY_EXCLUDED_FIELD');
453
+ expect(cardExplicitRead.body.requestedFields).toEqual(expect.arrayContaining(['cvv']));
436
454
  });
437
455
 
438
456
  it('should issue scoped temporary read access after excluded-field approval', async () => {
@@ -487,7 +505,7 @@ describe('Credential Endpoints', () => {
487
505
  const deniedRead = await request(app)
488
506
  .post(`/credentials/${credentialId}/read`)
489
507
  .set('Authorization', `Bearer ${token}`)
490
- .send({});
508
+ .send({ requestedFields: ['password'] });
491
509
  expect(deniedRead.status).toBe(403);
492
510
  expect(deniedRead.body.reasonCode).toBe('DENY_EXCLUDED_FIELD');
493
511
  expect(deniedRead.body.routeId).toBe(ESCALATION_ROUTE_IDS.CREDENTIALS_READ_EXCLUDED_FIELD);
@@ -594,6 +612,7 @@ describe('Credential Endpoints', () => {
594
612
  .post(`/credentials/${credentialId}/read`)
595
613
  .set('Authorization', `Bearer ${token}`)
596
614
  .send({
615
+ requestedFields: ['password'],
597
616
  requestedPolicySource: 'derived_403',
598
617
  requestedPolicy: {
599
618
  permissions: ['admin:*'],
@@ -642,6 +661,7 @@ describe('Credential Endpoints', () => {
642
661
  .post(`/credentials/${credentialId}/read`)
643
662
  .set('Authorization', `Bearer ${token}`)
644
663
  .send({
664
+ requestedFields: ['password'],
645
665
  requestedPolicySource: 'derived_403',
646
666
  requestedPolicy: 'bad-value',
647
667
  });
@@ -688,6 +708,7 @@ describe('Credential Endpoints', () => {
688
708
  .post(`/credentials/${credentialId}/read`)
689
709
  .set('Authorization', `Bearer ${token}`)
690
710
  .send({
711
+ requestedFields: ['password'],
691
712
  requestedPolicySource: 'agent',
692
713
  requestedPolicy: {
693
714
  permissions: ['secret:read'],
@@ -711,6 +732,7 @@ describe('Credential Endpoints', () => {
711
732
  .post(`/credentials/${credentialId}/read`)
712
733
  .set('Authorization', `Bearer ${token}`)
713
734
  .send({
735
+ requestedFields: ['password'],
714
736
  requestedPolicySource: 'agent',
715
737
  requestedPolicy: {
716
738
  permissions: ['admin:*'],
@@ -864,7 +886,7 @@ describe('Credential Endpoints', () => {
864
886
  const deniedRead = await request(app)
865
887
  .post(`/credentials/${credentialId}/read`)
866
888
  .set('Authorization', `Bearer ${token}`)
867
- .send({});
889
+ .send({ requestedFields: ['password'] });
868
890
  expect(deniedRead.status).toBe(403);
869
891
  expect(deniedRead.body.reasonCode).toBe('DENY_EXCLUDED_FIELD');
870
892
  expect(deniedRead.body.routeId).toBe(ESCALATION_ROUTE_IDS.CREDENTIALS_READ_EXCLUDED_FIELD);
@@ -226,7 +226,7 @@ describe('Escalation rollout migration gates', () => {
226
226
  const readExcludedFieldRes = await request(app)
227
227
  .post(`/credentials/${credentialId}/read`)
228
228
  .set('Authorization', `Bearer ${readExcludedFieldToken}`)
229
- .send({});
229
+ .send({ requestedFields: ['password'] });
230
230
 
231
231
  expect(readExcludedFieldRes.status).toBe(403);
232
232
  expect(readExcludedFieldRes.body.contractVersion).toBe(ESCALATION_CONTRACT_VERSION);
@@ -53,6 +53,12 @@ describe('agent profiles resolver', () => {
53
53
  expect(policy.credentialAccess.maxReads).toBe(100);
54
54
  expect(policy.overrideDelta).toEqual(['maxReads', 'ttlSeconds']);
55
55
  });
56
+
57
+ it('scopes dev profile credential access to primary + legacy alias only', () => {
58
+ const policy = resolveProfileToEffectivePolicy({ profileId: 'dev' });
59
+ expect(policy.credentialAccess.read).toEqual(['agent:agent', 'agent:primary']);
60
+ expect(policy.credentialAccess.write).toEqual(['agent:agent', 'agent:primary']);
61
+ });
56
62
  });
57
63
 
58
64
  describe('describeProfile', () => {
@@ -1,5 +1,12 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { buildNpxLatestCommand, buildUpdateCommand, buildUpdateFallbackCommand, buildVersionInfo, isNewerVersion } from '../../lib/update-check';
2
+ import {
3
+ buildNpxLatestCommand,
4
+ buildUpdateCommand,
5
+ buildUpdateFallbackCommand,
6
+ buildUpdateForceCommand,
7
+ buildVersionInfo,
8
+ isNewerVersion,
9
+ } from '../../lib/update-check';
3
10
 
4
11
  describe('update-check helpers', () => {
5
12
  it('detects newer versions', () => {
@@ -12,6 +19,7 @@ describe('update-check helpers', () => {
12
19
  const info = buildVersionInfo('1.0.0', '1.1.0');
13
20
  expect(info.updateAvailable).toBe(true);
14
21
  expect(buildUpdateCommand()).toBe('npm install -g auramaxx --foreground-scripts');
22
+ expect(buildUpdateForceCommand()).toBe('npm install -g auramaxx --foreground-scripts --force');
15
23
  expect(buildNpxLatestCommand()).toBe('npx --yes auramaxx@latest');
16
24
  expect(buildNpxLatestCommand('auramaxx', ['restart'])).toBe('npx --yes auramaxx@latest restart');
17
25
  expect(buildUpdateFallbackCommand()).toBe('npx --yes auramaxx@latest start');
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5863],{20063:(e,t,a)=>{"use strict";var r=a(47260);a.o(r,"useParams")&&a.d(t,{useParams:function(){return r.useParams}}),a.o(r,"usePathname")&&a.d(t,{usePathname:function(){return r.usePathname}}),a.o(r,"useRouter")&&a.d(t,{useRouter:function(){return r.useRouter}}),a.o(r,"useSearchParams")&&a.d(t,{useSearchParams:function(){return r.useSearchParams}})},44265:(e,t,a)=>{"use strict";a.d(t,{default:()=>o});var r=a(95155),s=a(65685);function o(){let{colorMode:e,setColorMode:t}=(0,s.D)(),a="light"===e;return(0,r.jsx)("button",{onClick:()=>{t(a?"dark":"light")},className:"p-1.5 text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] hover:bg-[var(--color-surface,#ffffff)]/50 transition-colors rounded","aria-label":a?"Switch to dark mode":"Switch to light mode",children:a?(0,r.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,r.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})}):(0,r.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,r.jsx)("line",{x1:"12",y1:"1",x2:"12",y2:"3"}),(0,r.jsx)("line",{x1:"12",y1:"21",x2:"12",y2:"23"}),(0,r.jsx)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"}),(0,r.jsx)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"}),(0,r.jsx)("line",{x1:"1",y1:"12",x2:"3",y2:"12"}),(0,r.jsx)("line",{x1:"21",y1:"12",x2:"23",y2:"12"}),(0,r.jsx)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"}),(0,r.jsx)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"})]})})}},50588:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>b});var r=a(95155),s=a(52619),o=a.n(s),n=a(20063),l=a(12115),c=a(44265),i=a(53667),x=a(65685);let d={npm:"npm install -g auramaxx",npx:"npx -y auramaxx"},p="auramaxx",m=["/ss-light1.webp","/ss-light2.webp","/ss-light3.webp"],h=["/ss-dark1.webp","/ss-dark2.webp","/ss-dark3.webp"],u=[{src:"/agent9.png",label:"Agent 1",width:"clamp(24px, 3.8vw, 40px)",height:"clamp(34px, 5.6vw, 58px)",baselineOffset:"clamp(4px, 0.8vw, 8px)",spriteY:"0%",cropBottom:"4px"},{src:"/agent10.png",label:"Agent 2",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent1.png",label:"Agent 3",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent2.png",label:"Agent 4",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent3.png",label:"Agent 5",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent4.png",label:"Agent 6",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent5.png",label:"Agent 7",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent6.png",label:"Agent 8",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent7.png",label:"Agent 9",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"},{src:"/agent8.png",label:"Agent 10",width:"clamp(28px, 4.4vw, 46px)",height:"clamp(40px, 6.4vw, 66px)",baselineOffset:"0px",spriteY:"0%",cropBottom:"0px"}];function f(e){let t=1e4*Math.sin(e);return t-Math.floor(t)}function b(){let e=(0,n.useRouter)(),{colorMode:t}=(0,x.D)(),[a,s]=(0,l.useState)("npm"),[b,g]=(0,l.useState)(!1),[v,w]=(0,l.useState)(0),[y,k]=(0,l.useState)(!1),[j,N]=(0,l.useState)(!1),A=(0,l.useMemo)(()=>d[a],[a]),M=(0,l.useMemo)(()=>"dark"===t?h:m,[t]),P=(0,l.useMemo)(()=>Array.from({length:4},()=>u).flat(),[]);(0,l.useEffect)(()=>{let e=window.location.hostname.toLowerCase();g("auramaxx.sh"===e||"www.auramaxx.sh"===e)},[]),(0,l.useEffect)(()=>{let e=()=>{N(window.innerWidth<768)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,l.useEffect)(()=>{let e=window.setInterval(()=>{w(e=>(e+1)%M.length)},5600);return()=>window.clearInterval(e)},[M]),(0,l.useEffect)(()=>{if(!y)return;let e=window.setTimeout(()=>{k(!1)},1500);return()=>window.clearTimeout(e)},[y]),(0,l.useEffect)(()=>{w(0)},[t]);let S=M.length,C=async()=>{try{await navigator.clipboard.writeText(A),k(!0)}catch(e){k(!1)}};return(0,r.jsxs)("main",{className:"min-h-screen bg-[var(--color-background,#f4f4f5)] relative overflow-hidden","data-testid":"yo-page-shell",children:[(0,r.jsxs)("div",{className:"fixed inset-0 pointer-events-none z-0 overflow-hidden","aria-hidden":"true",children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-grid-adaptive bg-[size:4rem_4rem] opacity-30"}),(0,r.jsx)("div",{className:"absolute inset-0 tyvek-texture opacity-40 mix-blend-multiply"}),(0,r.jsx)("div",{className:"absolute bottom-[5%] right-[5%] opacity-5 select-none","data-testid":"yo-background-branding",children:(0,r.jsx)("h1",{className:"text-[15vw] font-bold leading-none text-[var(--color-text,#0a0a0a)] font-mono tracking-tighter text-right",children:"AURAMAXX"})}),(0,r.jsx)("div",{className:"absolute top-10 left-10 w-32 h-32 border-l-4 border-t-4 border-[var(--color-text,#0a0a0a)] opacity-10",children:(0,r.jsx)("div",{className:"absolute top-2 left-2 w-4 h-4 bg-[var(--color-text,#0a0a0a)]"})}),(0,r.jsx)("div",{className:"absolute bottom-10 right-10 w-32 h-32 border-r-4 border-b-4 border-[var(--color-text,#0a0a0a)] opacity-10 flex items-end justify-end",children:(0,r.jsx)("div",{className:"absolute bottom-2 right-2 w-4 h-4 bg-[var(--color-text,#0a0a0a)]"})})]}),(0,r.jsxs)("div",{className:"fixed top-5 right-4 sm:top-7 sm:right-6 z-30 flex items-center gap-2 sm:gap-3 font-mono text-[9px] sm:text-[10px] tracking-widest",children:[(0,r.jsx)(o(),{href:"/docs",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"DOCS"}),(0,r.jsx)(o(),{href:"/api",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"API"}),!b&&(0,r.jsx)(o(),{href:"/",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"HOME"}),(0,r.jsx)("a",{href:"https://github.com/Aura-Industry/auramaxx",target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"GITHUB"}),(0,r.jsx)("a",{href:"https://x.com/npxauramaxx",target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"X"}),(0,r.jsx)("a",{href:"https://x.com/hi_im_nico",target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"HELP"}),(0,r.jsx)(c.default,{})]}),(0,r.jsxs)("div",{className:"fixed bottom-4 right-4 sm:bottom-6 sm:right-6 z-30 flex items-center gap-3 font-mono text-[9px] sm:text-[10px] tracking-widest",children:[(0,r.jsx)(o(),{href:"/privacy",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"PRIVACY POLICY"}),(0,r.jsx)(o(),{href:"/terms",className:"text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"TERMS"})]}),(0,r.jsxs)("div",{className:"fixed top-4 left-4 sm:top-6 sm:left-6 z-30 flex items-center gap-2 sm:gap-3",children:[(0,r.jsx)(o(),{href:"/",className:"w-8 h-8 sm:w-10 sm:h-10 block hover:opacity-80 transition-opacity","aria-label":"AuraMaxx home",children:(0,r.jsx)("img",{src:"/logo.webp",alt:"AuraMaxx",className:"w-full h-full object-contain"})}),(0,r.jsxs)("div",{className:"hidden sm:flex sm:flex-col sm:leading-tight",children:[(0,r.jsx)(o(),{href:"/",className:"font-black text-sm tracking-tight text-[var(--color-text,#0a0a0a)] hover:opacity-80 transition-opacity",children:"AURAMAXX"}),(0,r.jsx)("a",{href:"https://x.com/hi_im_nico",target:"_blank",rel:"noopener noreferrer",className:"text-[10px] text-[var(--color-text-muted,#6b7280)] hover:text-[var(--color-text,#0a0a0a)] transition-colors",children:"by @hi_im_nico, with love"})]})]}),(0,r.jsx)("div",{className:"fixed top-20 left-1/2 z-20 w-full max-w-4xl -translate-x-1/2 px-4 pointer-events-none sm:top-24",children:(0,r.jsxs)("div",{className:"mx-auto w-full max-w-[min(94vw,740px)] bg-[var(--color-surface,#f4f4f2)] clip-specimen border-mech shadow-mech overflow-hidden font-mono corner-marks pointer-events-auto",children:[(0,r.jsxs)("div",{className:"px-4 py-2 border-b border-[var(--color-border,#d4d4d8)] bg-[var(--color-surface-alt,#fafafa)] flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-sans font-bold text-[10px] text-[var(--color-text,#0a0a0a)] uppercase tracking-tight",children:"AURAMAXX"}),(0,r.jsx)("span",{className:"ml-auto font-mono text-[10px] tracking-[0.12em] uppercase text-[var(--color-text-muted,#6b7280)]",children:"npx auramaxx"})]}),(0,r.jsxs)("div",{className:"px-4 py-4 text-center sm:px-6 sm:py-5",children:[(0,r.jsxs)("h2",{className:"font-mono text-[clamp(12px,3.2vw,30px)] font-semibold tracking-[0.03em] leading-none text-[var(--color-text,#0a0a0a)]",children:[(0,r.jsx)("span",{className:"block whitespace-nowrap",children:"THE APPLE KEYCHAIN FOR AI AGENTS"}),(0,r.jsx)("span",{className:"mt-2 block whitespace-nowrap",children:"SECURE.LOCAL.OPEN-SOURCE."})]}),(0,r.jsx)("p",{className:"mt-2 font-mono text-[11px] sm:text-[12px] tracking-wide text-[var(--color-text-muted,#6b7280)]",children:"It's me, AI. You are absolutely right. I want to auramaxx with your credit cards."}),(0,r.jsxs)("div",{className:"mt-4 flex items-center justify-center gap-2",children:[(0,r.jsx)(i.$n,{variant:"primary",size:"sm",onClick:()=>e.push("/docs"),children:"VIEW DOCS"}),(0,r.jsx)(i.$n,{variant:"secondary",size:"sm",onClick:()=>window.open("https://github.com/Aura-Industry/auramaxx","_blank","noopener,noreferrer"),children:"GITHUB"})]})]})]})}),(0,r.jsx)("div",{className:"absolute inset-0 z-[1] pointer-events-none flex items-center justify-center overflow-hidden","aria-hidden":"true",children:(0,r.jsx)("div",{className:"relative h-[min(82vh,900px)] w-[136vw] md:h-[min(74vh,860px)] md:w-[min(112vw,1720px)]",children:M.map((e,a)=>{let s=(a-v+S)%S,o=0===s?"center":1===s?"right":s===S-1?"left":"hidden",n=((e,t)=>{let a="translate(-50%, -42%)",r="translate(-50%, -50%)";if("center"===e)return{zIndex:20,opacity:1,transform:j?"".concat(a," translate3d(0, 0, 0) scale(1)"):"".concat(r," translate3d(0, 0, 0) scale(1)")};if("left"===e)return{zIndex:10,opacity:.92,transform:j?"".concat(a," translate3d(0, clamp(-250px, -23vh, -136px), 0) scale(0.66)"):"".concat(r," translate3d(clamp(-430px, -30vw, -220px), 0, 0) scale(0.68)")};if("right"===e)return{zIndex:10,opacity:.92,transform:j?"".concat(a," translate3d(0, clamp(136px, 23vh, 250px), 0) scale(0.66)"):"".concat(r," translate3d(clamp(220px, 30vw, 430px), 0, 0) scale(0.68)")};let s=t<=S/2?1:-1;return{zIndex:0,opacity:0,transform:j?"".concat(a," translate3d(0, ").concat(s>0?"360px":"-360px",", 0) scale(0.56)"):"".concat(r," translate3d(").concat(s>0?"520px":"-520px",", 0, 0) scale(0.58)")}})(o,s),l=j?"left"===o?{WebkitMaskImage:"linear-gradient(to bottom, transparent 0%, black 28%, black 100%)",maskImage:"linear-gradient(to bottom, transparent 0%, black 28%, black 100%)"}:"right"===o?{WebkitMaskImage:"linear-gradient(to top, transparent 0%, black 28%, black 100%)",maskImage:"linear-gradient(to top, transparent 0%, black 28%, black 100%)"}:{}:"left"===o?{WebkitMaskImage:"linear-gradient(to right, transparent 0%, black 30%, black 100%)",maskImage:"linear-gradient(to right, transparent 0%, black 30%, black 100%)"}:"right"===o?{WebkitMaskImage:"linear-gradient(to left, transparent 0%, black 30%, black 100%)",maskImage:"linear-gradient(to left, transparent 0%, black 30%, black 100%)"}:{};return(0,r.jsx)("div",{className:"absolute left-1/2 top-1/2 overflow-hidden transition-[transform,opacity] duration-[1700ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform",style:{width:j?"min(152vw, 1080px)":"min(80vw, 1320px)",height:j?"min(74vh, 760px)":"min(70vh, 800px)",...n},children:(0,r.jsxs)("div",{className:"relative h-full w-full",style:l,children:[(0,r.jsx)("img",{src:e,alt:"",className:"h-full w-full object-contain"}),j&&"center"!==o&&(0,r.jsx)("div",{className:"absolute inset-0 pointer-events-none",style:{background:"dark"===t?"rgba(0,0,0,0.12)":"rgba(255,255,255,0.1)"}})]})},e)})})}),(0,r.jsx)("section",{className:"relative z-10 min-h-screen p-4",children:(0,r.jsx)("div",{className:"w-full max-w-4xl",children:(0,r.jsxs)("div",{className:"fixed bottom-14 left-1/2 z-20 w-[min(94vw,620px)] -translate-x-1/2 overflow-hidden border border-[#222222] bg-[#111111] md:bottom-16","data-testid":"yo-install-panel",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-[#2a2a2a] bg-[#1a1a1a] px-3 py-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5","aria-hidden":"true",children:[(0,r.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-[#ff5f57]"}),(0,r.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-[#ffbd2e]"}),(0,r.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-[#28c840]"})]}),(0,r.jsx)("span",{className:"font-mono text-[9px] tracking-widest uppercase text-[#8b8b8b]",children:"MIT"})]}),(0,r.jsxs)("div",{className:"flex items-center border-b border-[#2a2a2a] bg-[#121212]",children:[(0,r.jsx)("button",{type:"button",onClick:()=>s("npm"),"aria-pressed":"npm"===a,className:"px-4 py-2 font-mono text-[10px] tracking-widest uppercase transition-colors ".concat("npm"===a?"bg-[#0a0a0a] text-[#f5f5f5]":"text-[#8b8b8b] hover:text-[#f5f5f5] hover:bg-[#1b1b1b]"),children:"npm"}),(0,r.jsx)("button",{type:"button",onClick:()=>s("npx"),"aria-pressed":"npx"===a,className:"px-4 py-2 font-mono text-[10px] tracking-widest uppercase transition-colors ".concat("npx"===a?"bg-[#0a0a0a] text-[#f5f5f5]":"text-[#8b8b8b] hover:text-[#f5f5f5] hover:bg-[#1b1b1b]"),children:"npx"})]}),(0,r.jsx)("div",{className:"flex items-center bg-[#0a0a0a] px-4 py-4",children:(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,r.jsxs)("code",{className:"block min-w-0 overflow-x-auto whitespace-nowrap font-mono text-sm md:text-base text-[#9ca3af]",children:[(0,r.jsx)("span",{className:"mr-2 text-[#7d8590]",children:"$"}),A.endsWith(p)?(0,r.jsxs)(r.Fragment,{children:[A.slice(0,-p.length),(0,r.jsx)("span",{className:"text-[var(--color-accent,#34d399)]",children:p})]}):A]}),(0,r.jsx)("button",{type:"button",onClick:C,"aria-label":y?"Copied command":"Copy command",title:y?"Copied":"Copy",className:"shrink-0 flex h-5 w-5 items-center justify-center transition-colors ".concat(y?"text-[#86efac]":"text-[#a3a3a3] hover:text-[#d4d4d4]"),children:y?(0,r.jsx)("svg",{viewBox:"0 0 16 16",className:"h-3.5 w-3.5","aria-hidden":"true",children:(0,r.jsx)("path",{fill:"currentColor",d:"M13.78 3.97a.75.75 0 0 1 0 1.06L6.97 11.84a.75.75 0 0 1-1.06 0L2.22 8.16a.75.75 0 1 1 1.06-1.06l3.16 3.16 6.28-6.28a.75.75 0 0 1 1.06 0Z"})}):(0,r.jsx)("svg",{viewBox:"0 0 16 16",className:"h-3.5 w-3.5","aria-hidden":"true",children:(0,r.jsx)("path",{fill:"currentColor",d:"M10 1.75A1.75 1.75 0 0 1 11.75 3.5v.75h.75A1.75 1.75 0 0 1 14.25 6v6.5A1.75 1.75 0 0 1 12.5 14.25H6A1.75 1.75 0 0 1 4.25 12.5v-.75H3.5A1.75 1.75 0 0 1 1.75 10V3.5A1.75 1.75 0 0 1 3.5 1.75H10Zm2.5 4H6A.25.25 0 0 0 5.75 6v6.5c0 .14.11.25.25.25h6.5a.25.25 0 0 0 .25-.25V6a.25.25 0 0 0-.25-.25Zm-2.5-2.5H3.5a.25.25 0 0 0-.25.25V10c0 .14.11.25.25.25h.75V6A1.75 1.75 0 0 1 6 4.25h4.25V3.5a.25.25 0 0 0-.25-.25Z"})})})]})}),(0,r.jsx)("div",{className:"border-t border-[#2a2a2a] bg-[#0b0b0b] px-3 py-2.5 md:px-4 md:py-3","data-testid":"yo-sprite-row",children:(0,r.jsx)("div",{className:"overflow-hidden",children:(0,r.jsx)("div",{className:"yo-mobile-agent-marquee flex w-max items-end gap-1.5 md:gap-2",children:P.map((e,t)=>{let a=t%u.length,s=function(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=function(e){let t=0;for(let a=0;a<e.length;a+=1)t=(t<<5)-t+e.charCodeAt(a)|0;return Math.abs(t)}(e)+97*t+131*a,s=(f(r+1)-.5)*8,o=(f(r+2)-.5)*4+(0===a?-1.5:1.5),n=(f(r+3)-.5)*5,l=(f(r+4)-.5)*8,c=(f(r+5)-.5)*8,i=.72+.06*f(r+6);return{marginLeft:"".concat(Math.round(l),"px"),marginRight:"".concat(Math.round(c),"px"),transform:"translate(".concat(s.toFixed(1),"px, ").concat(o.toFixed(1),"px) rotate(").concat(n.toFixed(1),"deg) scale(").concat(i.toFixed(3),")")}}(e.src,a,0);return(0,r.jsx)("div",{style:s,children:(0,r.jsx)("div",{className:"yo-sprite",style:{backgroundImage:"url('".concat(e.src,"')"),animationDelay:"".concat(-150*a,"ms, ").concat(-300*a,"ms"),width:e.width,height:e.height,marginBottom:e.baselineOffset,backgroundPositionY:e.spriteY,clipPath:"inset(0 0 ".concat(e.cropBottom," 0)")},role:"img","aria-label":"".concat(e.label," sprite")})},"".concat(e.src,"-").concat(t))})})})})]})})})]})}},65685:(e,t,a)=>{"use strict";a.d(t,{D:()=>p,ThemeProvider:()=>d});var r=a(12115);let s="aura-theme",o="agent-theme-preferences",n={colorMode:"light",uiScale:"normal"},l=(0,r.createContext)(null);function c(e){return"dark"===e?{colorMode:"dark",uiScale:"normal"}:"big"===e?{colorMode:"light",uiScale:"big"}:{colorMode:"light",uiScale:"normal"}}function i(e,t){return"big"===t?"big":"dark"===e?"dark":"default"}function x(e,t){if("undefined"==typeof document)return;let a=document.documentElement;"dark"===e?a.setAttribute("data-theme","dark"):a.removeAttribute("data-theme"),a.setAttribute("data-ui-scale",t);let r="big"===t?1.25:1;a.style.setProperty("--ui-scale-factor",String(r)),a.style.setProperty("--font-size-xs","".concat(Math.round(10*r),"px")),a.style.setProperty("--font-size-sm","".concat(Math.round(12*r),"px")),a.style.setProperty("--font-size-md","".concat(Math.round(14*r),"px")),a.style.setProperty("--font-size-lg","".concat(Math.round(18*r),"px")),a.style.setProperty("--space-1","".concat(Math.round(4*r),"px")),a.style.setProperty("--space-2","".concat(Math.round(8*r),"px")),a.style.setProperty("--space-3","".concat(Math.round(12*r),"px")),a.style.setProperty("--space-4","".concat(Math.round(16*r),"px")),a.style.setProperty("--space-6","".concat(Math.round(24*r),"px")),a.style.setProperty("--radius-sm","".concat(Math.round(6*r),"px")),a.style.setProperty("--radius-md","".concat(Math.round(10*r),"px")),a.style.setProperty("--radius-lg","".concat(Math.round(14*r),"px")),a.style.setProperty("--shadow-sm","big"===t?"0 2px 4px rgba(0,0,0,0.15)":"0 1px 2px rgba(0,0,0,0.12)"),a.style.setProperty("--shadow-md","big"===t?"0 8px 20px rgba(0,0,0,0.24)":"0 6px 16px rgba(0,0,0,0.18)"),a.style.setProperty("--control-height-sm","".concat(Math.round(32*r),"px")),a.style.setProperty("--control-height-md","".concat(Math.round(36*r),"px")),a.style.setProperty("--control-height-lg","".concat(Math.round(40*r),"px")),a.style.setProperty("--space-xs","var(--space-1)"),a.style.setProperty("--space-sm","var(--space-2)"),a.style.setProperty("--space-md","var(--space-3)"),a.style.setProperty("--space-lg","var(--space-4)")}function d(e){let{children:t}=e,[a,d]=(0,r.useState)(n.colorMode),[p,m]=(0,r.useState)(n.uiScale),[h,u]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=function(){try{let e=window.localStorage.getItem(o);if(e){let t=JSON.parse(e),a="dark"===t.colorMode?"dark":"light",r="big"===t.uiScale?"big":"normal";return{colorMode:a,uiScale:r}}}catch(e){}let e=window.localStorage.getItem(s);return c("dark"===e||"big"===e?e:"default")}();d(e.colorMode),m(e.uiScale),u(!0),x(e.colorMode,e.uiScale)},[]),(0,r.useEffect)(()=>{if(!h)return;x(a,p),window.localStorage.setItem(o,JSON.stringify({colorMode:a,uiScale:p}));let e=i(a,p);"default"===e?window.localStorage.removeItem(s):window.localStorage.setItem(s,e)},[h,a,p]);let f=(0,r.useCallback)(e=>d(e),[]),b=(0,r.useCallback)(e=>m(e),[]),g=(0,r.useCallback)(e=>{let t=c(e);d(t.colorMode),m(t.uiScale)},[]),v=(0,r.useMemo)(()=>i(a,p),[a,p]),w=(0,r.useMemo)(()=>({colorMode:a,uiScale:p,setColorMode:f,setUiScale:b,theme:v,setTheme:g}),[a,p,f,b,v,g]);return(0,r.createElement)(l.Provider,{value:w},t)}function p(){let e=(0,r.useContext)(l);if(!e)throw Error("useTheme must be used within a ThemeProvider");return e}},71847:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(12115);let s=function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return t.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim()};var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,r.forwardRef)((e,t)=>{let{color:a="currentColor",size:n=24,strokeWidth:l=2,absoluteStrokeWidth:c,className:i="",children:x,iconNode:d,...p}=e;return(0,r.createElement)("svg",{ref:t,...o,width:n,height:n,stroke:a,strokeWidth:c?24*Number(l)/Number(n):l,className:s("lucide",i),...p},[...d.map(e=>{let[t,a]=e;return(0,r.createElement)(t,a)}),...Array.isArray(x)?x:[x]])}),l=(e,t)=>{let a=(0,r.forwardRef)((a,o)=>{let{className:l,...c}=a;return(0,r.createElement)(n,{ref:o,iconNode:t,className:s("lucide-".concat(e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),l),...c})});return a.displayName="".concat(e),a}},84114:(e,t,a)=>{Promise.resolve().then(a.bind(a,50588))}},e=>{e.O(0,[2619,7616,3667,8441,1255,7358],()=>e(e.s=84114)),_N_E=e.O()}]);