auramaxx 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +26 -0
- package/README.md +77 -0
- package/apps/desktop-electron/main.js +428 -0
- package/bin/auramaxx.js +1063 -0
- package/docs/ADAPTERS.md +466 -0
- package/docs/AGENT_SETUP.md +159 -0
- package/docs/API.md +127 -0
- package/docs/APPS.md +199 -0
- package/docs/ARCHITECTURE.md +235 -0
- package/docs/AUTH.md +318 -0
- package/docs/BEST-PRACTICES.md +82 -0
- package/docs/CLI.md +141 -0
- package/docs/DESKTOP_ELECTRON.md +26 -0
- package/docs/DEVELOPING-APPS.md +453 -0
- package/docs/MCP.md +122 -0
- package/docs/PACKAGING_POLICY.md +19 -0
- package/docs/PERMISSION.md +137 -0
- package/docs/PROTOCOL.md +142 -0
- package/docs/README.md +50 -0
- package/docs/SKILLS.md +132 -0
- package/docs/TROUBLESHOOTING.md +376 -0
- package/docs/WORKSPACE.md +673 -0
- package/docs/agent-auth.md +14 -0
- package/docs/api/authentication.md +79 -0
- package/docs/api/secrets/api-keys.md +28 -0
- package/docs/api/secrets/credentials.md +80 -0
- package/docs/api/secrets/sharing.md +48 -0
- package/docs/api/system.md +41 -0
- package/docs/api/wallets/apps-strategies.md +66 -0
- package/docs/api/wallets/core.md +46 -0
- package/docs/api/wallets/data-portfolio.md +42 -0
- package/docs/aura-file.md +48 -0
- package/docs/core-concepts/FEATURES.md +114 -0
- package/docs/credentials.md +120 -0
- package/docs/external/HOW_TO_AURAMAXX/GETTING_SECRETS.md +33 -0
- package/docs/external/HOW_TO_AURAMAXX/README.md +45 -0
- package/docs/external/getting-started.md +10 -0
- package/docs/external/overview.md +19 -0
- package/docs/external/persona-paths.md +7 -0
- package/docs/external/share-secret.md +76 -0
- package/docs/external/why-aura.md +7 -0
- package/docs/security.md +227 -0
- package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -0
- package/docs/wallet/AI.md +508 -0
- package/docs/wallet/DEVELOPING-STRATEGIES.md +713 -0
- package/docs/wallet/README.md +47 -0
- package/docs/wallet/STRATEGY.md +89 -0
- package/next.config.ts +28 -0
- package/package.json +167 -0
- package/postcss.config.mjs +8 -0
- package/prisma/migrations/20260214170000_baseline/migration.sql +511 -0
- package/prisma/migrations/20260216214537_add_passkey_model/migration.sql +18 -0
- package/prisma/migrations/20260217150500_add_credential_access_audit/migration.sql +31 -0
- package/prisma/migrations/20260222090000_update_admin_ttl_default/migration.sql +10 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +447 -0
- package/public/logo.webp +0 -0
- package/scripts/add-app.js +245 -0
- package/server/abi/SwapHelper.json +438 -0
- package/server/cli/approval.ts +447 -0
- package/server/cli/commands/actions.ts +474 -0
- package/server/cli/commands/api.ts +220 -0
- package/server/cli/commands/apikey.ts +277 -0
- package/server/cli/commands/app.ts +204 -0
- package/server/cli/commands/auth.ts +464 -0
- package/server/cli/commands/cron.ts +24 -0
- package/server/cli/commands/diary.ts +274 -0
- package/server/cli/commands/doctor.ts +1247 -0
- package/server/cli/commands/env.ts +476 -0
- package/server/cli/commands/experimental.ts +69 -0
- package/server/cli/commands/init.ts +798 -0
- package/server/cli/commands/lock.ts +157 -0
- package/server/cli/commands/mcp.ts +285 -0
- package/server/cli/commands/quickhack.ts +86 -0
- package/server/cli/commands/release-check.ts +231 -0
- package/server/cli/commands/restore.ts +314 -0
- package/server/cli/commands/service.ts +320 -0
- package/server/cli/commands/shell-hook.ts +512 -0
- package/server/cli/commands/skill.ts +216 -0
- package/server/cli/commands/start.ts +139 -0
- package/server/cli/commands/status.ts +59 -0
- package/server/cli/commands/stop.ts +36 -0
- package/server/cli/commands/token.ts +180 -0
- package/server/cli/commands/unlock.ts +50 -0
- package/server/cli/commands/vault.ts +1323 -0
- package/server/cli/commands/wallet.ts +209 -0
- package/server/cli/index.ts +280 -0
- package/server/cli/lib/approval-poll.ts +94 -0
- package/server/cli/lib/aura-parser.ts +64 -0
- package/server/cli/lib/credential-create.ts +74 -0
- package/server/cli/lib/credential-resolve.ts +280 -0
- package/server/cli/lib/dotenv-migrate.ts +116 -0
- package/server/cli/lib/dotenv-parser.ts +146 -0
- package/server/cli/lib/escalation.ts +57 -0
- package/server/cli/lib/http.ts +91 -0
- package/server/cli/lib/init-steps.ts +76 -0
- package/server/cli/lib/local-agent-trust.ts +45 -0
- package/server/cli/lib/lock-unlock-helper.ts +71 -0
- package/server/cli/lib/process.ts +162 -0
- package/server/cli/lib/prompt.ts +294 -0
- package/server/cli/lib/theme.ts +240 -0
- package/server/cli/socket.ts +579 -0
- package/server/cli/transport-client.ts +50 -0
- package/server/cron/index.ts +137 -0
- package/server/cron/job.ts +31 -0
- package/server/cron/jobs/balance-sync.ts +436 -0
- package/server/cron/jobs/incoming-scan.ts +506 -0
- package/server/cron/jobs/native-price.ts +70 -0
- package/server/cron/jobs/orphan-cleanup.ts +40 -0
- package/server/cron/jobs/strategy-runner.ts +175 -0
- package/server/cron/scheduler.ts +125 -0
- package/server/index.ts +420 -0
- package/server/lib/adapters/factory.ts +119 -0
- package/server/lib/adapters/index.ts +19 -0
- package/server/lib/adapters/router.ts +297 -0
- package/server/lib/adapters/telegram.ts +645 -0
- package/server/lib/adapters/types.ts +89 -0
- package/server/lib/adapters/webhook.ts +95 -0
- package/server/lib/address.ts +49 -0
- package/server/lib/agent-auth/contracts.ts +1194 -0
- package/server/lib/agent-profiles.ts +419 -0
- package/server/lib/ai.ts +285 -0
- package/server/lib/api-registry/contracts.ts +86 -0
- package/server/lib/api-registry/validation.ts +172 -0
- package/server/lib/apikey-migration.ts +258 -0
- package/server/lib/app-installer.ts +505 -0
- package/server/lib/app-tokens.ts +247 -0
- package/server/lib/approval-link.ts +27 -0
- package/server/lib/auth.ts +314 -0
- package/server/lib/auto-execute.ts +160 -0
- package/server/lib/batch.ts +242 -0
- package/server/lib/cold.ts +1048 -0
- package/server/lib/config.ts +408 -0
- package/server/lib/credential-access-audit.ts +85 -0
- package/server/lib/credential-access-policy.ts +111 -0
- package/server/lib/credential-health.ts +343 -0
- package/server/lib/credential-import.ts +608 -0
- package/server/lib/credential-scope.ts +102 -0
- package/server/lib/credential-shares.ts +190 -0
- package/server/lib/credential-transport.ts +533 -0
- package/server/lib/credential-vault.ts +77 -0
- package/server/lib/credentials.ts +422 -0
- package/server/lib/crypto.ts +8 -0
- package/server/lib/db.ts +58 -0
- package/server/lib/defaults.ts +386 -0
- package/server/lib/dex/index.ts +80 -0
- package/server/lib/dex/relay.ts +235 -0
- package/server/lib/dex/types.ts +59 -0
- package/server/lib/dex/uniswap.ts +370 -0
- package/server/lib/diary.ts +34 -0
- package/server/lib/dont-ask-again-policy.ts +41 -0
- package/server/lib/e2e-agent/artifacts.ts +36 -0
- package/server/lib/e2e-agent/contracts.ts +112 -0
- package/server/lib/e2e-agent/validation.ts +135 -0
- package/server/lib/encrypt.ts +114 -0
- package/server/lib/error.ts +20 -0
- package/server/lib/events.ts +217 -0
- package/server/lib/feature-flags.ts +93 -0
- package/server/lib/hot.ts +357 -0
- package/server/lib/human-action-summary.ts +80 -0
- package/server/lib/key-fingerprint.ts +28 -0
- package/server/lib/logger.ts +340 -0
- package/server/lib/network.ts +137 -0
- package/server/lib/notifications.ts +230 -0
- package/server/lib/oauth2-refresh.ts +241 -0
- package/server/lib/oursecret.ts +71 -0
- package/server/lib/passkey-credential.ts +360 -0
- package/server/lib/passkey.ts +68 -0
- package/server/lib/permissions.ts +299 -0
- package/server/lib/pino.ts +24 -0
- package/server/lib/policy-preview.ts +138 -0
- package/server/lib/price.ts +338 -0
- package/server/lib/prices.ts +34 -0
- package/server/lib/project-scope.ts +297 -0
- package/server/lib/resolve-action.ts +328 -0
- package/server/lib/resolve.ts +36 -0
- package/server/lib/secret-gist-share.ts +296 -0
- package/server/lib/sessions.ts +634 -0
- package/server/lib/socket-path.ts +56 -0
- package/server/lib/solana/connection.ts +26 -0
- package/server/lib/solana/jupiter.ts +128 -0
- package/server/lib/solana/transfer.ts +108 -0
- package/server/lib/solana/wallet.ts +136 -0
- package/server/lib/strategy/emits.ts +21 -0
- package/server/lib/strategy/engine.ts +1305 -0
- package/server/lib/strategy/executor.ts +115 -0
- package/server/lib/strategy/hook-context.ts +159 -0
- package/server/lib/strategy/hooks.ts +990 -0
- package/server/lib/strategy/index.ts +28 -0
- package/server/lib/strategy/installer.ts +305 -0
- package/server/lib/strategy/loader.ts +256 -0
- package/server/lib/strategy/message.ts +237 -0
- package/server/lib/strategy/repository.ts +218 -0
- package/server/lib/strategy/session-logger.ts +693 -0
- package/server/lib/strategy/sources.ts +288 -0
- package/server/lib/strategy/state.ts +189 -0
- package/server/lib/strategy/templates.ts +403 -0
- package/server/lib/strategy/tick.ts +404 -0
- package/server/lib/strategy/types.ts +230 -0
- package/server/lib/swap.ts +3 -0
- package/server/lib/temp.ts +86 -0
- package/server/lib/token-metadata.ts +86 -0
- package/server/lib/token-safety.ts +200 -0
- package/server/lib/token-search.ts +444 -0
- package/server/lib/totp.ts +194 -0
- package/server/lib/transactions.ts +123 -0
- package/server/lib/transport.ts +84 -0
- package/server/lib/txhistory/decoder.ts +262 -0
- package/server/lib/txhistory/enricher.ts +652 -0
- package/server/lib/txhistory/index.ts +391 -0
- package/server/lib/txhistory/signatures.ts +59 -0
- package/server/lib/update-check.ts +35 -0
- package/server/lib/verified-summary.ts +414 -0
- package/server/lib/view-registry.ts +80 -0
- package/server/mcp/profile-policy.ts +30 -0
- package/server/mcp/server.ts +1589 -0
- package/server/mcp/tools.ts +276 -0
- package/server/middleware/auth.ts +119 -0
- package/server/middleware/requestLogger.ts +84 -0
- package/server/routes/actions.ts +539 -0
- package/server/routes/adapters.ts +711 -0
- package/server/routes/addressbook.ts +113 -0
- package/server/routes/ai.ts +34 -0
- package/server/routes/apikeys.ts +343 -0
- package/server/routes/apps.ts +601 -0
- package/server/routes/auth.ts +406 -0
- package/server/routes/backup.ts +404 -0
- package/server/routes/batch.ts +270 -0
- package/server/routes/bookmarks.ts +162 -0
- package/server/routes/credential-shares.ts +380 -0
- package/server/routes/credential-vaults.ts +159 -0
- package/server/routes/credentials.ts +1782 -0
- package/server/routes/dashboard.ts +97 -0
- package/server/routes/defaults.ts +124 -0
- package/server/routes/flags.ts +11 -0
- package/server/routes/fund.ts +225 -0
- package/server/routes/heartbeat.ts +375 -0
- package/server/routes/import.ts +364 -0
- package/server/routes/launch.ts +665 -0
- package/server/routes/lock.ts +54 -0
- package/server/routes/logs.ts +68 -0
- package/server/routes/nuke.ts +111 -0
- package/server/routes/passkey-credentials.ts +99 -0
- package/server/routes/passkey.ts +366 -0
- package/server/routes/portfolio.ts +217 -0
- package/server/routes/price.ts +63 -0
- package/server/routes/resolve.ts +31 -0
- package/server/routes/security.ts +45 -0
- package/server/routes/send-evm.ts +241 -0
- package/server/routes/send-solana.ts +281 -0
- package/server/routes/send.ts +178 -0
- package/server/routes/setup.ts +210 -0
- package/server/routes/strategy.ts +894 -0
- package/server/routes/swap-evm.ts +352 -0
- package/server/routes/swap-solana.ts +176 -0
- package/server/routes/swap.ts +356 -0
- package/server/routes/token.ts +247 -0
- package/server/routes/unlock.ts +467 -0
- package/server/routes/views.ts +41 -0
- package/server/routes/wallet-assets.ts +361 -0
- package/server/routes/wallet-transactions.ts +515 -0
- package/server/routes/wallet.ts +709 -0
- package/server/types.ts +146 -0
- package/shared/credential-field-schema.ts +248 -0
- package/skills/auramaxx/HEARTBEAT.md +78 -0
- package/skills/auramaxx/SKILL.md +745 -0
- package/skills/auramaxx/docs/AGENT_SETUP.md +155 -0
- package/skills/auramaxx/docs/API.md +127 -0
- package/skills/auramaxx/docs/AUTH.md +318 -0
- package/skills/auramaxx/docs/CLI.md +130 -0
- package/skills/auramaxx/docs/MCP.md +122 -0
- package/skills/auramaxx/docs/TROUBLESHOOTING.md +357 -0
- package/skills/auramaxx/docs/WORKSPACE.md +673 -0
- package/skills/auramaxx/docs/security.md +227 -0
- package/skills/task-lifecycle/SKILL.md +378 -0
- package/src/app/api/[...doc]/page.tsx +36 -0
- package/src/app/api/agent-requests/route.ts +30 -0
- package/src/app/api/apps/install/route.ts +132 -0
- package/src/app/api/apps/manifests/route.ts +16 -0
- package/src/app/api/apps/static/[...path]/route.ts +57 -0
- package/src/app/api/docs/plain/route.ts +74 -0
- package/src/app/api/events/route.ts +92 -0
- package/src/app/api/page.tsx +290 -0
- package/src/app/api/workspace/[id]/apps/[wid]/route.ts +119 -0
- package/src/app/api/workspace/[id]/apps/route.ts +81 -0
- package/src/app/api/workspace/[id]/export/route.ts +67 -0
- package/src/app/api/workspace/[id]/route.ts +168 -0
- package/src/app/api/workspace/auth.ts +40 -0
- package/src/app/api/workspace/config/route.ts +121 -0
- package/src/app/api/workspace/import/route.ts +127 -0
- package/src/app/api/workspace/route.ts +116 -0
- package/src/app/app-legacy-do-not-use/page.tsx +2245 -0
- package/src/app/apple-icon.png +0 -0
- package/src/app/approve/[actionId]/page.tsx +409 -0
- package/src/app/docs/DocsPageContent.tsx +269 -0
- package/src/app/docs/[...doc]/page.tsx +41 -0
- package/src/app/docs/page.tsx +38 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +819 -0
- package/src/app/health/page.tsx +5 -0
- package/src/app/hello/page.tsx +102 -0
- package/src/app/icon.png +0 -0
- package/src/app/layout.tsx +39 -0
- package/src/app/page.tsx +1964 -0
- package/src/app/privacy/page.tsx +63 -0
- package/src/app/providers.tsx +87 -0
- package/src/app/share/[token]/page.tsx +295 -0
- package/src/app/terms/page.tsx +80 -0
- package/src/components/ChainSelector.tsx +44 -0
- package/src/components/HumanActionBar.tsx +697 -0
- package/src/components/NotificationDrawer.tsx +387 -0
- package/src/components/PasskeyEnrollmentPrompt.tsx +235 -0
- package/src/components/apps/AgentKeysApp.tsx +490 -0
- package/src/components/apps/App.tsx +153 -0
- package/src/components/apps/AppGrid.tsx +15 -0
- package/src/components/apps/DetailedAddressDrawer.tsx +325 -0
- package/src/components/apps/DraggableApp.tsx +562 -0
- package/src/components/apps/IFrameApp.tsx +73 -0
- package/src/components/apps/LogsApp.tsx +360 -0
- package/src/components/apps/SendApp.tsx +394 -0
- package/src/components/apps/SetupWizardApp.tsx +1004 -0
- package/src/components/apps/SystemDefaultsApp.tsx +845 -0
- package/src/components/apps/ThirdPartyApp.tsx +428 -0
- package/src/components/apps/TokenApp.tsx +319 -0
- package/src/components/apps/TransactionsApp.tsx +438 -0
- package/src/components/apps/WalletDetailApp.tsx +1505 -0
- package/src/components/apps/index.ts +13 -0
- package/src/components/design-system/Button.tsx +88 -0
- package/src/components/design-system/ChainIndicator.tsx +65 -0
- package/src/components/design-system/ChainSelector.tsx +147 -0
- package/src/components/design-system/ConfirmationModal.tsx +107 -0
- package/src/components/design-system/ConfirmationPopover.tsx +81 -0
- package/src/components/design-system/DownloadButton.tsx +149 -0
- package/src/components/design-system/Drawer.tsx +133 -0
- package/src/components/design-system/FilterDropdown.tsx +183 -0
- package/src/components/design-system/ItemPicker.tsx +157 -0
- package/src/components/design-system/Modal.tsx +296 -0
- package/src/components/design-system/Popover.tsx +142 -0
- package/src/components/design-system/TextInput.tsx +85 -0
- package/src/components/design-system/Toggle.tsx +65 -0
- package/src/components/design-system/TyvekCollapsibleSection.tsx +55 -0
- package/src/components/design-system/index.ts +14 -0
- package/src/components/docs/ClientSideMarkdown.tsx +51 -0
- package/src/components/docs/DocsSearchBar.tsx +118 -0
- package/src/components/docs/DocsThemeToggle.tsx +38 -0
- package/src/components/docs/PersistentDocGroup.tsx +91 -0
- package/src/components/docs/ShareUrlButton.tsx +33 -0
- package/src/components/docs/SidebarScrollMemory.tsx +56 -0
- package/src/components/health/CredentialHealthDashboard.tsx +214 -0
- package/src/components/icons/ChainIcons.tsx +72 -0
- package/src/components/layout/AppStoreDrawer.tsx +369 -0
- package/src/components/layout/ContentArea.tsx +21 -0
- package/src/components/layout/CreateViewModal.tsx +88 -0
- package/src/components/layout/LeftRail.tsx +114 -0
- package/src/components/layout/TabBar.tsx +284 -0
- package/src/components/layout/WalletSidebar.tsx +1030 -0
- package/src/components/layout/index.ts +6 -0
- package/src/components/marketing/AuraMaxxSpecOverlay.tsx +653 -0
- package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
- package/src/components/vault/ApiKeysConsole.tsx +1272 -0
- package/src/components/vault/AuditConsole.tsx +600 -0
- package/src/components/vault/CredentialDetail.tsx +625 -0
- package/src/components/vault/CredentialEmpty.tsx +55 -0
- package/src/components/vault/CredentialField.tsx +583 -0
- package/src/components/vault/CredentialForm.tsx +1484 -0
- package/src/components/vault/CredentialList.tsx +265 -0
- package/src/components/vault/CredentialRow.tsx +130 -0
- package/src/components/vault/CredentialShareModal.tsx +273 -0
- package/src/components/vault/CredentialVault.tsx +1662 -0
- package/src/components/vault/CredentialWalletWidget.tsx +103 -0
- package/src/components/vault/DocsConsole.tsx +113 -0
- package/src/components/vault/ImportCredentialsModal.tsx +578 -0
- package/src/components/vault/LargeTypeModal.tsx +88 -0
- package/src/components/vault/PasswordGenerator.tsx +232 -0
- package/src/components/vault/TOTPDisplay.tsx +108 -0
- package/src/components/vault/TotpSetupPanel.tsx +198 -0
- package/src/components/vault/VaultSidebar.tsx +881 -0
- package/src/components/vault/credentialFormName.ts +91 -0
- package/src/components/vault/hooks/useVaultKeyboardShortcuts.ts +69 -0
- package/src/components/vault/types.ts +56 -0
- package/src/context/AuthContext.tsx +365 -0
- package/src/context/PriceContext.tsx +113 -0
- package/src/context/ThemeContext.tsx +164 -0
- package/src/context/WebSocketContext.tsx +269 -0
- package/src/context/WorkspaceContext.tsx +668 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useAgentActions.ts +552 -0
- package/src/hooks/useBalance.ts +103 -0
- package/src/hooks/useBalances.ts +129 -0
- package/src/hooks/useTheme.ts +156 -0
- package/src/instrumentation.ts +12 -0
- package/src/lib/api-docs.ts +154 -0
- package/src/lib/api.ts +474 -0
- package/src/lib/app-loader.ts +148 -0
- package/src/lib/app-registry.ts +178 -0
- package/src/lib/app-sdk.ts +157 -0
- package/src/lib/audit-console-adapter.ts +151 -0
- package/src/lib/auth-client.ts +75 -0
- package/src/lib/config.ts +74 -0
- package/src/lib/credential-field-schema.ts +11 -0
- package/src/lib/crypto.ts +112 -0
- package/src/lib/db.ts +21 -0
- package/src/lib/docs.ts +544 -0
- package/src/lib/events.ts +363 -0
- package/src/lib/pino.ts +24 -0
- package/src/lib/theme-handlers.ts +168 -0
- package/src/lib/theme.ts +351 -0
- package/src/lib/tokenData.ts +378 -0
- package/src/lib/totp-import.ts +57 -0
- package/src/lib/vault-crypto.ts +129 -0
- package/src/lib/view-registry.ts +57 -0
- package/src/lib/websocket-server.ts +302 -0
- package/src/lib/websocket-setup.ts +79 -0
- package/src/lib/wordlist.ts +2050 -0
- package/src/lib/workspace-handlers.ts +285 -0
- package/start.sh +170 -0
- package/tailwind.config.ts +99 -0
- package/tsconfig.json +42 -0
package/server/types.ts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
export type WalletTier = 'cold' | 'hot' | 'temp';
|
|
2
|
+
|
|
3
|
+
export interface WalletInfo {
|
|
4
|
+
address: string;
|
|
5
|
+
tier: WalletTier;
|
|
6
|
+
chain: string;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
color?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
emoji?: string;
|
|
12
|
+
tokenHash?: string;
|
|
13
|
+
balance?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface EncryptedData {
|
|
17
|
+
ciphertext: string;
|
|
18
|
+
iv: string;
|
|
19
|
+
salt: string;
|
|
20
|
+
mac: string; // AEAD auth tag (legacy key name kept for envelope compatibility)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Limit value: plain number (single-currency, backward compat) or address-keyed (multi-currency) */
|
|
24
|
+
export type LimitValue = number | Record<string, number>;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Agent token payload - issued to AI agents with specific permissions and limits
|
|
28
|
+
*/
|
|
29
|
+
export interface AgentTokenPayload {
|
|
30
|
+
agentId: string;
|
|
31
|
+
permissions: string[]; // Route permissions (e.g., 'wallet:list', 'send:hot')
|
|
32
|
+
exp: number; // Expiry timestamp (ms)
|
|
33
|
+
|
|
34
|
+
// Per-permission limits (optional, in native currency units)
|
|
35
|
+
// Plain number = legacy single-currency limit
|
|
36
|
+
// Record<string, number> = address-keyed multi-currency limit
|
|
37
|
+
// e.g. { "0x0000...0000": 1.0, "So111...112": 10.0 }
|
|
38
|
+
limits?: {
|
|
39
|
+
fund?: LimitValue;
|
|
40
|
+
send?: LimitValue;
|
|
41
|
+
swap?: LimitValue;
|
|
42
|
+
launch?: LimitValue;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// Wallet access grants (access existing wallets not created by this token)
|
|
46
|
+
walletAccess?: string[]; // Array of wallet addresses
|
|
47
|
+
|
|
48
|
+
// Token issued-at timestamp (ms) — used for credential TTL calculations
|
|
49
|
+
iat?: number;
|
|
50
|
+
|
|
51
|
+
// Credential vault access grants
|
|
52
|
+
credentialAccess?: {
|
|
53
|
+
read?: string[]; // Scopes for reading credentials (e.g., ["*"], ["tag:api"], ["cred-abc123"])
|
|
54
|
+
write?: string[]; // Scopes for writing credentials
|
|
55
|
+
excludeFields?: string[]; // Fields to exclude from reads (e.g., ["password", "cvv"])
|
|
56
|
+
ttl?: number; // Max seconds from iat this token can read credentials
|
|
57
|
+
maxReads?: number; // Max number of credential read operations
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Agent's public key (for future E2E encryption)
|
|
61
|
+
agentPubkey?: string;
|
|
62
|
+
|
|
63
|
+
// Legacy compatibility
|
|
64
|
+
limit?: number; // Legacy: Max spend in ETH (maps to limits.fund)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Token payload type (admin tokens are just AgentTokenPayload with admin:* permission)
|
|
69
|
+
*/
|
|
70
|
+
export type TokenPayload = AgentTokenPayload;
|
|
71
|
+
|
|
72
|
+
/** Spent value: plain number (single-currency) or address-keyed (multi-currency) */
|
|
73
|
+
export type SpentValue = number | Record<string, number>;
|
|
74
|
+
|
|
75
|
+
export interface TokenSession {
|
|
76
|
+
token: AgentTokenPayload;
|
|
77
|
+
spent: number;
|
|
78
|
+
// Per-permission spending tracking
|
|
79
|
+
// Plain number = legacy single-currency tracking
|
|
80
|
+
// Record<string, number> = address-keyed multi-currency tracking
|
|
81
|
+
spentByType?: {
|
|
82
|
+
fund?: SpentValue;
|
|
83
|
+
send?: SpentValue;
|
|
84
|
+
swap?: SpentValue;
|
|
85
|
+
launch?: SpentValue;
|
|
86
|
+
};
|
|
87
|
+
// Credential vault access tracking
|
|
88
|
+
credentialReads?: number;
|
|
89
|
+
tokenIssuedAt?: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface HumanAction {
|
|
93
|
+
id: string;
|
|
94
|
+
type: 'fund' | 'send' | 'agent_access' | 'auth' | 'permission_update' | 'action' | 'notify';
|
|
95
|
+
fromTier: WalletTier | 'system';
|
|
96
|
+
toAddress?: string;
|
|
97
|
+
amount?: string;
|
|
98
|
+
chain: string;
|
|
99
|
+
status: 'pending' | 'approved' | 'rejected' | 'acknowledged';
|
|
100
|
+
createdAt: string;
|
|
101
|
+
resolvedAt?: string;
|
|
102
|
+
metadata?: Record<string, unknown>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface SendRequest {
|
|
106
|
+
from: string;
|
|
107
|
+
to: string;
|
|
108
|
+
amount: string;
|
|
109
|
+
chain?: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface CreateWalletRequest {
|
|
113
|
+
tier: 'hot' | 'temp';
|
|
114
|
+
chain?: string;
|
|
115
|
+
label?: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface FundRequest {
|
|
119
|
+
toHotAddress: string;
|
|
120
|
+
amount: string;
|
|
121
|
+
chain?: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// ─── Credential Vault Types ──────────────────────────────────────────
|
|
125
|
+
|
|
126
|
+
export type CredentialType = 'login' | 'card' | 'note' | 'plain_note' | 'hot_wallet' | 'api' | 'apikey' | 'custom' | 'passkey' | 'oauth2' | 'ssh' | 'gpg';
|
|
127
|
+
|
|
128
|
+
export interface CredentialField {
|
|
129
|
+
key: string;
|
|
130
|
+
value: string;
|
|
131
|
+
type: 'text' | 'secret' | 'url' | 'email' | 'number';
|
|
132
|
+
sensitive: boolean;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface CredentialFile {
|
|
136
|
+
id: string;
|
|
137
|
+
vaultId: string;
|
|
138
|
+
type: CredentialType;
|
|
139
|
+
name: string;
|
|
140
|
+
meta: Record<string, unknown>;
|
|
141
|
+
encrypted: EncryptedData;
|
|
142
|
+
createdAt: string;
|
|
143
|
+
updatedAt: string;
|
|
144
|
+
archivedAt?: string;
|
|
145
|
+
deletedAt?: string;
|
|
146
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
export type CredentialFieldType = 'text' | 'secret' | 'url' | 'email' | 'number';
|
|
2
|
+
|
|
3
|
+
export type CredentialType =
|
|
4
|
+
| 'login'
|
|
5
|
+
| 'card'
|
|
6
|
+
| 'note'
|
|
7
|
+
| 'plain_note'
|
|
8
|
+
| 'hot_wallet'
|
|
9
|
+
| 'api'
|
|
10
|
+
| 'apikey'
|
|
11
|
+
| 'custom'
|
|
12
|
+
| 'passkey'
|
|
13
|
+
| 'oauth2'
|
|
14
|
+
| 'ssh'
|
|
15
|
+
| 'gpg';
|
|
16
|
+
|
|
17
|
+
export interface CredentialFieldSpec {
|
|
18
|
+
key: string;
|
|
19
|
+
label: string;
|
|
20
|
+
type: CredentialFieldType;
|
|
21
|
+
sensitive: boolean;
|
|
22
|
+
requiredOnCreate?: boolean;
|
|
23
|
+
aliases?: string[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type FieldSchemaMap = Record<CredentialType, CredentialFieldSpec[]>;
|
|
27
|
+
|
|
28
|
+
export const CREDENTIAL_FIELD_KEYS = {
|
|
29
|
+
login: {
|
|
30
|
+
url: 'url',
|
|
31
|
+
username: 'username',
|
|
32
|
+
password: 'password',
|
|
33
|
+
notes: 'notes',
|
|
34
|
+
totp: 'totp',
|
|
35
|
+
},
|
|
36
|
+
card: {
|
|
37
|
+
cardholder: 'cardholder',
|
|
38
|
+
brand: 'brand',
|
|
39
|
+
billingZip: 'billing_zip',
|
|
40
|
+
last4: 'last4',
|
|
41
|
+
number: 'number',
|
|
42
|
+
cvv: 'cvv',
|
|
43
|
+
expiry: 'expiry',
|
|
44
|
+
notes: 'notes',
|
|
45
|
+
},
|
|
46
|
+
note: {
|
|
47
|
+
content: 'content',
|
|
48
|
+
},
|
|
49
|
+
plain_note: {
|
|
50
|
+
content: 'content',
|
|
51
|
+
},
|
|
52
|
+
hot_wallet: {
|
|
53
|
+
address: 'address',
|
|
54
|
+
privateKey: 'private_key',
|
|
55
|
+
chain: 'chain',
|
|
56
|
+
},
|
|
57
|
+
apikey: {
|
|
58
|
+
key: 'key',
|
|
59
|
+
value: 'value',
|
|
60
|
+
},
|
|
61
|
+
oauth2: {
|
|
62
|
+
accessToken: 'access_token',
|
|
63
|
+
refreshToken: 'refresh_token',
|
|
64
|
+
clientId: 'client_id',
|
|
65
|
+
clientSecret: 'client_secret',
|
|
66
|
+
tokenEndpoint: 'token_endpoint',
|
|
67
|
+
scopes: 'scopes',
|
|
68
|
+
authMethod: 'auth_method',
|
|
69
|
+
expiresAt: 'expires_at',
|
|
70
|
+
},
|
|
71
|
+
ssh: {
|
|
72
|
+
privateKey: 'private_key',
|
|
73
|
+
passphrase: 'passphrase',
|
|
74
|
+
publicKey: 'public_key',
|
|
75
|
+
fingerprint: 'fingerprint',
|
|
76
|
+
keyType: 'key_type',
|
|
77
|
+
hosts: 'hosts',
|
|
78
|
+
},
|
|
79
|
+
gpg: {
|
|
80
|
+
privateKey: 'private_key',
|
|
81
|
+
publicKey: 'public_key',
|
|
82
|
+
fingerprint: 'fingerprint',
|
|
83
|
+
keyId: 'key_id',
|
|
84
|
+
uidEmail: 'uid_email',
|
|
85
|
+
expiresAt: 'expires_at',
|
|
86
|
+
},
|
|
87
|
+
custom: {
|
|
88
|
+
value: 'value',
|
|
89
|
+
},
|
|
90
|
+
} as const;
|
|
91
|
+
|
|
92
|
+
export const CREDENTIAL_FIELD_SCHEMA: FieldSchemaMap = {
|
|
93
|
+
login: [
|
|
94
|
+
{ key: CREDENTIAL_FIELD_KEYS.login.url, label: 'URL', type: 'text', sensitive: false },
|
|
95
|
+
{ key: CREDENTIAL_FIELD_KEYS.login.username, label: 'Username', type: 'text', sensitive: false, requiredOnCreate: true },
|
|
96
|
+
{ key: CREDENTIAL_FIELD_KEYS.login.password, label: 'Password', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
97
|
+
{ key: CREDENTIAL_FIELD_KEYS.login.notes, label: 'Notes', type: 'text', sensitive: true },
|
|
98
|
+
{ key: CREDENTIAL_FIELD_KEYS.login.totp, label: 'TOTP', type: 'secret', sensitive: true, aliases: ['otp'] },
|
|
99
|
+
],
|
|
100
|
+
card: [
|
|
101
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.cardholder, label: 'Cardholder', type: 'text', sensitive: false, requiredOnCreate: true },
|
|
102
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.brand, label: 'Brand', type: 'text', sensitive: false },
|
|
103
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.billingZip, label: 'Billing ZIP', type: 'text', sensitive: false },
|
|
104
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.last4, label: 'Last 4', type: 'text', sensitive: false },
|
|
105
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.number, label: 'Number', type: 'text', sensitive: true, requiredOnCreate: true },
|
|
106
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.cvv, label: 'CVV', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
107
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.expiry, label: 'Expiry', type: 'text', sensitive: true, requiredOnCreate: true },
|
|
108
|
+
{ key: CREDENTIAL_FIELD_KEYS.card.notes, label: 'Notes', type: 'text', sensitive: true },
|
|
109
|
+
],
|
|
110
|
+
note: [
|
|
111
|
+
{ key: CREDENTIAL_FIELD_KEYS.note.content, label: 'Content', type: 'text', sensitive: true, requiredOnCreate: true, aliases: ['value'] },
|
|
112
|
+
],
|
|
113
|
+
plain_note: [
|
|
114
|
+
{ key: CREDENTIAL_FIELD_KEYS.plain_note.content, label: 'Content', type: 'text', sensitive: false, requiredOnCreate: true, aliases: ['value'] },
|
|
115
|
+
],
|
|
116
|
+
hot_wallet: [
|
|
117
|
+
{ key: CREDENTIAL_FIELD_KEYS.hot_wallet.address, label: 'Address', type: 'text', sensitive: false, requiredOnCreate: true },
|
|
118
|
+
{ key: CREDENTIAL_FIELD_KEYS.hot_wallet.chain, label: 'Chain', type: 'text', sensitive: false, requiredOnCreate: true },
|
|
119
|
+
{ key: CREDENTIAL_FIELD_KEYS.hot_wallet.privateKey, label: 'Private Key', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
120
|
+
],
|
|
121
|
+
api: [],
|
|
122
|
+
apikey: [
|
|
123
|
+
{ key: CREDENTIAL_FIELD_KEYS.apikey.key, label: 'Key', type: 'text', sensitive: false, requiredOnCreate: true },
|
|
124
|
+
{ key: CREDENTIAL_FIELD_KEYS.apikey.value, label: 'Value', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
125
|
+
],
|
|
126
|
+
custom: [],
|
|
127
|
+
passkey: [],
|
|
128
|
+
oauth2: [
|
|
129
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.tokenEndpoint, label: 'Token Endpoint', type: 'url', sensitive: false, requiredOnCreate: true },
|
|
130
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.scopes, label: 'Scopes', type: 'text', sensitive: false },
|
|
131
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.authMethod, label: 'Auth Method', type: 'text', sensitive: false },
|
|
132
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.expiresAt, label: 'Expires At', type: 'number', sensitive: false, requiredOnCreate: true },
|
|
133
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.accessToken, label: 'Access Token', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
134
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.refreshToken, label: 'Refresh Token', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
135
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.clientId, label: 'Client ID', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
136
|
+
{ key: CREDENTIAL_FIELD_KEYS.oauth2.clientSecret, label: 'Client Secret', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
137
|
+
],
|
|
138
|
+
ssh: [
|
|
139
|
+
{ key: CREDENTIAL_FIELD_KEYS.ssh.fingerprint, label: 'Fingerprint', type: 'text', sensitive: false },
|
|
140
|
+
{ key: CREDENTIAL_FIELD_KEYS.ssh.keyType, label: 'Key Type', type: 'text', sensitive: false },
|
|
141
|
+
{ key: CREDENTIAL_FIELD_KEYS.ssh.hosts, label: 'Hosts', type: 'text', sensitive: false },
|
|
142
|
+
{ key: CREDENTIAL_FIELD_KEYS.ssh.privateKey, label: 'Private Key', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
143
|
+
{ key: CREDENTIAL_FIELD_KEYS.ssh.passphrase, label: 'Passphrase', type: 'secret', sensitive: true },
|
|
144
|
+
{ key: CREDENTIAL_FIELD_KEYS.ssh.publicKey, label: 'Public Key', type: 'text', sensitive: false },
|
|
145
|
+
],
|
|
146
|
+
gpg: [
|
|
147
|
+
{ key: CREDENTIAL_FIELD_KEYS.gpg.fingerprint, label: 'Fingerprint', type: 'text', sensitive: false },
|
|
148
|
+
{ key: CREDENTIAL_FIELD_KEYS.gpg.keyId, label: 'Key ID', type: 'text', sensitive: false },
|
|
149
|
+
{ key: CREDENTIAL_FIELD_KEYS.gpg.uidEmail, label: 'UID Email', type: 'email', sensitive: false },
|
|
150
|
+
{ key: CREDENTIAL_FIELD_KEYS.gpg.expiresAt, label: 'Expires At', type: 'text', sensitive: false },
|
|
151
|
+
{ key: CREDENTIAL_FIELD_KEYS.gpg.privateKey, label: 'Private Key', type: 'secret', sensitive: true, requiredOnCreate: true },
|
|
152
|
+
{ key: CREDENTIAL_FIELD_KEYS.gpg.publicKey, label: 'Public Key', type: 'text', sensitive: false },
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export const NOTE_CONTENT_KEY = CREDENTIAL_FIELD_KEYS.note.content;
|
|
157
|
+
|
|
158
|
+
export const CREDENTIAL_PRIMARY_FIELD_KEY: Record<CredentialType, string> = {
|
|
159
|
+
login: CREDENTIAL_FIELD_KEYS.login.password,
|
|
160
|
+
card: CREDENTIAL_FIELD_KEYS.card.number,
|
|
161
|
+
note: CREDENTIAL_FIELD_KEYS.note.content,
|
|
162
|
+
plain_note: CREDENTIAL_FIELD_KEYS.plain_note.content,
|
|
163
|
+
hot_wallet: CREDENTIAL_FIELD_KEYS.hot_wallet.privateKey,
|
|
164
|
+
api: CREDENTIAL_FIELD_KEYS.apikey.value,
|
|
165
|
+
apikey: CREDENTIAL_FIELD_KEYS.apikey.value,
|
|
166
|
+
custom: CREDENTIAL_FIELD_KEYS.custom.value,
|
|
167
|
+
passkey: CREDENTIAL_FIELD_KEYS.ssh.privateKey,
|
|
168
|
+
oauth2: CREDENTIAL_FIELD_KEYS.oauth2.accessToken,
|
|
169
|
+
ssh: CREDENTIAL_FIELD_KEYS.ssh.privateKey,
|
|
170
|
+
gpg: CREDENTIAL_FIELD_KEYS.gpg.privateKey,
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
export function getCredentialPrimaryFieldKey(type: string): string {
|
|
174
|
+
if (!isCredentialType(type)) return 'value';
|
|
175
|
+
return CREDENTIAL_PRIMARY_FIELD_KEY[type] || 'value';
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export function getCredentialPrimaryFieldSpec(type: string): CredentialFieldSpec | undefined {
|
|
179
|
+
if (!isCredentialType(type)) return undefined;
|
|
180
|
+
const primaryKey = getCredentialPrimaryFieldKey(type);
|
|
181
|
+
return CREDENTIAL_FIELD_SCHEMA[type].find((field) => field.key === primaryKey);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
type CredentialFieldLike = { key: string };
|
|
185
|
+
|
|
186
|
+
const SCHEMA_KEY_LOOKUP = Object.fromEntries(
|
|
187
|
+
(Object.entries(CREDENTIAL_FIELD_SCHEMA) as Array<[CredentialType, CredentialFieldSpec[]]>).map(([type, fields]) => {
|
|
188
|
+
const lookup = new Map<string, string>();
|
|
189
|
+
for (const field of fields) {
|
|
190
|
+
lookup.set(field.key.toLowerCase(), field.key);
|
|
191
|
+
for (const alias of field.aliases || []) {
|
|
192
|
+
lookup.set(alias.toLowerCase(), field.key);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return [type, lookup];
|
|
196
|
+
}),
|
|
197
|
+
) as Record<CredentialType, Map<string, string>>;
|
|
198
|
+
|
|
199
|
+
function isCredentialType(value: string): value is CredentialType {
|
|
200
|
+
return Object.prototype.hasOwnProperty.call(CREDENTIAL_FIELD_SCHEMA, value);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export function canonicalizeCredentialFieldKey(type: string, key: string): string {
|
|
204
|
+
const trimmed = key.trim();
|
|
205
|
+
if (!trimmed) return trimmed;
|
|
206
|
+
if (!isCredentialType(type)) return trimmed;
|
|
207
|
+
|
|
208
|
+
const canonical = SCHEMA_KEY_LOOKUP[type].get(trimmed.toLowerCase());
|
|
209
|
+
return canonical || trimmed;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export function normalizeCredentialFieldsForType<T extends CredentialFieldLike>(
|
|
213
|
+
type: string,
|
|
214
|
+
fields: readonly T[],
|
|
215
|
+
): T[] {
|
|
216
|
+
if (!Array.isArray(fields) || fields.length === 0) return [];
|
|
217
|
+
|
|
218
|
+
const normalized: T[] = [];
|
|
219
|
+
const indexByKey = new Map<string, number>();
|
|
220
|
+
|
|
221
|
+
for (const field of fields) {
|
|
222
|
+
const canonicalKey = canonicalizeCredentialFieldKey(type, field.key);
|
|
223
|
+
const normalizedField = canonicalKey === field.key
|
|
224
|
+
? field
|
|
225
|
+
: ({ ...field, key: canonicalKey } as T);
|
|
226
|
+
const existingIndex = indexByKey.get(canonicalKey);
|
|
227
|
+
|
|
228
|
+
if (existingIndex === undefined) {
|
|
229
|
+
indexByKey.set(canonicalKey, normalized.length);
|
|
230
|
+
normalized.push(normalizedField);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
normalized[existingIndex] = normalizedField;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
return normalized;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export function getCredentialFieldValue(
|
|
241
|
+
type: string,
|
|
242
|
+
fields: Array<{ key: string; value: string }>,
|
|
243
|
+
key: string,
|
|
244
|
+
): string | undefined {
|
|
245
|
+
const normalized = normalizeCredentialFieldsForType(type, fields);
|
|
246
|
+
const canonicalKey = canonicalizeCredentialFieldKey(type, key);
|
|
247
|
+
return normalized.find((field) => field.key === canonicalKey)?.value;
|
|
248
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# AuraMaxx Heartbeat
|
|
2
|
+
|
|
3
|
+
This runs periodically, but you can check in anytime you want.
|
|
4
|
+
|
|
5
|
+
## Heartbeat Routine
|
|
6
|
+
|
|
7
|
+
1. Check what changed:
|
|
8
|
+
- MCP: `api { method: "GET", endpoint: "/what_is_happening" }`
|
|
9
|
+
- CLI: `curl http://localhost:4242/what_is_happening`
|
|
10
|
+
- Strategy engine: `wallet_api { method: "GET", endpoint: "/what_is_happening" }`
|
|
11
|
+
- Optional query params: `?since=<last_check_timestamp_ms>` and/or `&agentId=<your_agent_id>`
|
|
12
|
+
|
|
13
|
+
2. Review response in this order:
|
|
14
|
+
- `highlights`
|
|
15
|
+
- `humanActions`
|
|
16
|
+
- `recentEvents`
|
|
17
|
+
- `syncHealth`
|
|
18
|
+
|
|
19
|
+
3. Decide if human attention is needed:
|
|
20
|
+
- Pending approvals that block work
|
|
21
|
+
- Rejections that need a plan change
|
|
22
|
+
- Sync errors that keep repeating
|
|
23
|
+
- Security-sensitive credential activity that looks wrong
|
|
24
|
+
|
|
25
|
+
4. Write a diary entry:
|
|
26
|
+
- Preferred: call `write_diary` with a compact summary of what you observed and what you did.
|
|
27
|
+
- CLI fallback: `npx auramaxx diary write --entry "..." [--date YYYY-MM-DD]`.
|
|
28
|
+
- Do not call raw unauthenticated `POST /what_is_happening/diary`.
|
|
29
|
+
- If diary write fails with auth/approval issues, ask the human to open the approval link and approve, then retry once.
|
|
30
|
+
- Diary note naming is `{YYYY-MM-DD}_LOGS` (UTC day).
|
|
31
|
+
- Use plain facts. Include counts and IDs when possible.
|
|
32
|
+
|
|
33
|
+
5. Save your next cursor:
|
|
34
|
+
- Store current timestamp as your next `since` bookmark.
|
|
35
|
+
|
|
36
|
+
## Ask Yourself
|
|
37
|
+
|
|
38
|
+
- Did anything urgent appear?
|
|
39
|
+
- Is there a blocked request waiting for a human?
|
|
40
|
+
- Were any secrets accessed or changed? Which ones, by whom?
|
|
41
|
+
- If no secrets were touched — has it been 12+ hours since you last told your human?
|
|
42
|
+
- Is sync healthy across chains?
|
|
43
|
+
|
|
44
|
+
## When To Tell Your Human
|
|
45
|
+
|
|
46
|
+
**Always update your human.** Even if nothing happened, they should know you're watching.
|
|
47
|
+
|
|
48
|
+
Tell your human immediately when:
|
|
49
|
+
- Action is blocked on approval
|
|
50
|
+
- A sync status is failing or degraded
|
|
51
|
+
- A rejection changes your plan
|
|
52
|
+
- Sensitive credential access/change looks unexpected
|
|
53
|
+
- Any credential was read or modified since last check
|
|
54
|
+
|
|
55
|
+
Tell your human every ~12 hours even if nothing happened:
|
|
56
|
+
- No secrets were accessed, no actions pending, sync healthy
|
|
57
|
+
- Keep it short and brainrot — you're busy auramaxxing and didn't need any secrets
|
|
58
|
+
- Example: "been auramaxxing all day, vault is chilling, zero secrets touched, sync green across the board"
|
|
59
|
+
|
|
60
|
+
## Response Format
|
|
61
|
+
|
|
62
|
+
<response_format>
|
|
63
|
+
If everything is fine and no follow-up is needed:
|
|
64
|
+
HEARTBEAT_OK: [what you checked] [secrets accessed or "no secrets touched"] [sync status] [diary entry written]
|
|
65
|
+
|
|
66
|
+
If follow-up is needed:
|
|
67
|
+
FOLLOWUP_NEEDED: [short issue] [why it matters] [exact human action needed]
|
|
68
|
+
|
|
69
|
+
If nothing happened and it's been ~12h since last human update:
|
|
70
|
+
HEARTBEAT_VIBES: [brainrot status update] [vault status] [diary entry written]
|
|
71
|
+
</response_format>
|
|
72
|
+
|
|
73
|
+
## Examples
|
|
74
|
+
|
|
75
|
+
- `HEARTBEAT_OK: checked /what_is_happening since last run; agent xyz read 'deploy-key' at 14:30 UTC; 1 pending, sync healthy; diary entry written for 2026-02-18`
|
|
76
|
+
- `HEARTBEAT_OK: checked /what_is_happening; no secrets touched, 0 pending, sync green; diary entry written for 2026-02-18`
|
|
77
|
+
- `FOLLOWUP_NEEDED: 2 pending fund approvals >30m old; execution is blocked; please approve/reject requests in dashboard`
|
|
78
|
+
- `HEARTBEAT_VIBES: been auramaxxing all day no cap, vault is untouched, zero secrets needed, all chains synced and vibing; diary entry written for 2026-02-18`
|