Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,21 @@ packages/wallet/src/__tests__/find-txs.mts
# Claude
CLAUDE.md
.claude/

# Supabase CLI scratch state — NEVER commit, this repo is PUBLIC.
# `.temp/project-ref` and `.temp/pooler-url` identify the production database
# project and its connection host. Not credentials (no password is stored), but
# they tell anyone reading the repo exactly where the database lives.
supabase/.temp/

# Internal engineering notes — NEVER commit, this repo is PUBLIC.
# These describe the PRIVATE agentaos-platform repo: branch names, guard and
# endpoint internals, dashboard source line numbers, and internal deliberation
# about breaking integrators. No credentials, but none of it is ours to publish.
# Their home is the private platform repo's implementation/ directory.
/implementation/
/API-V2-COMPAT-AND-SDK-PLAN.md

# Stray copies of the build output. `bin` in package.json points at
# ./dist/index.js and `files` publishes only dist/ — nothing references bin/.
packages/wallet/bin/
46 changes: 23 additions & 23 deletions packages/mpc-wasm/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 1 addition & 10 deletions packages/wallet/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "agentaos",
"version": "2.0.0",
"description": "AgentaOS CLI + MCP server for threshold signing. The key never exists.",
"description": "AgentaOS \u2014 CLI + MCP server for threshold signing. The key never exists.",
"license": "Apache-2.0",
"author": "AgentaOS <hello@agentaos.ai>",
"repository": {
Expand Down Expand Up @@ -33,20 +33,11 @@
"clean": "rm -rf dist"
},
"dependencies": {
"@agentaos/core": "workspace:*",
"@agentaos/engine": "workspace:*",
"@agentaos/pay": "workspace:^",
"@agentaos/sdk": "workspace:*",
"@inquirer/prompts": "^8.2.1",
"@modelcontextprotocol/sdk": "^1.12.0",
"@noble/hashes": "^1.7.1",
"@scure/bip39": "^2.0.1",
"@x402/core": "^2.2.0",
"@x402/evm": "^2.2.0",
"chalk": "^5.3.0",
"commander": "^12.1.0",
"ora": "^8.1.0",
"viem": "^2.21.0",
"zod": "^3.24.0"
},
"devDependencies": {
Expand Down
70 changes: 30 additions & 40 deletions packages/wallet/src/__tests__/mcp-server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,11 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';

/** Merchant tools only. The agent sub-account surface (MPC signers, on-chain
* sends, contract calls, message signing, the signing audit log and x402) was
* removed as wallet-era legacy — this list is the assertion that it stays
* removed, so a stray re-registration fails here rather than shipping. */
const EXPECTED_TOOLS = [
// Discovery
'agenta_wallet_overview',
'agenta_list_networks',
'agenta_list_signers',
'agenta_resolve_address',
// Common operations
'agenta_send_eth',
'agenta_send_token',
'agenta_get_balances',
// Advanced
'agenta_call_contract',
'agenta_read_contract',
'agenta_execute',
'agenta_simulate',
// Signing
'agenta_sign_message',
'agenta_sign_typed_data',
// Management
'agenta_get_status',
'agenta_get_audit_log',
// x402
'agenta_x402_check',
'agenta_x402_discover',
'agenta_x402_fetch',
// Merchant payments
'agenta_pay_create_checkout',
'agenta_pay_get_checkout',
'agenta_pay_list_checkouts',
Expand Down Expand Up @@ -82,23 +61,34 @@ describe('AgentaOS Terminal MCP Server', () => {
}
});

it('x402 tools have correct input schema', async () => {
// The removal is the point, so assert it directly: anything needing key
// material must not come back, because this server no longer holds any.
it('exposes no wallet, signing or x402 tools', async () => {
const { tools } = await client.listTools();
const names = tools.map((t) => t.name);

const check = tools.find((t) => t.name === 'agenta_x402_check');
expect(check).toBeDefined();
const checkProps = check!.inputSchema.properties as Record<string, unknown>;
expect(checkProps).toHaveProperty('url');

const discover = tools.find((t) => t.name === 'agenta_x402_discover');
expect(discover).toBeDefined();
const discoverProps = discover!.inputSchema.properties as Record<string, unknown>;
expect(discoverProps).toHaveProperty('domain');
for (const gone of [
'agenta_wallet_overview',
'agenta_list_signers',
'agenta_send_eth',
'agenta_send_token',
'agenta_call_contract',
'agenta_execute',
'agenta_sign_message',
'agenta_sign_typed_data',
'agenta_get_audit_log',
'agenta_x402_check',
'agenta_x402_discover',
'agenta_x402_fetch',
]) {
expect(names).not.toContain(gone);
}
});

const fetchTool = tools.find((t) => t.name === 'agenta_x402_fetch');
expect(fetchTool).toBeDefined();
const fetchProps = fetchTool!.inputSchema.properties as Record<string, unknown>;
expect(fetchProps).toHaveProperty('url');
expect(fetchProps).toHaveProperty('maxAmount');
it('every tool is a merchant payment tool', async () => {
const { tools } = await client.listTools();
for (const tool of tools) {
expect(tool.name).toMatch(/^agenta_pay_/);
}
});
});
99 changes: 0 additions & 99 deletions packages/wallet/src/__tests__/x402-client.test.ts

This file was deleted.

89 changes: 0 additions & 89 deletions packages/wallet/src/__tests__/x402-live.integration.test.ts

This file was deleted.

Loading
Loading