cryptoclaw 1.0.4 → 1.0.5

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 (31) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/dist/entry.js +0 -0
  4. package/dist/index.js +0 -0
  5. package/dist/plugin-sdk/index.d.ts +31 -31
  6. package/extensions/blockchain/index.ts +1 -0
  7. package/extensions/blockchain/node_modules/.bin/cryptoclaw +0 -0
  8. package/extensions/blockchain/node_modules/.bin/tsc +0 -0
  9. package/extensions/blockchain/node_modules/.bin/tsserver +0 -0
  10. package/extensions/blockchain/src/evm/tools/wallet-tools.ts +36 -0
  11. package/extensions/blockchain/src/wallet/key-guard.ts +1 -1
  12. package/extensions/copilot-proxy/node_modules/.bin/cryptoclaw +0 -0
  13. package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -0
  14. package/extensions/diagnostics-otel/node_modules/.bin/cryptoclaw +0 -0
  15. package/extensions/discord/node_modules/.bin/cryptoclaw +0 -0
  16. package/extensions/imessage/node_modules/.bin/cryptoclaw +0 -0
  17. package/extensions/memory-core/node_modules/.bin/cryptoclaw +0 -0
  18. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -0
  19. package/extensions/memory-lancedb/node_modules/.bin/cryptoclaw +0 -0
  20. package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
  21. package/extensions/nostr/node_modules/.bin/cryptoclaw +0 -0
  22. package/extensions/nostr/node_modules/.bin/tsc +0 -0
  23. package/extensions/nostr/node_modules/.bin/tsserver +0 -0
  24. package/extensions/signal/node_modules/.bin/cryptoclaw +0 -0
  25. package/extensions/slack/node_modules/.bin/cryptoclaw +0 -0
  26. package/extensions/telegram/node_modules/.bin/cryptoclaw +0 -0
  27. package/extensions/voice-call/node_modules/.bin/cryptoclaw +0 -0
  28. package/extensions/whatsapp/node_modules/.bin/cryptoclaw +0 -0
  29. package/package.json +96 -70
  30. package/skills/tmux/scripts/find-sessions.sh +0 -0
  31. package/skills/tmux/scripts/wait-for-text.sh +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.4",
3
- "commit": "b9ad59b5ba78baa425e657721f99d8ac375767fb",
4
- "builtAt": "2026-02-06T17:45:29.776Z"
2
+ "version": "1.0.5",
3
+ "commit": "c5b92c7876cb19d5bdf4ec781e437da62c660549",
4
+ "builtAt": "2026-02-06T18:04:51.595Z"
5
5
  }
@@ -1 +1 @@
1
- 27fce9b1af9f94c38c184d561132c670d976d60d1f8747075e0c754c0e818691
1
+ cdcdf9307dc3cdfd79beec2832d661c5c1c9cbbe1fd62cd0195fc1cb9d6d3adf
package/dist/entry.js CHANGED
File without changes
package/dist/index.js CHANGED
File without changes
@@ -6405,11 +6405,11 @@ declare const TelegramConfigSchema: z.ZodObject<{
6405
6405
  name: z.ZodOptional<z.ZodString>;
6406
6406
  capabilities: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
6407
6407
  inlineButtons: z.ZodOptional<z.ZodEnum<{
6408
- allowlist: "allowlist";
6409
6408
  off: "off";
6410
- dm: "dm";
6411
- group: "group";
6412
6409
  all: "all";
6410
+ allowlist: "allowlist";
6411
+ group: "group";
6412
+ dm: "dm";
6413
6413
  }>>;
6414
6414
  }, z.core.$strict>]>>;
6415
6415
  markdown: z.ZodOptional<z.ZodObject<{
@@ -6486,8 +6486,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
6486
6486
  }, z.core.$strict>>>>;
6487
6487
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
6488
6488
  chunkMode: z.ZodOptional<z.ZodEnum<{
6489
- length: "length";
6490
6489
  newline: "newline";
6490
+ length: "length";
6491
6491
  }>>;
6492
6492
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
6493
6493
  draftChunk: z.ZodOptional<z.ZodObject<{
@@ -6533,8 +6533,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
6533
6533
  }>>;
6534
6534
  reactionLevel: z.ZodOptional<z.ZodEnum<{
6535
6535
  off: "off";
6536
- ack: "ack";
6537
6536
  minimal: "minimal";
6537
+ ack: "ack";
6538
6538
  extensive: "extensive";
6539
6539
  }>>;
6540
6540
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -6548,11 +6548,11 @@ declare const TelegramConfigSchema: z.ZodObject<{
6548
6548
  name: z.ZodOptional<z.ZodString>;
6549
6549
  capabilities: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
6550
6550
  inlineButtons: z.ZodOptional<z.ZodEnum<{
6551
- allowlist: "allowlist";
6552
6551
  off: "off";
6553
- dm: "dm";
6554
- group: "group";
6555
6552
  all: "all";
6553
+ allowlist: "allowlist";
6554
+ group: "group";
6555
+ dm: "dm";
6556
6556
  }>>;
6557
6557
  }, z.core.$strict>]>>;
6558
6558
  markdown: z.ZodOptional<z.ZodObject<{
@@ -6629,8 +6629,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
6629
6629
  }, z.core.$strict>>>>;
6630
6630
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
6631
6631
  chunkMode: z.ZodOptional<z.ZodEnum<{
6632
- length: "length";
6633
6632
  newline: "newline";
6633
+ length: "length";
6634
6634
  }>>;
6635
6635
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
6636
6636
  draftChunk: z.ZodOptional<z.ZodObject<{
@@ -6676,8 +6676,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
6676
6676
  }>>;
6677
6677
  reactionLevel: z.ZodOptional<z.ZodEnum<{
6678
6678
  off: "off";
6679
- ack: "ack";
6680
6679
  minimal: "minimal";
6680
+ ack: "ack";
6681
6681
  extensive: "extensive";
6682
6682
  }>>;
6683
6683
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -6719,8 +6719,8 @@ declare const DiscordConfigSchema: z.ZodObject<{
6719
6719
  }, z.core.$strict>>>>;
6720
6720
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
6721
6721
  chunkMode: z.ZodOptional<z.ZodEnum<{
6722
- length: "length";
6723
6722
  newline: "newline";
6723
+ length: "length";
6724
6724
  }>>;
6725
6725
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
6726
6726
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -6784,9 +6784,9 @@ declare const DiscordConfigSchema: z.ZodObject<{
6784
6784
  deny: z.ZodOptional<z.ZodArray<z.ZodString>>;
6785
6785
  }, z.core.$strict>>>>;
6786
6786
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
6787
- allowlist: "allowlist";
6788
6787
  off: "off";
6789
6788
  all: "all";
6789
+ allowlist: "allowlist";
6790
6790
  own: "own";
6791
6791
  }>>;
6792
6792
  users: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
@@ -6861,8 +6861,8 @@ declare const DiscordConfigSchema: z.ZodObject<{
6861
6861
  }, z.core.$strict>>>>;
6862
6862
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
6863
6863
  chunkMode: z.ZodOptional<z.ZodEnum<{
6864
- length: "length";
6865
6864
  newline: "newline";
6865
+ length: "length";
6866
6866
  }>>;
6867
6867
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
6868
6868
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -6926,9 +6926,9 @@ declare const DiscordConfigSchema: z.ZodObject<{
6926
6926
  deny: z.ZodOptional<z.ZodArray<z.ZodString>>;
6927
6927
  }, z.core.$strict>>>>;
6928
6928
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
6929
- allowlist: "allowlist";
6930
6929
  off: "off";
6931
6930
  all: "all";
6931
+ allowlist: "allowlist";
6932
6932
  own: "own";
6933
6933
  }>>;
6934
6934
  users: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
@@ -7012,8 +7012,8 @@ declare const GoogleChatConfigSchema: z.ZodObject<{
7012
7012
  }, z.core.$strict>>>>;
7013
7013
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7014
7014
  chunkMode: z.ZodOptional<z.ZodEnum<{
7015
- length: "length";
7016
7015
  newline: "newline";
7016
+ length: "length";
7017
7017
  }>>;
7018
7018
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7019
7019
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7079,8 +7079,8 @@ declare const GoogleChatConfigSchema: z.ZodObject<{
7079
7079
  }, z.core.$strict>>>>;
7080
7080
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7081
7081
  chunkMode: z.ZodOptional<z.ZodEnum<{
7082
- length: "length";
7083
7082
  newline: "newline";
7083
+ length: "length";
7084
7084
  }>>;
7085
7085
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7086
7086
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7146,8 +7146,8 @@ declare const SlackConfigSchema: z.ZodObject<{
7146
7146
  }, z.core.$strict>>>>;
7147
7147
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7148
7148
  chunkMode: z.ZodOptional<z.ZodEnum<{
7149
- length: "length";
7150
7149
  newline: "newline";
7150
+ length: "length";
7151
7151
  }>>;
7152
7152
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7153
7153
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7157,9 +7157,9 @@ declare const SlackConfigSchema: z.ZodObject<{
7157
7157
  }, z.core.$strict>>;
7158
7158
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7159
7159
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
7160
- allowlist: "allowlist";
7161
7160
  off: "off";
7162
7161
  all: "all";
7162
+ allowlist: "allowlist";
7163
7163
  own: "own";
7164
7164
  }>>;
7165
7165
  reactionAllowlist: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
@@ -7276,8 +7276,8 @@ declare const SlackConfigSchema: z.ZodObject<{
7276
7276
  }, z.core.$strict>>>>;
7277
7277
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7278
7278
  chunkMode: z.ZodOptional<z.ZodEnum<{
7279
- length: "length";
7280
7279
  newline: "newline";
7280
+ length: "length";
7281
7281
  }>>;
7282
7282
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7283
7283
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7287,9 +7287,9 @@ declare const SlackConfigSchema: z.ZodObject<{
7287
7287
  }, z.core.$strict>>;
7288
7288
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7289
7289
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
7290
- allowlist: "allowlist";
7291
7290
  off: "off";
7292
7291
  all: "all";
7292
+ allowlist: "allowlist";
7293
7293
  own: "own";
7294
7294
  }>>;
7295
7295
  reactionAllowlist: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
@@ -7405,8 +7405,8 @@ declare const SignalConfigSchema: z.ZodObject<{
7405
7405
  }, z.core.$strict>>>>;
7406
7406
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7407
7407
  chunkMode: z.ZodOptional<z.ZodEnum<{
7408
- length: "length";
7409
7408
  newline: "newline";
7409
+ length: "length";
7410
7410
  }>>;
7411
7411
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7412
7412
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7416,9 +7416,9 @@ declare const SignalConfigSchema: z.ZodObject<{
7416
7416
  }, z.core.$strict>>;
7417
7417
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7418
7418
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
7419
- allowlist: "allowlist";
7420
7419
  off: "off";
7421
7420
  all: "all";
7421
+ allowlist: "allowlist";
7422
7422
  own: "own";
7423
7423
  }>>;
7424
7424
  reactionAllowlist: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
@@ -7427,8 +7427,8 @@ declare const SignalConfigSchema: z.ZodObject<{
7427
7427
  }, z.core.$strict>>;
7428
7428
  reactionLevel: z.ZodOptional<z.ZodEnum<{
7429
7429
  off: "off";
7430
- ack: "ack";
7431
7430
  minimal: "minimal";
7431
+ ack: "ack";
7432
7432
  extensive: "extensive";
7433
7433
  }>>;
7434
7434
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -7480,8 +7480,8 @@ declare const SignalConfigSchema: z.ZodObject<{
7480
7480
  }, z.core.$strict>>>>;
7481
7481
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7482
7482
  chunkMode: z.ZodOptional<z.ZodEnum<{
7483
- length: "length";
7484
7483
  newline: "newline";
7484
+ length: "length";
7485
7485
  }>>;
7486
7486
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7487
7487
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7491,9 +7491,9 @@ declare const SignalConfigSchema: z.ZodObject<{
7491
7491
  }, z.core.$strict>>;
7492
7492
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7493
7493
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
7494
- allowlist: "allowlist";
7495
7494
  off: "off";
7496
7495
  all: "all";
7496
+ allowlist: "allowlist";
7497
7497
  own: "own";
7498
7498
  }>>;
7499
7499
  reactionAllowlist: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
@@ -7502,8 +7502,8 @@ declare const SignalConfigSchema: z.ZodObject<{
7502
7502
  }, z.core.$strict>>;
7503
7503
  reactionLevel: z.ZodOptional<z.ZodEnum<{
7504
7504
  off: "off";
7505
- ack: "ack";
7506
7505
  minimal: "minimal";
7506
+ ack: "ack";
7507
7507
  extensive: "extensive";
7508
7508
  }>>;
7509
7509
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -7553,8 +7553,8 @@ declare const IMessageConfigSchema: z.ZodObject<{
7553
7553
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7554
7554
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7555
7555
  chunkMode: z.ZodOptional<z.ZodEnum<{
7556
- length: "length";
7557
7556
  newline: "newline";
7557
+ length: "length";
7558
7558
  }>>;
7559
7559
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7560
7560
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7620,8 +7620,8 @@ declare const IMessageConfigSchema: z.ZodObject<{
7620
7620
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7621
7621
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7622
7622
  chunkMode: z.ZodOptional<z.ZodEnum<{
7623
- length: "length";
7624
7623
  newline: "newline";
7624
+ length: "length";
7625
7625
  }>>;
7626
7626
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
7627
7627
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
@@ -7683,8 +7683,8 @@ declare const MSTeamsConfigSchema: z.ZodObject<{
7683
7683
  }>>>;
7684
7684
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7685
7685
  chunkMode: z.ZodOptional<z.ZodEnum<{
7686
- length: "length";
7687
7686
  newline: "newline";
7687
+ length: "length";
7688
7688
  }>>;
7689
7689
  blockStreamingCoalesce: z.ZodOptional<z.ZodObject<{
7690
7690
  minChars: z.ZodOptional<z.ZodNumber>;
@@ -7786,8 +7786,8 @@ declare const WhatsAppConfigSchema: z.ZodObject<{
7786
7786
  }, z.core.$strict>>>>;
7787
7787
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7788
7788
  chunkMode: z.ZodOptional<z.ZodEnum<{
7789
- length: "length";
7790
7789
  newline: "newline";
7790
+ length: "length";
7791
7791
  }>>;
7792
7792
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
7793
7793
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
@@ -7858,8 +7858,8 @@ declare const WhatsAppConfigSchema: z.ZodObject<{
7858
7858
  }, z.core.$strict>>>>;
7859
7859
  textChunkLimit: z.ZodOptional<z.ZodNumber>;
7860
7860
  chunkMode: z.ZodOptional<z.ZodEnum<{
7861
- length: "length";
7862
7861
  newline: "newline";
7862
+ length: "length";
7863
7863
  }>>;
7864
7864
  mediaMaxMb: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7865
7865
  blockStreaming: z.ZodOptional<z.ZodBoolean>;
@@ -254,6 +254,7 @@ const blockchainPlugin: OpenClawPluginDefinition = {
254
254
  '- Token transfer ("send USDT to 0x...") → call transfer_erc20',
255
255
  '- Swap ("swap BNB for USDT") → call swap_execute',
256
256
  "- Address security check → call check_address_security",
257
+ "- Wallet locked → ask user for passphrase, call wallet_unlock, then retry",
257
258
  "All outbound transfers are auto security-checked against GoPlus before execution.",
258
259
  "Do NOT hallucinate balances — always call the tool.",
259
260
  );
File without changes
File without changes
@@ -154,6 +154,42 @@ export function registerWalletTools(api: OpenClawPluginApi, walletManager: Walle
154
154
  },
155
155
  });
156
156
 
157
+ api.registerTool({
158
+ name: "wallet_unlock",
159
+ description:
160
+ "Unlock the active wallet by providing the passphrase. " +
161
+ "Call this when a transaction fails with 'Passphrase required to unlock wallet'. " +
162
+ "Ask the user for their passphrase in conversation, then call this tool.",
163
+ parameters: {
164
+ type: "object",
165
+ properties: {
166
+ passphrase: {
167
+ type: "string",
168
+ description: "The wallet encryption passphrase",
169
+ },
170
+ },
171
+ required: ["passphrase"],
172
+ },
173
+ async execute(params: { passphrase: string }) {
174
+ try {
175
+ await walletManager.getActivePrivateKey(params.passphrase);
176
+ return {
177
+ content: [
178
+ {
179
+ type: "text",
180
+ text: "Wallet unlocked successfully. You can now proceed with the transaction.",
181
+ },
182
+ ],
183
+ };
184
+ } catch (err) {
185
+ const msg = err instanceof Error ? err.message : "Unknown error";
186
+ return {
187
+ content: [{ type: "text", text: `Failed to unlock wallet: ${msg}` }],
188
+ };
189
+ }
190
+ },
191
+ });
192
+
157
193
  // wallet_export is NOT registered as an agent tool.
158
194
  // Users must use `cryptoclaw wallet export <label>` in the terminal.
159
195
  // This is the most critical security boundary — private keys must NEVER enter agent context.
@@ -72,7 +72,7 @@ export const KEY_GUARD_SYSTEM_PROMPT = `
72
72
  [SECURITY — PRIVATE KEY PROTECTION]
73
73
  CRITICAL RULES — violating these is a security incident:
74
74
  1. NEVER output, display, repeat, or include a private key (0x + 64 hex chars) in ANY message
75
- 2. NEVER ask the user for their private key or passphrase in chat
75
+ 2. If the wallet is locked (error: "Passphrase required to unlock wallet"), ask the user for their wallet passphrase and call wallet_unlock. After unlocking, retry the original operation.
76
76
  3. If a user pastes a private key in chat, respond ONLY with: "For security, please use \`cryptoclaw wallet import\` in your terminal. Never share private keys in chat."
77
77
  4. wallet_export and wallet_import are CLI-only — do NOT attempt to call them
78
78
  5. For wallet creation: call wallet_create with just a label — the passphrase is prompted securely in the terminal
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cryptoclaw",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Private crypto AI assistant — wallet management, DeFi, NFTs, and multi-chain operations from your terminal",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -27,6 +27,76 @@
27
27
  "./plugin-sdk": "./dist/plugin-sdk/index.js",
28
28
  "./cli-entry": "./cryptoclaw.mjs"
29
29
  },
30
+ "scripts": {
31
+ "android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
32
+ "android:install": "cd apps/android && ./gradlew :app:installDebug",
33
+ "android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity",
34
+ "android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
35
+ "build": "pnpm canvas:a2ui:bundle && tsdown && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts",
36
+ "canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
37
+ "check": "pnpm tsgo && pnpm lint && pnpm format",
38
+ "check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500",
39
+ "cryptoclaw": "node scripts/run-node.mjs",
40
+ "cryptoclaw:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
41
+ "dev": "node scripts/run-node.mjs",
42
+ "docs:bin": "node scripts/build-docs-list.mjs",
43
+ "docs:build": "cd docs && pnpm dlx --reporter append-only mint broken-links",
44
+ "docs:dev": "cd docs && mint dev",
45
+ "docs:list": "node scripts/docs-list.js",
46
+ "format": "oxfmt --check",
47
+ "format:all": "pnpm format && pnpm format:swift",
48
+ "format:fix": "oxfmt --write",
49
+ "format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources",
50
+ "gateway:dev": "CRYPTOCLAW_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
51
+ "gateway:dev:reset": "CRYPTOCLAW_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
52
+ "gateway:watch": "node scripts/watch-node.mjs gateway --force",
53
+ "ios:build": "bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
54
+ "ios:gen": "cd apps/ios && xcodegen generate",
55
+ "ios:open": "cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj",
56
+ "ios:run": "bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'",
57
+ "lint": "oxlint --type-aware",
58
+ "lint:all": "pnpm lint && pnpm lint:swift",
59
+ "lint:fix": "oxlint --type-aware --fix && pnpm format:fix",
60
+ "lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
61
+ "mac:open": "open dist/OpenClaw.app",
62
+ "mac:package": "bash scripts/package-mac-app.sh",
63
+ "mac:restart": "bash scripts/restart-mac.sh",
64
+ "moltbot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
65
+ "plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
66
+ "prepack": "pnpm build && pnpm ui:build",
67
+ "prepare": "command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0",
68
+ "protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift",
69
+ "protocol:gen": "node --import tsx scripts/protocol-gen.ts",
70
+ "protocol:gen:swift": "node --import tsx scripts/protocol-gen-swift.ts",
71
+ "release:check": "node --import tsx scripts/release-check.ts",
72
+ "start": "node scripts/run-node.mjs",
73
+ "test": "node scripts/test-parallel.mjs",
74
+ "test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
75
+ "test:coverage": "vitest run --coverage",
76
+ "test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
77
+ "test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
78
+ "test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
79
+ "test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
80
+ "test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
81
+ "test:docker:live-models": "bash scripts/test-live-models-docker.sh",
82
+ "test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
83
+ "test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
84
+ "test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
85
+ "test:e2e": "vitest run --config vitest.e2e.config.ts",
86
+ "test:force": "node --import tsx scripts/test-force.ts",
87
+ "test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
88
+ "test:install:e2e:anthropic": "CRYPTOCLAW_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
89
+ "test:install:e2e:openai": "CRYPTOCLAW_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
90
+ "test:install:smoke": "bash scripts/test-install-sh-docker.sh",
91
+ "test:live": "CRYPTOCLAW_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
92
+ "test:ui": "pnpm --dir ui test",
93
+ "test:watch": "vitest",
94
+ "tui": "node scripts/run-node.mjs tui",
95
+ "tui:dev": "CRYPTOCLAW_PROFILE=dev node scripts/run-node.mjs --dev tui",
96
+ "ui:build": "node scripts/ui.js build",
97
+ "ui:dev": "node scripts/ui.js dev",
98
+ "ui:install": "node scripts/ui.js install"
99
+ },
30
100
  "dependencies": {
31
101
  "@agentclientprotocol/sdk": "0.14.1",
32
102
  "@aws-sdk/client-bedrock": "^3.984.0",
@@ -113,6 +183,30 @@
113
183
  "engines": {
114
184
  "node": ">=22.12.0"
115
185
  },
186
+ "packageManager": "pnpm@10.23.0",
187
+ "pnpm": {
188
+ "minimumReleaseAge": 2880,
189
+ "overrides": {
190
+ "fast-xml-parser": "5.3.4",
191
+ "form-data": "2.5.4",
192
+ "@hono/node-server>hono": "4.11.7",
193
+ "hono": "4.11.7",
194
+ "qs": "6.14.1",
195
+ "@sinclair/typebox": "0.34.47",
196
+ "tar": "7.5.7",
197
+ "tough-cookie": "4.1.3"
198
+ },
199
+ "onlyBuiltDependencies": [
200
+ "@lydell/node-pty",
201
+ "@napi-rs/canvas",
202
+ "@whiskeysockets/baileys",
203
+ "authenticate-pam",
204
+ "esbuild",
205
+ "node-llama-cpp",
206
+ "protobufjs",
207
+ "sharp"
208
+ ]
209
+ },
116
210
  "vitest": {
117
211
  "coverage": {
118
212
  "provider": "v8",
@@ -144,73 +238,5 @@
144
238
  "apps/macos/.build/**",
145
239
  "dist/OpenClaw.app/**"
146
240
  ]
147
- },
148
- "scripts": {
149
- "android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
150
- "android:install": "cd apps/android && ./gradlew :app:installDebug",
151
- "android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity",
152
- "android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
153
- "build": "pnpm canvas:a2ui:bundle && tsdown && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts",
154
- "canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
155
- "check": "pnpm tsgo && pnpm lint && pnpm format",
156
- "check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500",
157
- "cryptoclaw": "node scripts/run-node.mjs",
158
- "cryptoclaw:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
159
- "dev": "node scripts/run-node.mjs",
160
- "docs:bin": "node scripts/build-docs-list.mjs",
161
- "docs:build": "cd docs && pnpm dlx --reporter append-only mint broken-links",
162
- "docs:dev": "cd docs && mint dev",
163
- "docs:list": "node scripts/docs-list.js",
164
- "format": "oxfmt --check",
165
- "format:all": "pnpm format && pnpm format:swift",
166
- "format:fix": "oxfmt --write",
167
- "format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources",
168
- "gateway:dev": "CRYPTOCLAW_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
169
- "gateway:dev:reset": "CRYPTOCLAW_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
170
- "gateway:watch": "node scripts/watch-node.mjs gateway --force",
171
- "ios:build": "bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
172
- "ios:gen": "cd apps/ios && xcodegen generate",
173
- "ios:open": "cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj",
174
- "ios:run": "bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'",
175
- "lint": "oxlint --type-aware",
176
- "lint:all": "pnpm lint && pnpm lint:swift",
177
- "lint:fix": "oxlint --type-aware --fix && pnpm format:fix",
178
- "lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
179
- "mac:open": "open dist/OpenClaw.app",
180
- "mac:package": "bash scripts/package-mac-app.sh",
181
- "mac:restart": "bash scripts/restart-mac.sh",
182
- "moltbot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
183
- "plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
184
- "protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift",
185
- "protocol:gen": "node --import tsx scripts/protocol-gen.ts",
186
- "protocol:gen:swift": "node --import tsx scripts/protocol-gen-swift.ts",
187
- "release:check": "node --import tsx scripts/release-check.ts",
188
- "start": "node scripts/run-node.mjs",
189
- "test": "node scripts/test-parallel.mjs",
190
- "test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
191
- "test:coverage": "vitest run --coverage",
192
- "test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
193
- "test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
194
- "test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
195
- "test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
196
- "test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
197
- "test:docker:live-models": "bash scripts/test-live-models-docker.sh",
198
- "test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
199
- "test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
200
- "test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
201
- "test:e2e": "vitest run --config vitest.e2e.config.ts",
202
- "test:force": "node --import tsx scripts/test-force.ts",
203
- "test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
204
- "test:install:e2e:anthropic": "CRYPTOCLAW_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
205
- "test:install:e2e:openai": "CRYPTOCLAW_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
206
- "test:install:smoke": "bash scripts/test-install-sh-docker.sh",
207
- "test:live": "CRYPTOCLAW_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
208
- "test:ui": "pnpm --dir ui test",
209
- "test:watch": "vitest",
210
- "tui": "node scripts/run-node.mjs tui",
211
- "tui:dev": "CRYPTOCLAW_PROFILE=dev node scripts/run-node.mjs --dev tui",
212
- "ui:build": "node scripts/ui.js build",
213
- "ui:dev": "node scripts/ui.js dev",
214
- "ui:install": "node scripts/ui.js install"
215
241
  }
216
- }
242
+ }
File without changes
File without changes