archal 0.9.13 → 0.9.15

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 (53) hide show
  1. package/README.md +81 -73
  2. package/bin/archal.cjs +1 -1
  3. package/clone-assets/apify/tools.json +668 -0
  4. package/{twin-assets → clone-assets}/discord/fidelity.json +1 -1
  5. package/{twin-assets → clone-assets}/discord/tools.json +510 -510
  6. package/clone-assets/github/fidelity.json +31 -0
  7. package/{twin-assets → clone-assets}/github/tools.json +113 -3
  8. package/{twin-assets → clone-assets}/google-workspace/fidelity.json +2 -2
  9. package/{twin-assets → clone-assets}/google-workspace/tools.json +10 -10
  10. package/{twin-assets → clone-assets}/jira/fidelity.json +44 -4
  11. package/{twin-assets → clone-assets}/jira/tools.json +1 -1
  12. package/clone-assets/linear/fidelity.json +36 -0
  13. package/{twin-assets → clone-assets}/linear/tools.json +1 -1
  14. package/{twin-assets → clone-assets}/ramp/fidelity.json +1 -1
  15. package/{twin-assets → clone-assets}/ramp/tools.json +1 -1
  16. package/clone-assets/slack/fidelity.json +38 -0
  17. package/{twin-assets → clone-assets}/slack/tools.json +1 -1
  18. package/clone-assets/stripe/fidelity.json +67 -0
  19. package/{twin-assets → clone-assets}/stripe/tools.json +42 -11
  20. package/clone-assets/supabase/fidelity.json +31 -0
  21. package/{twin-assets → clone-assets}/supabase/tools.json +1 -1
  22. package/clone-assets/tavily/tools.json +115 -0
  23. package/dist/cli.cjs +97917 -0
  24. package/dist/cli.d.cts +1 -0
  25. package/dist/harness.cjs +62 -0
  26. package/dist/harness.d.cts +20 -0
  27. package/dist/index.cjs +5 -87878
  28. package/dist/index.d.cts +3 -1
  29. package/dist/seed/dynamic-generator.cjs +8796 -9201
  30. package/dist/seed/dynamic-generator.d.cts +39 -0
  31. package/dist/vitest/chunk-2GY4SFKE.js +29279 -0
  32. package/dist/vitest/{chunk-KTMNDJFB.js → chunk-WVRVNHAX.js} +45255 -44440
  33. package/dist/vitest/index.cjs +56408 -31519
  34. package/dist/vitest/index.d.ts +61 -27
  35. package/dist/vitest/index.js +145 -1807
  36. package/dist/vitest/runtime/hosted-session-reaper.cjs +34766 -28922
  37. package/dist/vitest/runtime/hosted-session-reaper.js +1 -2
  38. package/dist/vitest/runtime/setup-files.js +2 -3
  39. package/package.json +19 -10
  40. package/skills/eval/SKILL.md +113 -0
  41. package/skills/onboard/SKILL.md +67 -36
  42. package/skills/scenario/SKILL.md +22 -20
  43. package/skills/vitest/SKILL.md +25 -24
  44. package/dist/vitest/chunk-L6HSMJ3F.js +0 -2216
  45. package/dist/vitest/chunk-YJICENME.js +0 -1230
  46. package/dist/vitest/src-JGHX6UKK.js +0 -94
  47. package/skills/audit/SKILL.md +0 -55
  48. package/skills/test/SKILL.md +0 -109
  49. package/twin-assets/github/fidelity.json +0 -13
  50. package/twin-assets/linear/fidelity.json +0 -18
  51. package/twin-assets/slack/fidelity.json +0 -20
  52. package/twin-assets/stripe/fidelity.json +0 -22
  53. package/twin-assets/supabase/fidelity.json +0 -13
@@ -0,0 +1,31 @@
1
+ {
2
+ "clone": "github",
3
+ "api": "REST v3",
4
+ "version": "0.1.0",
5
+ "capabilities": [
6
+ {
7
+ "name": "Stateful CRUD (issues, PRs, branches, files)",
8
+ "supported": true
9
+ },
10
+ {
11
+ "name": "Error responses (404, 422, 403)",
12
+ "supported": true
13
+ },
14
+ {
15
+ "name": "Pagination",
16
+ "supported": true
17
+ },
18
+ {
19
+ "name": "Rate limiting",
20
+ "supported": true
21
+ },
22
+ {
23
+ "name": "Webhooks",
24
+ "supported": false
25
+ },
26
+ {
27
+ "name": "Branch protection rules",
28
+ "supported": false
29
+ }
30
+ ]
31
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "github",
2
+ "clone": "github",
3
3
  "tools": [
4
4
  {
5
5
  "name": "get_me",
@@ -243,6 +243,44 @@
243
243
  "readOnlyHint": true
244
244
  }
245
245
  },
246
+ {
247
+ "name": "_internal_git_upload_pack",
248
+ "description": "Serve Git smart HTTP upload-pack traffic for clone-compatible REST routes",
249
+ "inputSchema": {
250
+ "type": "object",
251
+ "properties": {
252
+ "owner": {
253
+ "type": "string"
254
+ },
255
+ "repo": {
256
+ "type": "string"
257
+ },
258
+ "phase": {
259
+ "type": "string",
260
+ "enum": [
261
+ "advertise",
262
+ "upload"
263
+ ]
264
+ },
265
+ "service": {
266
+ "type": "string"
267
+ },
268
+ "gitProtocol": {
269
+ "type": "string"
270
+ },
271
+ "requestBody": {
272
+ "type": "string"
273
+ }
274
+ },
275
+ "required": [
276
+ "owner",
277
+ "repo",
278
+ "phase"
279
+ ],
280
+ "additionalProperties": false
281
+ },
282
+ "hidden": true
283
+ },
246
284
  {
247
285
  "name": "list_branches",
248
286
  "description": "List branches in a GitHub repository",
@@ -1056,6 +1094,27 @@
1056
1094
  "readOnlyHint": true
1057
1095
  }
1058
1096
  },
1097
+ {
1098
+ "name": "_internal_get_issue_by_node_id",
1099
+ "description": "[Internal] Resolve an issue by GraphQL node ID",
1100
+ "inputSchema": {
1101
+ "type": "object",
1102
+ "properties": {
1103
+ "node_id": {
1104
+ "type": "string",
1105
+ "minLength": 1
1106
+ }
1107
+ },
1108
+ "required": [
1109
+ "node_id"
1110
+ ],
1111
+ "additionalProperties": false
1112
+ },
1113
+ "hidden": true,
1114
+ "annotations": {
1115
+ "readOnlyHint": true
1116
+ }
1117
+ },
1059
1118
  {
1060
1119
  "name": "search_issues",
1061
1120
  "description": "Search for issues and pull requests across GitHub repositories",
@@ -1669,12 +1728,34 @@
1669
1728
  },
1670
1729
  "pull_number": {
1671
1730
  "type": "number"
1731
+ },
1732
+ "ref": {
1733
+ "type": "string"
1734
+ },
1735
+ "sha": {
1736
+ "type": "string"
1672
1737
  }
1673
1738
  },
1674
1739
  "required": [
1675
1740
  "owner",
1676
- "repo",
1677
- "pull_number"
1741
+ "repo"
1742
+ ],
1743
+ "anyOf": [
1744
+ {
1745
+ "required": [
1746
+ "pull_number"
1747
+ ]
1748
+ },
1749
+ {
1750
+ "required": [
1751
+ "ref"
1752
+ ]
1753
+ },
1754
+ {
1755
+ "required": [
1756
+ "sha"
1757
+ ]
1758
+ }
1678
1759
  ],
1679
1760
  "additionalProperties": false
1680
1761
  },
@@ -2238,6 +2319,35 @@
2238
2319
  },
2239
2320
  "hidden": true
2240
2321
  },
2322
+ {
2323
+ "name": "graphql",
2324
+ "description": "Execute a GitHub GraphQL query",
2325
+ "inputSchema": {
2326
+ "type": "object",
2327
+ "properties": {
2328
+ "query": {
2329
+ "type": "string",
2330
+ "minLength": 1
2331
+ },
2332
+ "variables": {
2333
+ "default": {},
2334
+ "type": "object",
2335
+ "propertyNames": {
2336
+ "type": "string"
2337
+ },
2338
+ "additionalProperties": {}
2339
+ }
2340
+ },
2341
+ "required": [
2342
+ "query"
2343
+ ],
2344
+ "additionalProperties": false
2345
+ },
2346
+ "hidden": true,
2347
+ "annotations": {
2348
+ "readOnlyHint": true
2349
+ }
2350
+ },
2241
2351
  {
2242
2352
  "name": "get_code_scanning_alert",
2243
2353
  "description": "Get a code scanning alert from a GitHub repository",
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "google-workspace",
2
+ "clone": "google-workspace",
3
3
  "version": "0.1",
4
4
  "thresholds": {
5
5
  "minReplaySteps": 0,
@@ -7,7 +7,7 @@
7
7
  "maxValueDifferences": 0
8
8
  },
9
9
  "schemaCompatibilityExceptions": [],
10
- "twinInternalExtensions": [
10
+ "cloneInternalExtensions": [
11
11
  "sheets_developer_metadata_create",
12
12
  "drive_access_proposals_create",
13
13
  "drive_apps_create",
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "google-workspace",
2
+ "clone": "google-workspace",
3
3
  "tools": [
4
4
  {
5
5
  "name": "google_exchange_token",
@@ -2237,7 +2237,7 @@
2237
2237
  },
2238
2238
  {
2239
2239
  "name": "gmail_send_as_verify",
2240
- "description": "Stub-verify a sendAs alias (marks it accepted without real email)",
2240
+ "description": "Verify ownership of a Gmail sendAs alias",
2241
2241
  "inputSchema": {
2242
2242
  "type": "object",
2243
2243
  "properties": {
@@ -5705,7 +5705,7 @@
5705
5705
  },
5706
5706
  {
5707
5707
  "name": "sheets_developer_metadata_create",
5708
- "description": "Create a developer metadata entry on a spreadsheet (twin extension)",
5708
+ "description": "Create a developer metadata entry on a spreadsheet",
5709
5709
  "inputSchema": {
5710
5710
  "type": "object",
5711
5711
  "properties": {
@@ -6955,7 +6955,7 @@
6955
6955
  },
6956
6956
  {
6957
6957
  "name": "drive_list_file_labels",
6958
- "description": "List labels applied to a Drive file (always empty until labels are modelled)",
6958
+ "description": "List labels applied to a Drive file",
6959
6959
  "inputSchema": {
6960
6960
  "type": "object",
6961
6961
  "properties": {
@@ -7445,7 +7445,7 @@
7445
7445
  },
7446
7446
  {
7447
7447
  "name": "drive_access_proposals_create",
7448
- "description": "Create a Drive access proposal (twin extension; populates list/resolve)",
7448
+ "description": "Create a Drive access proposal (populates list/resolve)",
7449
7449
  "inputSchema": {
7450
7450
  "type": "object",
7451
7451
  "properties": {
@@ -7535,7 +7535,7 @@
7535
7535
  },
7536
7536
  {
7537
7537
  "name": "drive_apps_create",
7538
- "description": "Register a Drive app (twin extension; populates apps.list)",
7538
+ "description": "Register a Drive app (populates apps.list)",
7539
7539
  "inputSchema": {
7540
7540
  "type": "object",
7541
7541
  "properties": {
@@ -7645,7 +7645,7 @@
7645
7645
  },
7646
7646
  {
7647
7647
  "name": "drive_approvals_create",
7648
- "description": "Create a Drive approval workflow (twin extension)",
7648
+ "description": "Create a Drive approval workflow",
7649
7649
  "inputSchema": {
7650
7650
  "type": "object",
7651
7651
  "properties": {
@@ -7682,7 +7682,7 @@
7682
7682
  },
7683
7683
  {
7684
7684
  "name": "drive_labels_create",
7685
- "description": "Create a Drive label definition (twin extension)",
7685
+ "description": "Create a Drive label definition",
7686
7686
  "inputSchema": {
7687
7687
  "type": "object",
7688
7688
  "properties": {
@@ -9161,7 +9161,7 @@
9161
9161
  },
9162
9162
  {
9163
9163
  "name": "directory_people_create",
9164
- "description": "Seed a directory person (twin extension; populates listDirectoryPeople)",
9164
+ "description": "Seed a directory person (populates listDirectoryPeople)",
9165
9165
  "inputSchema": {
9166
9166
  "type": "object",
9167
9167
  "properties": {
@@ -9212,7 +9212,7 @@
9212
9212
  },
9213
9213
  {
9214
9214
  "name": "directory_people_delete",
9215
- "description": "Remove a directory person by resource name (twin extension)",
9215
+ "description": "Remove a directory person by resource name",
9216
9216
  "inputSchema": {
9217
9217
  "type": "object",
9218
9218
  "properties": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "twinName": "jira",
2
+ "cloneName": "jira",
3
3
  "version": "0.6.0",
4
4
  "realServer": "sooperset/mcp-atlassian",
5
5
  "realServerVersion": "0.21.0",
@@ -24,15 +24,55 @@
24
24
  "responses": "ok",
25
25
  "replayPass": "295/295"
26
26
  },
27
- "seeds": ["empty", "small-project", "enterprise", "sprint-active", "large-backlog", "permissions-denied", "rate-limited", "conflict-states"],
28
- "jqlSupported": ["=", "!=", "~", ">", "<", ">=", "<=", "IN", "NOT IN", "AND", "OR", "NOT", "IS EMPTY", "IS NOT EMPTY", "ORDER BY", "WAS", "CHANGED", "CHANGED FROM x TO y", "customfield_XXXXX", "startOfDay()", "endOfDay()", "startOfWeek()", "endOfWeek()", "startOfMonth()", "endOfMonth()", "startOfYear()", "endOfYear()"],
27
+ "seeds": [
28
+ "empty",
29
+ "small-project",
30
+ "enterprise",
31
+ "sprint-active",
32
+ "large-backlog",
33
+ "permissions-denied",
34
+ "rate-limited",
35
+ "conflict-states"
36
+ ],
37
+ "jqlSupported": [
38
+ "=",
39
+ "!=",
40
+ "~",
41
+ ">",
42
+ "<",
43
+ ">=",
44
+ "<=",
45
+ "IN",
46
+ "NOT IN",
47
+ "AND",
48
+ "OR",
49
+ "NOT",
50
+ "IS EMPTY",
51
+ "IS NOT EMPTY",
52
+ "ORDER BY",
53
+ "WAS",
54
+ "CHANGED",
55
+ "CHANGED FROM x TO y",
56
+ "customfield_XXXXX",
57
+ "startOfDay()",
58
+ "endOfDay()",
59
+ "startOfWeek()",
60
+ "endOfWeek()",
61
+ "startOfMonth()",
62
+ "endOfMonth()",
63
+ "startOfYear()",
64
+ "endOfYear()"
65
+ ],
29
66
  "jqlNotSupported": [],
30
67
  "stateEntities": 37,
31
68
  "testCount": 1028,
32
69
  "responseMappers": true,
33
70
  "multipartUpload": true,
34
71
  "fieldFiltering": true,
35
- "expandSupport": ["changelog", "transitions"],
72
+ "expandSupport": [
73
+ "changelog",
74
+ "transitions"
75
+ ],
36
76
  "knownGaps": [
37
77
  "3 ProForma tools are out of scope (SaaS customer portal feature, not commonly used in dev/test).",
38
78
  "Multipart file upload handles base64-encoded content, not raw binary file streams."
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "jira",
2
+ "clone": "jira",
3
3
  "tools": [
4
4
  {
5
5
  "name": "jira_get_all_projects",
@@ -0,0 +1,36 @@
1
+ {
2
+ "clone": "linear",
3
+ "api": "GraphQL",
4
+ "version": "0.1.0",
5
+ "capabilities": [
6
+ {
7
+ "name": "Stateful CRUD (issues, projects, cycles, initiatives)",
8
+ "supported": true
9
+ },
10
+ {
11
+ "name": "Workflow state transitions",
12
+ "supported": true
13
+ },
14
+ {
15
+ "name": "Issue relations",
16
+ "supported": true
17
+ },
18
+ {
19
+ "name": "Comments & attachments",
20
+ "supported": true
21
+ },
22
+ {
23
+ "name": "Webhooks",
24
+ "supported": false
25
+ },
26
+ {
27
+ "name": "OAuth flows",
28
+ "supported": false
29
+ }
30
+ ],
31
+ "thresholds": {
32
+ "minReplaySteps": 41,
33
+ "minScenarioWindows": 18,
34
+ "maxValueDifferences": 0
35
+ }
36
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "linear",
2
+ "clone": "linear",
3
3
  "tools": [
4
4
  {
5
5
  "name": "linear_getViewer",
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "ramp",
2
+ "clone": "ramp",
3
3
  "api": "ramp-agent-tools",
4
4
  "version": "0.1.0",
5
5
  "capabilities": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "ramp",
2
+ "clone": "ramp",
3
3
  "tools": [
4
4
  {
5
5
  "name": "activate-card",
@@ -0,0 +1,38 @@
1
+ {
2
+ "clone": "slack",
3
+ "api": "Web API",
4
+ "version": "0.1.0",
5
+ "capabilities": [
6
+ {
7
+ "name": "Visible MCP tools exactness (8-tool exposed surface)",
8
+ "supported": true
9
+ },
10
+ {
11
+ "name": "Supported Web API flows: auth.test, conversations.create/info/list/history/replies, chat.postMessage/delete, reactions.add/remove, users.list/profile.get",
12
+ "supported": true
13
+ },
14
+ {
15
+ "name": "State replay and reset exactness for supported flows",
16
+ "supported": true
17
+ },
18
+ {
19
+ "name": "Hidden/internal-only Slack tools",
20
+ "supported": false
21
+ },
22
+ {
23
+ "name": "files.* and other non-exposed Slack API areas",
24
+ "supported": false
25
+ },
26
+ {
27
+ "name": "Real-time events (WebSocket)",
28
+ "supported": false
29
+ }
30
+ ],
31
+ "thresholds": {
32
+ "minReplaySteps": 29,
33
+ "minWorkflowScenarios": 2,
34
+ "minWorkflowSteps": 7,
35
+ "minScenarioWindows": 6,
36
+ "maxValueDifferences": 0
37
+ }
38
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "slack",
2
+ "clone": "slack",
3
3
  "tools": [
4
4
  {
5
5
  "name": "slack_post_message",
@@ -0,0 +1,67 @@
1
+ {
2
+ "clone": "stripe",
3
+ "api": "Stripe API v1 (via MCP agent-toolkit)",
4
+ "version": "0.1.0",
5
+ "capabilities": [
6
+ {
7
+ "name": "Stateful CRUD (customers, products, prices)",
8
+ "supported": true
9
+ },
10
+ {
11
+ "name": "Payment lifecycle (intents, confirm, capture, cancel)",
12
+ "supported": true
13
+ },
14
+ {
15
+ "name": "Refunds (full, partial, by charge or payment_intent)",
16
+ "supported": true
17
+ },
18
+ {
19
+ "name": "Invoice lifecycle (draft, finalize, pay, void)",
20
+ "supported": true
21
+ },
22
+ {
23
+ "name": "Subscriptions (create, update, cancel, trial periods)",
24
+ "supported": true
25
+ },
26
+ {
27
+ "name": "Coupons (percent-off, amount-off, duration types)",
28
+ "supported": true
29
+ },
30
+ {
31
+ "name": "Payment Links (create, list)",
32
+ "supported": true
33
+ },
34
+ {
35
+ "name": "Balance and balance transactions",
36
+ "supported": true
37
+ },
38
+ {
39
+ "name": "Disputes (list, update evidence, submit)",
40
+ "supported": true
41
+ },
42
+ {
43
+ "name": "Error responses (400, 404, 402, 429)",
44
+ "supported": true
45
+ },
46
+ {
47
+ "name": "Rate limiting simulation",
48
+ "supported": true
49
+ },
50
+ {
51
+ "name": "Stripe Connect (multi-account)",
52
+ "supported": false
53
+ },
54
+ {
55
+ "name": "Webhooks",
56
+ "supported": false
57
+ },
58
+ {
59
+ "name": "3D Secure / SCA flows",
60
+ "supported": false
61
+ },
62
+ {
63
+ "name": "Tax calculation",
64
+ "supported": false
65
+ }
66
+ ]
67
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "stripe",
2
+ "clone": "stripe",
3
3
  "tools": [
4
4
  {
5
5
  "name": "create_customer",
@@ -192,31 +192,45 @@
192
192
  },
193
193
  {
194
194
  "name": "create_refund",
195
- "description": "This tool will refund a payment intent in Stripe.\n\nIt takes three arguments:\n- payment_intent (str): The ID of the payment intent to refund.\n- amount (int, optional): The amount to refund in currency minor units, e.g. cents for USD and yen for JPY.\n- reason (str, optional): The reason for the refund. Options: \"duplicate\", \"fraudulent\", \"requested_by_customer\".\n",
195
+ "description": "This tool will refund a charge or payment intent in Stripe.\n\nIt takes four arguments:\n- payment_intent (str, optional): The ID of the payment intent to refund. Provide either payment_intent or charge.\n- charge (str, optional): The ID of the charge to refund. Provide either charge or payment_intent.\n- amount (int, optional): The amount to refund in currency minor units, e.g. cents for USD and yen for JPY.\n- reason (str, optional): The reason for the refund. Options: \"duplicate\", \"fraudulent\", \"requested_by_customer\".\n",
196
196
  "inputSchema": {
197
197
  "type": "object",
198
198
  "properties": {
199
199
  "payment_intent": {
200
+ "description": "The ID of the PaymentIntent to refund.",
201
+ "type": "string"
202
+ },
203
+ "charge": {
204
+ "description": "The ID of the charge to refund.",
200
205
  "type": "string"
201
206
  },
202
207
  "amount": {
203
- "type": "integer",
204
- "minimum": 1,
205
- "maximum": 9007199254740991
208
+ "description": "The amount to refund in cents.",
209
+ "type": "integer"
206
210
  },
207
211
  "reason": {
208
- "type": "string",
212
+ "description": "The reason for the refund.",
209
213
  "enum": [
210
214
  "duplicate",
211
215
  "fraudulent",
212
216
  "requested_by_customer"
213
- ]
217
+ ],
218
+ "type": "string"
214
219
  }
215
220
  },
216
- "required": [
217
- "payment_intent"
218
- ],
219
- "additionalProperties": false
221
+ "required": [],
222
+ "anyOf": [
223
+ {
224
+ "required": [
225
+ "payment_intent"
226
+ ]
227
+ },
228
+ {
229
+ "required": [
230
+ "charge"
231
+ ]
232
+ }
233
+ ]
220
234
  },
221
235
  "hidden": false
222
236
  },
@@ -3006,6 +3020,23 @@
3006
3020
  },
3007
3021
  "hidden": true
3008
3022
  },
3023
+ {
3024
+ "name": "replay_event_webhooks",
3025
+ "description": "Replay a stored event to matching webhook endpoints",
3026
+ "inputSchema": {
3027
+ "type": "object",
3028
+ "properties": {
3029
+ "event_id": {
3030
+ "type": "string"
3031
+ }
3032
+ },
3033
+ "required": [
3034
+ "event_id"
3035
+ ],
3036
+ "additionalProperties": false
3037
+ },
3038
+ "hidden": true
3039
+ },
3009
3040
  {
3010
3041
  "name": "create_connected_account",
3011
3042
  "description": "Create a connected account (Stripe Connect)",
@@ -0,0 +1,31 @@
1
+ {
2
+ "clone": "supabase",
3
+ "api": "Management API + SQL",
4
+ "version": "0.1.0",
5
+ "capabilities": [
6
+ {
7
+ "name": "SQL execution",
8
+ "supported": true
9
+ },
10
+ {
11
+ "name": "Schema introspection",
12
+ "supported": true
13
+ },
14
+ {
15
+ "name": "Migrations",
16
+ "supported": true
17
+ },
18
+ {
19
+ "name": "Edge functions (metadata)",
20
+ "supported": true
21
+ },
22
+ {
23
+ "name": "Realtime subscriptions",
24
+ "supported": false
25
+ },
26
+ {
27
+ "name": "Storage (file uploads)",
28
+ "supported": false
29
+ }
30
+ ]
31
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "twin": "supabase",
2
+ "clone": "supabase",
3
3
  "tools": [
4
4
  {
5
5
  "name": "search_docs",