@nordsym/apiclaw 1.5.17 → 1.5.19
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/convex/http.js.map +1 -1
- package/convex/http.ts +516 -0
- package/dist/analytics.d.ts +0 -4
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +0 -1
- package/dist/analytics.js.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/cli/commands/mcp-install.d.ts.map +1 -1
- package/dist/cli/commands/mcp-install.js +8 -87
- package/dist/cli/commands/mcp-install.js.map +1 -1
- package/dist/cli/index.js +0 -7
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +38 -43
- package/dist/credentials.js.map +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +82 -191
- package/dist/discovery.js.map +1 -1
- package/dist/http-api.d.ts.map +1 -1
- package/dist/http-api.js +33 -17
- package/dist/http-api.js.map +1 -1
- package/dist/proxy.js +1 -1
- package/dist/proxy.js.map +1 -1
- package/landing/next-env.d.ts +0 -1
- package/landing/src/app/api/auth/magic-link/route.ts +1 -1
- package/landing/src/app/auth/verify/page.tsx +0 -6
- package/landing/src/app/dashboard/verify/page.tsx +0 -6
- package/landing/src/app/join/page.tsx +0 -6
- package/landing/src/app/layout.tsx +2 -2
- package/landing/src/app/login/page.tsx +1 -1
- package/landing/src/app/mou/[partnerId]/page.tsx +0 -6
- package/landing/src/app/page.tsx +18 -39
- package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +0 -6
- package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +0 -5
- package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +0 -5
- package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +1 -6
- package/landing/src/app/providers/dashboard/[apiId]/page.tsx +0 -5
- package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +0 -5
- package/landing/src/app/providers/dashboard/layout.tsx +6 -6
- package/landing/src/app/providers/dashboard/login/page.tsx +1 -1
- package/landing/src/app/providers/dashboard/page.tsx +1 -1
- package/landing/src/app/providers/dashboard/verify/page.tsx +0 -6
- package/landing/src/app/providers/layout.tsx +1 -1
- package/landing/src/app/upgrade/page.tsx +0 -6
- package/landing/src/app/workspace/page.tsx +0 -6
- package/landing/src/components/HeroTabs.tsx +2 -2
- package/landing/src/components/{Workspace.tsx → ProviderDashboard.tsx} +2 -2
- package/landing/src/components/VideoDemo.tsx +10 -21
- package/landing/src/lib/mock-data.ts +1 -1
- package/landing/src/lib/stats.json +1 -1
- package/package.json +3 -8
- package/src/analytics.ts +0 -5
- package/src/bin.ts +1 -1
- package/src/cli/commands/mcp-install.ts +8 -90
- package/src/cli/index.ts +0 -8
- package/src/credentials.ts +39 -44
- package/src/discovery.ts +82 -191
- package/src/http-api.ts +34 -18
- package/src/proxy.ts +1 -1
- package/APILAYER_STATUS_2026-03-24.md +0 -38
- package/CHANGELOG-WHITELIST-V2.md +0 -269
- package/HIVR-WHITELIST-STATUS.md +0 -205
- package/HIVR-WHITELIST.md +0 -148
- package/TERMINOLOGY-AUDIT.md +0 -99
- package/TERMINOLOGY-FIXED.md +0 -74
- package/VIDEO-DEMO-GUIDE.md +0 -82
- package/WHITELIST-ARCHITECTURE.md +0 -379
- package/api/discover.ts +0 -71
- package/api/health.ts +0 -20
- package/convex/adminActivate.d.ts +0 -3
- package/convex/adminActivate.js +0 -47
- package/convex/adminStats.d.ts +0 -3
- package/convex/adminStats.js +0 -42
- package/convex/agents.d.ts +0 -54
- package/convex/agents.js +0 -499
- package/convex/analytics.d.ts +0 -5
- package/convex/analytics.js +0 -166
- package/convex/billing.d.ts +0 -88
- package/convex/billing.js +0 -655
- package/convex/capabilities.d.ts +0 -9
- package/convex/capabilities.js +0 -145
- package/convex/chains.d.ts +0 -67
- package/convex/chains.js +0 -1042
- package/convex/credits.d.ts +0 -25
- package/convex/credits.js +0 -186
- package/convex/crons.d.ts +0 -3
- package/convex/crons.js +0 -17
- package/convex/directCall.d.ts +0 -72
- package/convex/directCall.js +0 -627
- package/convex/earnProgress.d.ts +0 -58
- package/convex/earnProgress.js +0 -649
- package/convex/email.d.ts +0 -14
- package/convex/email.js +0 -300
- package/convex/feedback.d.ts +0 -7
- package/convex/feedback.js +0 -227
- package/convex/http.d.ts +0 -3
- package/convex/http.js +0 -910
- package/convex/logs.d.ts +0 -38
- package/convex/logs.js +0 -487
- package/convex/mou.d.ts +0 -6
- package/convex/mou.js +0 -82
- package/convex/providerKeys.d.ts +0 -31
- package/convex/providerKeys.js +0 -257
- package/convex/providers.d.ts +0 -29
- package/convex/providers.js +0 -756
- package/convex/purchases.d.ts +0 -7
- package/convex/purchases.js +0 -157
- package/convex/ratelimit.d.ts +0 -4
- package/convex/ratelimit.js +0 -91
- package/convex/searchLogs.d.ts +0 -4
- package/convex/searchLogs.js +0 -129
- package/convex/spendAlerts.d.ts +0 -36
- package/convex/spendAlerts.js +0 -380
- package/convex/stripeActions.d.ts +0 -19
- package/convex/stripeActions.js +0 -411
- package/convex/teams.d.ts +0 -21
- package/convex/teams.js +0 -215
- package/convex/telemetry.d.ts +0 -4
- package/convex/telemetry.js +0 -74
- package/convex/usage.d.ts +0 -27
- package/convex/usage.js +0 -229
- package/convex/waitlist.d.ts +0 -4
- package/convex/waitlist.js +0 -49
- package/convex/webhooks.d.ts +0 -12
- package/convex/webhooks.js +0 -410
- package/convex/workspaces.d.ts +0 -29
- package/convex/workspaces.js +0 -880
- package/direct-test.mjs +0 -51
- package/dist/access-control.d.ts +0 -45
- package/dist/access-control.d.ts.map +0 -1
- package/dist/access-control.js +0 -142
- package/dist/access-control.js.map +0 -1
- package/dist/chain-types.d.ts +0 -187
- package/dist/chain-types.d.ts.map +0 -1
- package/dist/chain-types.js +0 -33
- package/dist/chain-types.js.map +0 -1
- package/dist/convex/adminActivate.js +0 -46
- package/dist/convex/adminStats.js +0 -41
- package/dist/convex/agents.js +0 -498
- package/dist/convex/analytics.js +0 -165
- package/dist/convex/billing.js +0 -654
- package/dist/convex/capabilities.js +0 -144
- package/dist/convex/chains.js +0 -1041
- package/dist/convex/credits.js +0 -185
- package/dist/convex/crons.js +0 -16
- package/dist/convex/directCall.js +0 -626
- package/dist/convex/earnProgress.js +0 -648
- package/dist/convex/email.js +0 -299
- package/dist/convex/feedback.js +0 -226
- package/dist/convex/http.js +0 -909
- package/dist/convex/logs.js +0 -486
- package/dist/convex/mou.js +0 -81
- package/dist/convex/providerKeys.js +0 -256
- package/dist/convex/providers.js +0 -755
- package/dist/convex/purchases.js +0 -156
- package/dist/convex/ratelimit.js +0 -90
- package/dist/convex/schema.js +0 -709
- package/dist/convex/searchLogs.js +0 -128
- package/dist/convex/spendAlerts.js +0 -379
- package/dist/convex/stripeActions.js +0 -410
- package/dist/convex/teams.js +0 -214
- package/dist/convex/telemetry.js +0 -73
- package/dist/convex/usage.js +0 -228
- package/dist/convex/waitlist.js +0 -48
- package/dist/convex/webhooks.js +0 -409
- package/dist/convex/workspaces.js +0 -879
- package/dist/hivr-whitelist.d.ts +0 -18
- package/dist/hivr-whitelist.d.ts.map +0 -1
- package/dist/hivr-whitelist.js +0 -95
- package/dist/hivr-whitelist.js.map +0 -1
- package/dist/http-server-minimal.d.ts +0 -7
- package/dist/http-server-minimal.d.ts.map +0 -1
- package/dist/http-server-minimal.js +0 -126
- package/dist/http-server-minimal.js.map +0 -1
- package/dist/product-whitelist.d.ts +0 -37
- package/dist/product-whitelist.d.ts.map +0 -1
- package/dist/product-whitelist.js +0 -203
- package/dist/product-whitelist.js.map +0 -1
- package/dist/src/analytics.js +0 -129
- package/dist/src/bin.js +0 -17
- package/dist/src/capability-router.js +0 -240
- package/dist/src/chainExecutor.js +0 -451
- package/dist/src/chainResolver.js +0 -518
- package/dist/src/cli/commands/doctor.js +0 -324
- package/dist/src/cli/commands/mcp-install.js +0 -255
- package/dist/src/cli/commands/restore.js +0 -259
- package/dist/src/cli/commands/setup.js +0 -205
- package/dist/src/cli/commands/uninstall.js +0 -188
- package/dist/src/cli/index.js +0 -111
- package/dist/src/cli.js +0 -302
- package/dist/src/confirmation.js +0 -240
- package/dist/src/credentials.js +0 -357
- package/dist/src/credits.js +0 -260
- package/dist/src/crypto.js +0 -66
- package/dist/src/discovery.js +0 -504
- package/dist/src/enterprise/env.js +0 -123
- package/dist/src/enterprise/script-generator.js +0 -460
- package/dist/src/execute-dynamic.js +0 -473
- package/dist/src/execute.js +0 -1727
- package/dist/src/index.js +0 -2062
- package/dist/src/metered.js +0 -80
- package/dist/src/open-apis.js +0 -276
- package/dist/src/proxy.js +0 -28
- package/dist/src/session.js +0 -86
- package/dist/src/stripe.js +0 -407
- package/dist/src/telemetry.js +0 -49
- package/dist/src/types.js +0 -2
- package/dist/src/utils/backup.js +0 -181
- package/dist/src/utils/config.js +0 -220
- package/dist/src/utils/os.js +0 -105
- package/dist/src/utils/paths.js +0 -159
- package/landing/pages/api/discover.ts +0 -43
- package/landing/pages/api/health.ts +0 -20
- package/scripts/test-whitelist-v2.sh +0 -128
- package/src/access-control.ts +0 -174
- package/src/hivr-whitelist.ts +0 -110
- package/src/http-server-minimal.ts +0 -154
- package/src/product-whitelist.ts +0 -246
- package/test-actual-handlers.ts +0 -92
- package/test-apilayer-all-14.ts +0 -249
- package/test-apilayer-fixed.ts +0 -248
- package/test-direct-endpoints.ts +0 -174
- package/test-exact-endpoints.ts +0 -144
- package/test-final.ts +0 -83
- package/test-full-routing.ts +0 -100
- package/test-handlers-correct.ts +0 -217
- package/test-numverify-key.ts +0 -41
- package/test-via-handlers.ts +0 -92
- package/test-worldnews.mjs +0 -26
package/convex/http.ts
CHANGED
|
@@ -797,6 +797,522 @@ http.route({
|
|
|
797
797
|
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
798
798
|
});
|
|
799
799
|
|
|
800
|
+
// ==============================================
|
|
801
|
+
// SERPER (Google Search) PROXY
|
|
802
|
+
// ==============================================
|
|
803
|
+
http.route({
|
|
804
|
+
path: "/proxy/serper",
|
|
805
|
+
method: "POST",
|
|
806
|
+
handler: httpAction(async (ctx, request) => {
|
|
807
|
+
await validateAndLogProxyCall(ctx, request, "serper", "search");
|
|
808
|
+
const SERPER_KEY = process.env.SERPER_API_KEY;
|
|
809
|
+
if (!SERPER_KEY) {
|
|
810
|
+
return jsonResponse({ error: "Serper not configured" }, 500);
|
|
811
|
+
}
|
|
812
|
+
try {
|
|
813
|
+
const body = await request.json();
|
|
814
|
+
const { query, q, num = 10, gl = "us", hl = "en" } = body;
|
|
815
|
+
const searchQuery = query || q;
|
|
816
|
+
if (!searchQuery) {
|
|
817
|
+
return jsonResponse({ error: "query required" }, 400);
|
|
818
|
+
}
|
|
819
|
+
const response = await fetch("https://google.serper.dev/search", {
|
|
820
|
+
method: "POST",
|
|
821
|
+
headers: {
|
|
822
|
+
"X-API-KEY": SERPER_KEY,
|
|
823
|
+
"Content-Type": "application/json",
|
|
824
|
+
},
|
|
825
|
+
body: JSON.stringify({ q: searchQuery, num, gl, hl }),
|
|
826
|
+
});
|
|
827
|
+
const data = await response.json();
|
|
828
|
+
return jsonResponse(data, response.status);
|
|
829
|
+
} catch (e: any) {
|
|
830
|
+
return jsonResponse({ error: e.message }, 500);
|
|
831
|
+
}
|
|
832
|
+
}),
|
|
833
|
+
});
|
|
834
|
+
|
|
835
|
+
http.route({
|
|
836
|
+
path: "/proxy/serper",
|
|
837
|
+
method: "OPTIONS",
|
|
838
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
839
|
+
});
|
|
840
|
+
|
|
841
|
+
// ==============================================
|
|
842
|
+
// FIRECRAWL (Web Scraping) PROXY
|
|
843
|
+
// ==============================================
|
|
844
|
+
http.route({
|
|
845
|
+
path: "/proxy/firecrawl",
|
|
846
|
+
method: "POST",
|
|
847
|
+
handler: httpAction(async (ctx, request) => {
|
|
848
|
+
await validateAndLogProxyCall(ctx, request, "firecrawl", "scrape");
|
|
849
|
+
const FIRECRAWL_KEY = process.env.FIRECRAWL_API_KEY;
|
|
850
|
+
if (!FIRECRAWL_KEY) {
|
|
851
|
+
return jsonResponse({ error: "Firecrawl not configured" }, 500);
|
|
852
|
+
}
|
|
853
|
+
try {
|
|
854
|
+
const body = await request.json();
|
|
855
|
+
const { url, formats = ["markdown"], onlyMainContent = true } = body;
|
|
856
|
+
if (!url) {
|
|
857
|
+
return jsonResponse({ error: "url required" }, 400);
|
|
858
|
+
}
|
|
859
|
+
const response = await fetch("https://api.firecrawl.dev/v1/scrape", {
|
|
860
|
+
method: "POST",
|
|
861
|
+
headers: {
|
|
862
|
+
Authorization: `Bearer ${FIRECRAWL_KEY}`,
|
|
863
|
+
"Content-Type": "application/json",
|
|
864
|
+
},
|
|
865
|
+
body: JSON.stringify({ url, formats, onlyMainContent }),
|
|
866
|
+
});
|
|
867
|
+
const data = await response.json();
|
|
868
|
+
return jsonResponse(data, response.status);
|
|
869
|
+
} catch (e: any) {
|
|
870
|
+
return jsonResponse({ error: e.message }, 500);
|
|
871
|
+
}
|
|
872
|
+
}),
|
|
873
|
+
});
|
|
874
|
+
|
|
875
|
+
http.route({
|
|
876
|
+
path: "/proxy/firecrawl",
|
|
877
|
+
method: "OPTIONS",
|
|
878
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
879
|
+
});
|
|
880
|
+
|
|
881
|
+
// ==============================================
|
|
882
|
+
// GROQ (LLM) PROXY
|
|
883
|
+
// ==============================================
|
|
884
|
+
http.route({
|
|
885
|
+
path: "/proxy/groq",
|
|
886
|
+
method: "POST",
|
|
887
|
+
handler: httpAction(async (ctx, request) => {
|
|
888
|
+
await validateAndLogProxyCall(ctx, request, "groq", "chat");
|
|
889
|
+
const GROQ_KEY = process.env.GROQ_API_KEY;
|
|
890
|
+
if (!GROQ_KEY) {
|
|
891
|
+
return jsonResponse({ error: "Groq not configured" }, 500);
|
|
892
|
+
}
|
|
893
|
+
try {
|
|
894
|
+
const body = await request.json();
|
|
895
|
+
const { model = "llama-3.3-70b-versatile", messages, temperature = 0.7, max_tokens = 1024 } = body;
|
|
896
|
+
if (!messages) {
|
|
897
|
+
return jsonResponse({ error: "messages required" }, 400);
|
|
898
|
+
}
|
|
899
|
+
const response = await fetch("https://api.groq.com/openai/v1/chat/completions", {
|
|
900
|
+
method: "POST",
|
|
901
|
+
headers: {
|
|
902
|
+
Authorization: `Bearer ${GROQ_KEY}`,
|
|
903
|
+
"Content-Type": "application/json",
|
|
904
|
+
},
|
|
905
|
+
body: JSON.stringify({ model, messages, temperature, max_tokens }),
|
|
906
|
+
});
|
|
907
|
+
const data = await response.json();
|
|
908
|
+
return jsonResponse(data, response.status);
|
|
909
|
+
} catch (e: any) {
|
|
910
|
+
return jsonResponse({ error: e.message }, 500);
|
|
911
|
+
}
|
|
912
|
+
}),
|
|
913
|
+
});
|
|
914
|
+
|
|
915
|
+
http.route({
|
|
916
|
+
path: "/proxy/groq",
|
|
917
|
+
method: "OPTIONS",
|
|
918
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
919
|
+
});
|
|
920
|
+
|
|
921
|
+
// ==============================================
|
|
922
|
+
// MISTRAL (LLM/Embeddings) PROXY
|
|
923
|
+
// ==============================================
|
|
924
|
+
http.route({
|
|
925
|
+
path: "/proxy/mistral",
|
|
926
|
+
method: "POST",
|
|
927
|
+
handler: httpAction(async (ctx, request) => {
|
|
928
|
+
await validateAndLogProxyCall(ctx, request, "mistral", "chat");
|
|
929
|
+
const MISTRAL_KEY = process.env.MISTRAL_API_KEY;
|
|
930
|
+
if (!MISTRAL_KEY) {
|
|
931
|
+
return jsonResponse({ error: "Mistral not configured" }, 500);
|
|
932
|
+
}
|
|
933
|
+
try {
|
|
934
|
+
const body = await request.json();
|
|
935
|
+
const { model = "mistral-small-latest", messages, temperature = 0.7, max_tokens = 1024 } = body;
|
|
936
|
+
if (!messages) {
|
|
937
|
+
return jsonResponse({ error: "messages required" }, 400);
|
|
938
|
+
}
|
|
939
|
+
const response = await fetch("https://api.mistral.ai/v1/chat/completions", {
|
|
940
|
+
method: "POST",
|
|
941
|
+
headers: {
|
|
942
|
+
Authorization: `Bearer ${MISTRAL_KEY}`,
|
|
943
|
+
"Content-Type": "application/json",
|
|
944
|
+
},
|
|
945
|
+
body: JSON.stringify({ model, messages, temperature, max_tokens }),
|
|
946
|
+
});
|
|
947
|
+
const data = await response.json();
|
|
948
|
+
return jsonResponse(data, response.status);
|
|
949
|
+
} catch (e: any) {
|
|
950
|
+
return jsonResponse({ error: e.message }, 500);
|
|
951
|
+
}
|
|
952
|
+
}),
|
|
953
|
+
});
|
|
954
|
+
|
|
955
|
+
http.route({
|
|
956
|
+
path: "/proxy/mistral",
|
|
957
|
+
method: "OPTIONS",
|
|
958
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
959
|
+
});
|
|
960
|
+
|
|
961
|
+
// ==============================================
|
|
962
|
+
// COHERE (LLM/Rerank) PROXY
|
|
963
|
+
// ==============================================
|
|
964
|
+
http.route({
|
|
965
|
+
path: "/proxy/cohere",
|
|
966
|
+
method: "POST",
|
|
967
|
+
handler: httpAction(async (ctx, request) => {
|
|
968
|
+
await validateAndLogProxyCall(ctx, request, "cohere", "chat");
|
|
969
|
+
const COHERE_KEY = process.env.COHERE_API_KEY;
|
|
970
|
+
if (!COHERE_KEY) {
|
|
971
|
+
return jsonResponse({ error: "Cohere not configured" }, 500);
|
|
972
|
+
}
|
|
973
|
+
try {
|
|
974
|
+
const body = await request.json();
|
|
975
|
+
const { model = "command-a-03-2025", message, chat_history, temperature = 0.7, max_tokens = 1024 } = body;
|
|
976
|
+
if (!message) {
|
|
977
|
+
return jsonResponse({ error: "message required" }, 400);
|
|
978
|
+
}
|
|
979
|
+
const response = await fetch("https://api.cohere.com/v2/chat", {
|
|
980
|
+
method: "POST",
|
|
981
|
+
headers: {
|
|
982
|
+
Authorization: `Bearer ${COHERE_KEY}`,
|
|
983
|
+
"Content-Type": "application/json",
|
|
984
|
+
},
|
|
985
|
+
body: JSON.stringify({ model, message, chat_history, temperature, max_tokens }),
|
|
986
|
+
});
|
|
987
|
+
const data = await response.json();
|
|
988
|
+
return jsonResponse(data, response.status);
|
|
989
|
+
} catch (e: any) {
|
|
990
|
+
return jsonResponse({ error: e.message }, 500);
|
|
991
|
+
}
|
|
992
|
+
}),
|
|
993
|
+
});
|
|
994
|
+
|
|
995
|
+
http.route({
|
|
996
|
+
path: "/proxy/cohere",
|
|
997
|
+
method: "OPTIONS",
|
|
998
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
999
|
+
});
|
|
1000
|
+
|
|
1001
|
+
// ==============================================
|
|
1002
|
+
// REPLICATE (ML Models) PROXY
|
|
1003
|
+
// ==============================================
|
|
1004
|
+
http.route({
|
|
1005
|
+
path: "/proxy/replicate",
|
|
1006
|
+
method: "POST",
|
|
1007
|
+
handler: httpAction(async (ctx, request) => {
|
|
1008
|
+
await validateAndLogProxyCall(ctx, request, "replicate", "prediction");
|
|
1009
|
+
const REPLICATE_KEY = process.env.REPLICATE_API_TOKEN;
|
|
1010
|
+
if (!REPLICATE_KEY) {
|
|
1011
|
+
return jsonResponse({ error: "Replicate not configured" }, 500);
|
|
1012
|
+
}
|
|
1013
|
+
try {
|
|
1014
|
+
const body = await request.json();
|
|
1015
|
+
const { model, input, version } = body;
|
|
1016
|
+
if (!model && !version) {
|
|
1017
|
+
return jsonResponse({ error: "model or version required" }, 400);
|
|
1018
|
+
}
|
|
1019
|
+
const endpoint = version
|
|
1020
|
+
? "https://api.replicate.com/v1/predictions"
|
|
1021
|
+
: `https://api.replicate.com/v1/models/${model}/predictions`;
|
|
1022
|
+
const payload = version ? { version, input } : { input };
|
|
1023
|
+
const response = await fetch(endpoint, {
|
|
1024
|
+
method: "POST",
|
|
1025
|
+
headers: {
|
|
1026
|
+
Authorization: `Bearer ${REPLICATE_KEY}`,
|
|
1027
|
+
"Content-Type": "application/json",
|
|
1028
|
+
Prefer: "wait",
|
|
1029
|
+
},
|
|
1030
|
+
body: JSON.stringify(payload),
|
|
1031
|
+
});
|
|
1032
|
+
const data = await response.json();
|
|
1033
|
+
return jsonResponse(data, response.status);
|
|
1034
|
+
} catch (e: any) {
|
|
1035
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1036
|
+
}
|
|
1037
|
+
}),
|
|
1038
|
+
});
|
|
1039
|
+
|
|
1040
|
+
http.route({
|
|
1041
|
+
path: "/proxy/replicate",
|
|
1042
|
+
method: "OPTIONS",
|
|
1043
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1044
|
+
});
|
|
1045
|
+
|
|
1046
|
+
// ==============================================
|
|
1047
|
+
// DEEPGRAM (Speech-to-Text) PROXY
|
|
1048
|
+
// ==============================================
|
|
1049
|
+
http.route({
|
|
1050
|
+
path: "/proxy/deepgram",
|
|
1051
|
+
method: "POST",
|
|
1052
|
+
handler: httpAction(async (ctx, request) => {
|
|
1053
|
+
await validateAndLogProxyCall(ctx, request, "deepgram", "transcribe");
|
|
1054
|
+
const DEEPGRAM_KEY = process.env.DEEPGRAM_API_KEY;
|
|
1055
|
+
if (!DEEPGRAM_KEY) {
|
|
1056
|
+
return jsonResponse({ error: "Deepgram not configured" }, 500);
|
|
1057
|
+
}
|
|
1058
|
+
try {
|
|
1059
|
+
const body = await request.json();
|
|
1060
|
+
const { url, model = "nova-3", language = "en", smart_format = true } = body;
|
|
1061
|
+
if (!url) {
|
|
1062
|
+
return jsonResponse({ error: "url required (audio file URL)" }, 400);
|
|
1063
|
+
}
|
|
1064
|
+
const params = new URLSearchParams({
|
|
1065
|
+
model,
|
|
1066
|
+
language,
|
|
1067
|
+
smart_format: String(smart_format),
|
|
1068
|
+
});
|
|
1069
|
+
const response = await fetch(
|
|
1070
|
+
`https://api.deepgram.com/v1/listen?${params}`,
|
|
1071
|
+
{
|
|
1072
|
+
method: "POST",
|
|
1073
|
+
headers: {
|
|
1074
|
+
Authorization: `Token ${DEEPGRAM_KEY}`,
|
|
1075
|
+
"Content-Type": "application/json",
|
|
1076
|
+
},
|
|
1077
|
+
body: JSON.stringify({ url }),
|
|
1078
|
+
}
|
|
1079
|
+
);
|
|
1080
|
+
const data = await response.json();
|
|
1081
|
+
return jsonResponse(data, response.status);
|
|
1082
|
+
} catch (e: any) {
|
|
1083
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1084
|
+
}
|
|
1085
|
+
}),
|
|
1086
|
+
});
|
|
1087
|
+
|
|
1088
|
+
http.route({
|
|
1089
|
+
path: "/proxy/deepgram",
|
|
1090
|
+
method: "OPTIONS",
|
|
1091
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1092
|
+
});
|
|
1093
|
+
|
|
1094
|
+
// ==============================================
|
|
1095
|
+
// E2B (Code Sandbox) PROXY
|
|
1096
|
+
// ==============================================
|
|
1097
|
+
http.route({
|
|
1098
|
+
path: "/proxy/e2b",
|
|
1099
|
+
method: "POST",
|
|
1100
|
+
handler: httpAction(async (ctx, request) => {
|
|
1101
|
+
await validateAndLogProxyCall(ctx, request, "e2b", "execute");
|
|
1102
|
+
const E2B_KEY = process.env.E2B_API_KEY;
|
|
1103
|
+
if (!E2B_KEY) {
|
|
1104
|
+
return jsonResponse({ error: "E2B not configured" }, 500);
|
|
1105
|
+
}
|
|
1106
|
+
try {
|
|
1107
|
+
const body = await request.json();
|
|
1108
|
+
const { code, language = "python", template = "base" } = body;
|
|
1109
|
+
if (!code) {
|
|
1110
|
+
return jsonResponse({ error: "code required" }, 400);
|
|
1111
|
+
}
|
|
1112
|
+
const response = await fetch("https://api.e2b.dev/sandboxes", {
|
|
1113
|
+
method: "POST",
|
|
1114
|
+
headers: {
|
|
1115
|
+
"X-API-Key": E2B_KEY,
|
|
1116
|
+
"Content-Type": "application/json",
|
|
1117
|
+
},
|
|
1118
|
+
body: JSON.stringify({ templateID: template, metadata: { language } }),
|
|
1119
|
+
});
|
|
1120
|
+
const sandbox = await response.json();
|
|
1121
|
+
if (!response.ok) {
|
|
1122
|
+
return jsonResponse(sandbox, response.status);
|
|
1123
|
+
}
|
|
1124
|
+
const execResponse = await fetch(
|
|
1125
|
+
`https://api.e2b.dev/sandboxes/${sandbox.sandboxID}/code/execution`,
|
|
1126
|
+
{
|
|
1127
|
+
method: "POST",
|
|
1128
|
+
headers: {
|
|
1129
|
+
"X-API-Key": E2B_KEY,
|
|
1130
|
+
"Content-Type": "application/json",
|
|
1131
|
+
},
|
|
1132
|
+
body: JSON.stringify({ code, language }),
|
|
1133
|
+
}
|
|
1134
|
+
);
|
|
1135
|
+
const result = await execResponse.json();
|
|
1136
|
+
return jsonResponse(result, execResponse.status);
|
|
1137
|
+
} catch (e: any) {
|
|
1138
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1139
|
+
}
|
|
1140
|
+
}),
|
|
1141
|
+
});
|
|
1142
|
+
|
|
1143
|
+
http.route({
|
|
1144
|
+
path: "/proxy/e2b",
|
|
1145
|
+
method: "OPTIONS",
|
|
1146
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1147
|
+
});
|
|
1148
|
+
|
|
1149
|
+
// ==============================================
|
|
1150
|
+
// TOGETHER AI (Open-source LLM Inference) PROXY
|
|
1151
|
+
// ==============================================
|
|
1152
|
+
http.route({
|
|
1153
|
+
path: "/proxy/together",
|
|
1154
|
+
method: "POST",
|
|
1155
|
+
handler: httpAction(async (ctx, request) => {
|
|
1156
|
+
await validateAndLogProxyCall(ctx, request, "together", "chat");
|
|
1157
|
+
const TOGETHER_KEY = process.env.TOGETHER_API_KEY;
|
|
1158
|
+
if (!TOGETHER_KEY) {
|
|
1159
|
+
return jsonResponse({ error: "Together AI not configured" }, 500);
|
|
1160
|
+
}
|
|
1161
|
+
try {
|
|
1162
|
+
const body = await request.json();
|
|
1163
|
+
const { model = "meta-llama/Llama-3.3-70B-Instruct-Turbo", messages, temperature = 0.7, max_tokens = 1024 } = body;
|
|
1164
|
+
if (!messages || !Array.isArray(messages)) {
|
|
1165
|
+
return jsonResponse({ error: "messages array required" }, 400);
|
|
1166
|
+
}
|
|
1167
|
+
const response = await fetch("https://api.together.xyz/v1/chat/completions", {
|
|
1168
|
+
method: "POST",
|
|
1169
|
+
headers: {
|
|
1170
|
+
Authorization: `Bearer ${TOGETHER_KEY}`,
|
|
1171
|
+
"Content-Type": "application/json",
|
|
1172
|
+
},
|
|
1173
|
+
body: JSON.stringify({ model, messages, temperature, max_tokens }),
|
|
1174
|
+
});
|
|
1175
|
+
const data = await response.json();
|
|
1176
|
+
return jsonResponse(data, response.status);
|
|
1177
|
+
} catch (e: any) {
|
|
1178
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1179
|
+
}
|
|
1180
|
+
}),
|
|
1181
|
+
});
|
|
1182
|
+
|
|
1183
|
+
http.route({
|
|
1184
|
+
path: "/proxy/together",
|
|
1185
|
+
method: "OPTIONS",
|
|
1186
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1187
|
+
});
|
|
1188
|
+
|
|
1189
|
+
// ==============================================
|
|
1190
|
+
// STABILITY AI (Image Generation) PROXY
|
|
1191
|
+
// ==============================================
|
|
1192
|
+
http.route({
|
|
1193
|
+
path: "/proxy/stability",
|
|
1194
|
+
method: "POST",
|
|
1195
|
+
handler: httpAction(async (ctx, request) => {
|
|
1196
|
+
await validateAndLogProxyCall(ctx, request, "stability", "generate");
|
|
1197
|
+
const STABILITY_KEY = process.env.STABILITY_API_KEY;
|
|
1198
|
+
if (!STABILITY_KEY) {
|
|
1199
|
+
return jsonResponse({ error: "Stability AI not configured" }, 500);
|
|
1200
|
+
}
|
|
1201
|
+
try {
|
|
1202
|
+
const body = await request.json();
|
|
1203
|
+
const { prompt, model = "sd3.5-large", output_format = "png", aspect_ratio = "1:1" } = body;
|
|
1204
|
+
if (!prompt) {
|
|
1205
|
+
return jsonResponse({ error: "prompt required" }, 400);
|
|
1206
|
+
}
|
|
1207
|
+
const formData = new FormData();
|
|
1208
|
+
formData.append("prompt", prompt);
|
|
1209
|
+
formData.append("output_format", output_format);
|
|
1210
|
+
formData.append("aspect_ratio", aspect_ratio);
|
|
1211
|
+
const response = await fetch(
|
|
1212
|
+
`https://api.stability.ai/v2beta/stable-image/generate/${model}`,
|
|
1213
|
+
{
|
|
1214
|
+
method: "POST",
|
|
1215
|
+
headers: {
|
|
1216
|
+
Authorization: `Bearer ${STABILITY_KEY}`,
|
|
1217
|
+
Accept: "application/json",
|
|
1218
|
+
},
|
|
1219
|
+
body: formData,
|
|
1220
|
+
}
|
|
1221
|
+
);
|
|
1222
|
+
const data = await response.json();
|
|
1223
|
+
return jsonResponse(data, response.status);
|
|
1224
|
+
} catch (e: any) {
|
|
1225
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1226
|
+
}
|
|
1227
|
+
}),
|
|
1228
|
+
});
|
|
1229
|
+
|
|
1230
|
+
http.route({
|
|
1231
|
+
path: "/proxy/stability",
|
|
1232
|
+
method: "OPTIONS",
|
|
1233
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1234
|
+
});
|
|
1235
|
+
|
|
1236
|
+
// ==============================================
|
|
1237
|
+
// ASSEMBLYAI (Audio Intelligence) PROXY
|
|
1238
|
+
// ==============================================
|
|
1239
|
+
http.route({
|
|
1240
|
+
path: "/proxy/assemblyai",
|
|
1241
|
+
method: "POST",
|
|
1242
|
+
handler: httpAction(async (ctx, request) => {
|
|
1243
|
+
await validateAndLogProxyCall(ctx, request, "assemblyai", "transcribe");
|
|
1244
|
+
const ASSEMBLYAI_KEY = process.env.ASSEMBLYAI_API_KEY;
|
|
1245
|
+
if (!ASSEMBLYAI_KEY) {
|
|
1246
|
+
return jsonResponse({ error: "AssemblyAI not configured" }, 500);
|
|
1247
|
+
}
|
|
1248
|
+
try {
|
|
1249
|
+
const body = await request.json();
|
|
1250
|
+
const { audio_url, language_detection = true, speaker_labels = true } = body;
|
|
1251
|
+
if (!audio_url) {
|
|
1252
|
+
return jsonResponse({ error: "audio_url required" }, 400);
|
|
1253
|
+
}
|
|
1254
|
+
const response = await fetch("https://api.assemblyai.com/v2/transcript", {
|
|
1255
|
+
method: "POST",
|
|
1256
|
+
headers: {
|
|
1257
|
+
Authorization: ASSEMBLYAI_KEY,
|
|
1258
|
+
"Content-Type": "application/json",
|
|
1259
|
+
},
|
|
1260
|
+
body: JSON.stringify({ audio_url, language_detection, speaker_labels }),
|
|
1261
|
+
});
|
|
1262
|
+
const data = await response.json();
|
|
1263
|
+
return jsonResponse(data, response.status);
|
|
1264
|
+
} catch (e: any) {
|
|
1265
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1266
|
+
}
|
|
1267
|
+
}),
|
|
1268
|
+
});
|
|
1269
|
+
|
|
1270
|
+
http.route({
|
|
1271
|
+
path: "/proxy/assemblyai",
|
|
1272
|
+
method: "OPTIONS",
|
|
1273
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1274
|
+
});
|
|
1275
|
+
|
|
1276
|
+
// ==============================================
|
|
1277
|
+
// APILAYER (Multi-API: Exchange, Stocks, Aviation, etc.) PROXY
|
|
1278
|
+
// ==============================================
|
|
1279
|
+
http.route({
|
|
1280
|
+
path: "/proxy/apilayer",
|
|
1281
|
+
method: "POST",
|
|
1282
|
+
handler: httpAction(async (ctx, request) => {
|
|
1283
|
+
await validateAndLogProxyCall(ctx, request, "apilayer", "call");
|
|
1284
|
+
const APILAYER_KEY = process.env.APILAYER_API_KEY;
|
|
1285
|
+
if (!APILAYER_KEY) {
|
|
1286
|
+
return jsonResponse({ error: "APILayer not configured" }, 500);
|
|
1287
|
+
}
|
|
1288
|
+
try {
|
|
1289
|
+
const body = await request.json();
|
|
1290
|
+
const { service, endpoint, params = {} } = body;
|
|
1291
|
+
if (!service || !endpoint) {
|
|
1292
|
+
return jsonResponse({ error: "service and endpoint required (e.g. service:'exchangerates', endpoint:'/latest')" }, 400);
|
|
1293
|
+
}
|
|
1294
|
+
const queryString = new URLSearchParams(params).toString();
|
|
1295
|
+
const url = `https://api.apilayer.com/${service}${endpoint}${queryString ? '?' + queryString : ''}`;
|
|
1296
|
+
const response = await fetch(url, {
|
|
1297
|
+
method: "GET",
|
|
1298
|
+
headers: {
|
|
1299
|
+
apikey: APILAYER_KEY,
|
|
1300
|
+
},
|
|
1301
|
+
});
|
|
1302
|
+
const data = await response.json();
|
|
1303
|
+
return jsonResponse(data, response.status);
|
|
1304
|
+
} catch (e: any) {
|
|
1305
|
+
return jsonResponse({ error: e.message }, 500);
|
|
1306
|
+
}
|
|
1307
|
+
}),
|
|
1308
|
+
});
|
|
1309
|
+
|
|
1310
|
+
http.route({
|
|
1311
|
+
path: "/proxy/apilayer",
|
|
1312
|
+
method: "OPTIONS",
|
|
1313
|
+
handler: httpAction(async () => new Response(null, { headers: corsHeaders })),
|
|
1314
|
+
});
|
|
1315
|
+
|
|
800
1316
|
// ==============================================
|
|
801
1317
|
// WORKSPACE / MAGIC LINK ENDPOINTS
|
|
802
1318
|
// ==============================================
|
package/dist/analytics.d.ts
CHANGED
package/dist/analytics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+BD;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAYhD;AA8BD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAalE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
|
package/dist/analytics.js
CHANGED
package/dist/analytics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/bin.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - No args or MCP-related args → Run MCP server
|
|
6
6
|
* - setup/doctor/restore/uninstall → Run CLI
|
|
7
7
|
*/
|
|
8
|
-
const cliCommands = ['setup', 'mcp-install', '
|
|
8
|
+
const cliCommands = ['setup', 'mcp-install', 'doctor', 'restore', 'uninstall', 'help', '--help', '-h', '--version', '-V'];
|
|
9
9
|
const firstArg = process.argv[2];
|
|
10
10
|
if (!firstArg || !cliCommands.includes(firstArg)) {
|
|
11
11
|
// Run MCP server
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp-install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"mcp-install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp-install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA2KD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsGjF"}
|