@apify/mcpc 0.3.0 → 0.3.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.
Files changed (111) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/README.md +171 -48
  3. package/dist/bridge/index.js +32 -40
  4. package/dist/bridge/index.js.map +1 -1
  5. package/dist/cli/commands/clean.d.ts.map +1 -1
  6. package/dist/cli/commands/clean.js +3 -2
  7. package/dist/cli/commands/clean.js.map +1 -1
  8. package/dist/cli/commands/connect.d.ts +63 -0
  9. package/dist/cli/commands/connect.d.ts.map +1 -0
  10. package/dist/cli/commands/connect.js +655 -0
  11. package/dist/cli/commands/connect.js.map +1 -0
  12. package/dist/cli/commands/logs.d.ts +8 -0
  13. package/dist/cli/commands/logs.d.ts.map +1 -0
  14. package/dist/cli/commands/logs.js +143 -0
  15. package/dist/cli/commands/logs.js.map +1 -0
  16. package/dist/cli/commands/sessions.d.ts +6 -59
  17. package/dist/cli/commands/sessions.d.ts.map +1 -1
  18. package/dist/cli/commands/sessions.js +37 -690
  19. package/dist/cli/commands/sessions.js.map +1 -1
  20. package/dist/cli/commands/skills.d.ts +20 -0
  21. package/dist/cli/commands/skills.d.ts.map +1 -0
  22. package/dist/cli/commands/skills.js +160 -0
  23. package/dist/cli/commands/skills.js.map +1 -0
  24. package/dist/cli/commands/x402.d.ts.map +1 -1
  25. package/dist/cli/commands/x402.js +14 -4
  26. package/dist/cli/commands/x402.js.map +1 -1
  27. package/dist/cli/index.js +117 -31
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/output.d.ts +13 -0
  30. package/dist/cli/output.d.ts.map +1 -1
  31. package/dist/cli/output.js +113 -20
  32. package/dist/cli/output.js.map +1 -1
  33. package/dist/cli/parser.d.ts +1 -1
  34. package/dist/cli/parser.d.ts.map +1 -1
  35. package/dist/cli/parser.js +25 -2
  36. package/dist/cli/parser.js.map +1 -1
  37. package/dist/cli/shell.js.map +1 -1
  38. package/dist/core/capabilities.d.ts +3 -0
  39. package/dist/core/capabilities.d.ts.map +1 -0
  40. package/dist/core/capabilities.js +14 -0
  41. package/dist/core/capabilities.js.map +1 -0
  42. package/dist/core/index.d.ts +1 -0
  43. package/dist/core/index.d.ts.map +1 -1
  44. package/dist/core/index.js +1 -0
  45. package/dist/core/index.js.map +1 -1
  46. package/dist/core/mcp-client.d.ts +4 -0
  47. package/dist/core/mcp-client.d.ts.map +1 -1
  48. package/dist/core/mcp-client.js +36 -12
  49. package/dist/core/mcp-client.js.map +1 -1
  50. package/dist/lib/bridge-client.d.ts +4 -1
  51. package/dist/lib/bridge-client.d.ts.map +1 -1
  52. package/dist/lib/bridge-client.js +29 -3
  53. package/dist/lib/bridge-client.js.map +1 -1
  54. package/dist/lib/bridge-manager.d.ts +3 -3
  55. package/dist/lib/bridge-manager.d.ts.map +1 -1
  56. package/dist/lib/bridge-manager.js +36 -20
  57. package/dist/lib/bridge-manager.js.map +1 -1
  58. package/dist/lib/cleanup.d.ts.map +1 -1
  59. package/dist/lib/cleanup.js +20 -19
  60. package/dist/lib/cleanup.js.map +1 -1
  61. package/dist/lib/config.d.ts +14 -0
  62. package/dist/lib/config.d.ts.map +1 -1
  63. package/dist/lib/config.js +41 -27
  64. package/dist/lib/config.js.map +1 -1
  65. package/dist/lib/errors.d.ts +0 -1
  66. package/dist/lib/errors.d.ts.map +1 -1
  67. package/dist/lib/errors.js +2 -4
  68. package/dist/lib/errors.js.map +1 -1
  69. package/dist/lib/index.d.ts +1 -0
  70. package/dist/lib/index.d.ts.map +1 -1
  71. package/dist/lib/index.js +1 -0
  72. package/dist/lib/index.js.map +1 -1
  73. package/dist/lib/log-reader.d.ts +28 -0
  74. package/dist/lib/log-reader.d.ts.map +1 -0
  75. package/dist/lib/log-reader.js +278 -0
  76. package/dist/lib/log-reader.js.map +1 -0
  77. package/dist/lib/session-client.d.ts +1 -1
  78. package/dist/lib/session-client.d.ts.map +1 -1
  79. package/dist/lib/session-client.js +6 -8
  80. package/dist/lib/session-client.js.map +1 -1
  81. package/dist/lib/stderr-tail.d.ts +10 -0
  82. package/dist/lib/stderr-tail.d.ts.map +1 -0
  83. package/dist/lib/stderr-tail.js +28 -0
  84. package/dist/lib/stderr-tail.js.map +1 -0
  85. package/dist/lib/types.d.ts +6 -1
  86. package/dist/lib/types.d.ts.map +1 -1
  87. package/dist/lib/types.js +1 -0
  88. package/dist/lib/types.js.map +1 -1
  89. package/dist/lib/utils.d.ts +1 -0
  90. package/dist/lib/utils.d.ts.map +1 -1
  91. package/dist/lib/utils.js +12 -2
  92. package/dist/lib/utils.js.map +1 -1
  93. package/dist/lib/x402/fetch-middleware.d.ts +3 -2
  94. package/dist/lib/x402/fetch-middleware.d.ts.map +1 -1
  95. package/dist/lib/x402/fetch-middleware.js +37 -24
  96. package/dist/lib/x402/fetch-middleware.js.map +1 -1
  97. package/dist/lib/x402/signer.d.ts +7 -1
  98. package/dist/lib/x402/signer.d.ts.map +1 -1
  99. package/dist/lib/x402/signer.js +249 -5
  100. package/dist/lib/x402/signer.js.map +1 -1
  101. package/docs/README.md +1 -0
  102. package/docs/claude-skill/SKILL.md +150 -117
  103. package/docs/examples/company-lookup.sh +6 -6
  104. package/docs/vhs/README.md +79 -0
  105. package/docs/vhs/grep.tape +56 -0
  106. package/docs/vhs/mcpc-demo.tape +179 -0
  107. package/docs/vhs/proxy.tape +69 -0
  108. package/docs/vhs/quickstart.tape +59 -0
  109. package/docs/vhs/scripting.tape +69 -0
  110. package/docs/vhs/tools.tape +66 -0
  111. package/package.json +20 -20
@@ -0,0 +1,179 @@
1
+ # mcpc demo — flagship overview
2
+ #
3
+ # Generate the GIF with VHS (https://github.com/charmbracelet/vhs):
4
+ #
5
+ # cd docs/vhs && vhs mcpc-demo.tape
6
+ #
7
+ # This produces mcpc-demo.gif in the current directory. To update the demo
8
+ # embedded in the main README, copy it to docs/images/mcpc-demo.gif.
9
+ #
10
+ # Prerequisites:
11
+ # - VHS: brew install vhs (or see https://github.com/charmbracelet/vhs#installation)
12
+ # - mcpc: npm install -g @apify/mcpc
13
+ # - jq: brew install jq (for the scripting section)
14
+ # - Auth: export APIFY_TOKEN=... (or remove the --header line to use anonymous access)
15
+ #
16
+ # This is a template — adapt the commands below for your own server,
17
+ # tools, and audience. Use the focused tapes in this folder
18
+ # (quickstart.tape, tools.tape, scripting.tape, grep.tape, proxy.tape)
19
+ # as a starting point for shorter, single-feature demos.
20
+
21
+ Output mcpc-demo.gif
22
+
23
+ Require mcpc
24
+
25
+ # Look & feel
26
+ Set Shell "bash"
27
+ Set FontFamily "JetBrains Mono"
28
+ Set FontSize 16
29
+ Set Width 1100
30
+ Set Height 650
31
+ Set Padding 20
32
+ Set TypingSpeed 50ms
33
+ Set PlaybackSpeed 1.0
34
+ Set Theme "Catppuccin Mocha"
35
+ Set WindowBar Colorful
36
+ Set WindowBarSize 32
37
+ Set BorderRadius 8
38
+ Set CursorBlink true
39
+
40
+ # Hidden setup: clean prompt, no scrollback, fresh state
41
+ Hide
42
+ Type "export PS1='$ '"
43
+ Enter
44
+ Type "mcpc @apify close 2>/dev/null; mcpc @fs close 2>/dev/null; true"
45
+ Enter
46
+ Type "clear"
47
+ Enter
48
+ Show
49
+
50
+ # 1. Discover mcpc
51
+ Type "# mcpc — a universal MCP CLI client"
52
+ Sleep 800ms
53
+ Enter
54
+ Sleep 600ms
55
+
56
+ Type "mcpc --help | head -25"
57
+ Sleep 400ms
58
+ Enter
59
+ Sleep 4s
60
+
61
+ Type "clear"
62
+ Enter
63
+ Sleep 300ms
64
+
65
+ # 2. List sessions and OAuth profiles
66
+ Type "# No sessions or profiles yet"
67
+ Sleep 600ms
68
+ Enter
69
+ Sleep 400ms
70
+
71
+ Type "mcpc"
72
+ Sleep 400ms
73
+ Enter
74
+ Sleep 3s
75
+
76
+ # 3. Connect to a remote MCP server
77
+ Type "# Connect to Apify's MCP server as session @apify"
78
+ Sleep 600ms
79
+ Enter
80
+ Sleep 400ms
81
+
82
+ Type 'mcpc connect mcp.apify.com @apify --header "Authorization: Bearer ${APIFY_TOKEN}"'
83
+ Sleep 400ms
84
+ Enter
85
+ Sleep 3s
86
+
87
+ # 4. Server info, capabilities, instructions
88
+ Type "# Show server capabilities and instructions"
89
+ Sleep 600ms
90
+ Enter
91
+ Sleep 400ms
92
+
93
+ Type "mcpc @apify"
94
+ Sleep 400ms
95
+ Enter
96
+ Sleep 4s
97
+
98
+ Type "clear"
99
+ Enter
100
+ Sleep 300ms
101
+
102
+ # 5. List available tools
103
+ Type "# List available tools"
104
+ Sleep 600ms
105
+ Enter
106
+ Sleep 400ms
107
+
108
+ Type "mcpc @apify tools-list | head -15"
109
+ Sleep 400ms
110
+ Enter
111
+ Sleep 4s
112
+
113
+ # 6. Dynamic tool discovery
114
+ Type "clear"
115
+ Enter
116
+ Type "# Find tools by keyword — useful for AI agents"
117
+ Sleep 600ms
118
+ Enter
119
+ Sleep 400ms
120
+
121
+ Type 'mcpc @apify grep "scraper"'
122
+ Sleep 400ms
123
+ Enter
124
+ Sleep 4s
125
+
126
+ # 7. Inspect a tool's schema
127
+ Type "clear"
128
+ Enter
129
+ Type "# Inspect a tool's input schema"
130
+ Sleep 600ms
131
+ Enter
132
+ Sleep 400ms
133
+
134
+ Type "mcpc @apify tools-get search-actors"
135
+ Sleep 400ms
136
+ Enter
137
+ Sleep 5s
138
+
139
+ # 8. Call a tool
140
+ Type "clear"
141
+ Enter
142
+ Type "# Call a tool with key:=value arguments"
143
+ Sleep 600ms
144
+ Enter
145
+ Sleep 400ms
146
+
147
+ Type 'mcpc @apify tools-call search-actors keywords:="web scraper" limit:=3'
148
+ Sleep 400ms
149
+ Enter
150
+ Sleep 5s
151
+
152
+ # 9. JSON mode + jq for scripting (code mode)
153
+ Type "clear"
154
+ Enter
155
+ Type "# JSON mode composes with jq for scripts and agents"
156
+ Sleep 600ms
157
+ Enter
158
+ Sleep 400ms
159
+
160
+ Type "mcpc --json @apify tools-list | jq -r '.[].name' | head -5"
161
+ Sleep 400ms
162
+ Enter
163
+ Sleep 4s
164
+
165
+ # 10. Close the session
166
+ Type "# Close the session when done"
167
+ Sleep 600ms
168
+ Enter
169
+ Sleep 400ms
170
+
171
+ Type "mcpc @apify close"
172
+ Sleep 400ms
173
+ Enter
174
+ Sleep 2s
175
+
176
+ Type "# Learn more: https://github.com/apify/mcpc"
177
+ Sleep 2s
178
+ Enter
179
+ Sleep 1500ms
@@ -0,0 +1,69 @@
1
+ # mcpc proxy — AI sandbox: expose a credentialed session without leaking tokens
2
+ #
3
+ # cd docs/vhs && vhs proxy.tape
4
+
5
+ Output proxy.gif
6
+
7
+ Require mcpc
8
+
9
+ Set Shell "bash"
10
+ Set FontFamily "JetBrains Mono"
11
+ Set FontSize 16
12
+ Set Width 1200
13
+ Set Height 700
14
+ Set Padding 20
15
+ Set TypingSpeed 50ms
16
+ Set Theme "Catppuccin Mocha"
17
+ Set WindowBar Colorful
18
+ Set WindowBarSize 32
19
+ Set BorderRadius 8
20
+
21
+ Hide
22
+ Type "export PS1='$ '"
23
+ Enter
24
+ Type "mcpc @relay close 2>/dev/null; mcpc @sandbox close 2>/dev/null; true"
25
+ Enter
26
+ Type "clear"
27
+ Enter
28
+ Show
29
+
30
+ Type "# Human authenticates once and exposes a localhost MCP proxy"
31
+ Sleep 600ms
32
+ Enter
33
+ Type 'mcpc connect mcp.apify.com @relay --header "Authorization: Bearer ${APIFY_TOKEN}" --proxy 8080'
34
+ Sleep 400ms
35
+ Enter
36
+ Sleep 4s
37
+
38
+ Type "# The proxy forwards MCP traffic but hides the upstream token"
39
+ Sleep 600ms
40
+ Enter
41
+ Type "mcpc"
42
+ Sleep 400ms
43
+ Enter
44
+ Sleep 4s
45
+
46
+ Type "clear"
47
+ Enter
48
+ Type "# An AI agent (or another tool) connects to the proxy as a normal MCP server"
49
+ Sleep 600ms
50
+ Enter
51
+ Type "mcpc connect localhost:8080 @sandbox"
52
+ Sleep 400ms
53
+ Enter
54
+ Sleep 3s
55
+
56
+ Type "mcpc @sandbox tools-list | head -8"
57
+ Sleep 400ms
58
+ Enter
59
+ Sleep 5s
60
+
61
+ Type "clear"
62
+ Enter
63
+ Type "# Tear down both sides"
64
+ Sleep 500ms
65
+ Enter
66
+ Type "mcpc @sandbox close && mcpc @relay close"
67
+ Sleep 400ms
68
+ Enter
69
+ Sleep 2s
@@ -0,0 +1,59 @@
1
+ # mcpc quickstart — first-time user flow
2
+ #
3
+ # A minimal demo of "install → connect → list tools → call tool".
4
+ # Best for the README hero / landing-page GIF.
5
+ #
6
+ # cd docs/vhs && vhs quickstart.tape
7
+
8
+ Output quickstart.gif
9
+
10
+ Require mcpc
11
+
12
+ Set Shell "bash"
13
+ Set FontFamily "JetBrains Mono"
14
+ Set FontSize 16
15
+ Set Width 1100
16
+ Set Height 600
17
+ Set Padding 20
18
+ Set TypingSpeed 50ms
19
+ Set Theme "Catppuccin Mocha"
20
+ Set WindowBar Colorful
21
+ Set WindowBarSize 32
22
+ Set BorderRadius 8
23
+
24
+ Hide
25
+ Type "export PS1='$ '"
26
+ Enter
27
+ Type "mcpc @apify close 2>/dev/null; true"
28
+ Enter
29
+ Type "clear"
30
+ Enter
31
+ Show
32
+
33
+ Type "# Connect to any MCP server, get a stateful session"
34
+ Sleep 600ms
35
+ Enter
36
+ Type 'mcpc connect mcp.apify.com @apify --header "Authorization: Bearer ${APIFY_TOKEN}"'
37
+ Sleep 400ms
38
+ Enter
39
+ Sleep 3s
40
+
41
+ Type "# List the tools the server exposes"
42
+ Sleep 500ms
43
+ Enter
44
+ Type "mcpc @apify tools-list | head -10"
45
+ Sleep 400ms
46
+ Enter
47
+ Sleep 4s
48
+
49
+ Type "# Call one of them with typed key:=value arguments"
50
+ Sleep 500ms
51
+ Enter
52
+ Type 'mcpc @apify tools-call search-actors keywords:="web scraper" limit:=3'
53
+ Sleep 400ms
54
+ Enter
55
+ Sleep 5s
56
+
57
+ Type "mcpc @apify close"
58
+ Enter
59
+ Sleep 2s
@@ -0,0 +1,69 @@
1
+ # mcpc scripting — JSON mode + jq + pipelines (code mode)
2
+ #
3
+ # cd docs/vhs && vhs scripting.tape
4
+
5
+ Output scripting.gif
6
+
7
+ Require mcpc
8
+ Require jq
9
+
10
+ Set Shell "bash"
11
+ Set FontFamily "JetBrains Mono"
12
+ Set FontSize 16
13
+ Set Width 1200
14
+ Set Height 700
15
+ Set Padding 20
16
+ Set TypingSpeed 50ms
17
+ Set Theme "Catppuccin Mocha"
18
+ Set WindowBar Colorful
19
+ Set WindowBarSize 32
20
+ Set BorderRadius 8
21
+
22
+ Hide
23
+ Type "export PS1='$ '"
24
+ Enter
25
+ Type "mcpc connect mcp.apify.com @apify --header \"Authorization: Bearer ${APIFY_TOKEN}\" >/dev/null 2>&1 || true"
26
+ Enter
27
+ Type "clear"
28
+ Enter
29
+ Show
30
+
31
+ Type "# --json emits MCP-spec JSON to stdout, errors to stderr"
32
+ Sleep 600ms
33
+ Enter
34
+ Type "mcpc --json @apify tools-list | jq -r '.[].name' | head -5"
35
+ Sleep 400ms
36
+ Enter
37
+ Sleep 4s
38
+
39
+ Type "clear"
40
+ Enter
41
+ Type "# Chain tools across calls with jq + xargs"
42
+ Sleep 500ms
43
+ Enter
44
+ Type "mcpc --json @apify tools-call search-actors keywords:=\"scraper\" limit:=1 \\"
45
+ Sleep 200ms
46
+ Enter
47
+ Type ' | jq -r ".content[0].text | fromjson | .[0].name"'
48
+ Sleep 400ms
49
+ Enter
50
+ Sleep 5s
51
+
52
+ Type "clear"
53
+ Enter
54
+ Type "# Snapshot every tool's schema for CI / contract tests"
55
+ Sleep 500ms
56
+ Enter
57
+ Type "for tool in $(mcpc --json @apify tools-list | jq -r '.[].name' | head -3); do"
58
+ Sleep 200ms
59
+ Enter
60
+ Type ' mcpc --json @apify tools-get "$tool" > "/tmp/$tool.json"'
61
+ Sleep 200ms
62
+ Enter
63
+ Type " echo \"saved /tmp/$tool.json\""
64
+ Sleep 200ms
65
+ Enter
66
+ Type "done"
67
+ Sleep 400ms
68
+ Enter
69
+ Sleep 6s
@@ -0,0 +1,66 @@
1
+ # mcpc tools — list / get / call
2
+ #
3
+ # cd docs/vhs && vhs tools.tape
4
+
5
+ Output tools.gif
6
+
7
+ Require mcpc
8
+
9
+ Set Shell "bash"
10
+ Set FontFamily "JetBrains Mono"
11
+ Set FontSize 16
12
+ Set Width 1100
13
+ Set Height 650
14
+ Set Padding 20
15
+ Set TypingSpeed 50ms
16
+ Set Theme "Catppuccin Mocha"
17
+ Set WindowBar Colorful
18
+ Set WindowBarSize 32
19
+ Set BorderRadius 8
20
+
21
+ Hide
22
+ Type "export PS1='$ '"
23
+ Enter
24
+ Type "mcpc connect mcp.apify.com @apify --header \"Authorization: Bearer ${APIFY_TOKEN}\" >/dev/null 2>&1 || true"
25
+ Enter
26
+ Type "clear"
27
+ Enter
28
+ Show
29
+
30
+ Type "# Browse the tools exposed by the server"
31
+ Sleep 600ms
32
+ Enter
33
+ Type "mcpc @apify tools-list | head -15"
34
+ Sleep 400ms
35
+ Enter
36
+ Sleep 4s
37
+
38
+ Type "clear"
39
+ Enter
40
+ Type "# Inspect a single tool's input schema and description"
41
+ Sleep 500ms
42
+ Enter
43
+ Type "mcpc @apify tools-get search-actors"
44
+ Sleep 400ms
45
+ Enter
46
+ Sleep 5s
47
+
48
+ Type "clear"
49
+ Enter
50
+ Type "# Call with auto-parsed key:=value arguments"
51
+ Sleep 500ms
52
+ Enter
53
+ Type 'mcpc @apify tools-call search-actors keywords:="web scraper" limit:=3'
54
+ Sleep 400ms
55
+ Enter
56
+ Sleep 5s
57
+
58
+ Type "clear"
59
+ Enter
60
+ Type "# Pass complex JSON inline or from stdin"
61
+ Sleep 500ms
62
+ Enter
63
+ Type 'echo '"'"'{"keywords":"crawler","limit":2}'"'"' | mcpc @apify tools-call search-actors'
64
+ Sleep 400ms
65
+ Enter
66
+ Sleep 5s
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apify/mcpc",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Universal command-line client for the Model Context Protocol (MCP).",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -29,37 +29,37 @@
29
29
  "node": ">=20.0.0"
30
30
  },
31
31
  "dependencies": {
32
- "@inquirer/input": "^5.0.3",
33
- "@inquirer/select": "^5.0.3",
34
- "@modelcontextprotocol/sdk": "^1.25.1",
35
- "@napi-rs/keyring": "^1.2.0",
32
+ "@inquirer/input": "^5.0.13",
33
+ "@inquirer/select": "^5.1.5",
34
+ "@modelcontextprotocol/sdk": "^1.29.0",
35
+ "@napi-rs/keyring": "^1.3.0",
36
36
  "chalk": "^5.6.2",
37
- "commander": "^14.0.2",
38
- "ora": "^9.0.0",
37
+ "commander": "^14.0.3",
38
+ "ora": "^9.4.0",
39
39
  "proper-lockfile": "^4.1.2",
40
40
  "qrcode-terminal": "^0.12.0",
41
- "undici": "^7.22.0",
42
- "uuid": "^13.0.0",
43
- "viem": "^2.46.3"
41
+ "undici": "^7.25.0",
42
+ "uuid": "^14.0.0",
43
+ "viem": "^2.50.4"
44
44
  },
45
45
  "devDependencies": {
46
- "@types/node": "^25.0.3",
46
+ "@types/node": "^25.9.1",
47
47
  "@types/proper-lockfile": "^4.1.4",
48
48
  "@types/qrcode-terminal": "^0.12.2",
49
49
  "@types/uuid": "^11.0.0",
50
- "@typescript-eslint/eslint-plugin": "8.57.2",
51
- "@typescript-eslint/parser": "8.57.2",
52
- "@vitest/coverage-v8": "4.1.5",
50
+ "@typescript-eslint/eslint-plugin": "8.59.4",
51
+ "@typescript-eslint/parser": "8.59.4",
52
+ "@vitest/coverage-v8": "4.1.7",
53
53
  "c8": "^11.0.0",
54
- "doctoc": "^2.2.1",
54
+ "doctoc": "^2.4.1",
55
55
  "eslint": "^8.57.1",
56
56
  "markdown-link-check": "^3.14.2",
57
57
  "nyc": "^18.0.0",
58
- "prettier": "^3.7.4",
59
- "proxy-chain": "^2.7.1",
60
- "tsx": "^4.21.0",
61
- "typescript": "^5.9.3",
62
- "vitest": "4.1.5"
58
+ "prettier": "^3.8.3",
59
+ "proxy-chain": "^3.0.0",
60
+ "tsx": "^4.22.3",
61
+ "typescript": "^6.0.3",
62
+ "vitest": "4.1.7"
63
63
  },
64
64
  "devEngines": {
65
65
  "packageManager": {