@tool-bridge/server 0.21.1 → 0.23.0
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/dist/admin.js +170 -0
- package/dist/airtable-VMQVXLHK.js +790 -0
- package/dist/{alt_text_generator_ai-W7O34SNG.js → alt_text_generator_ai-FTWY4RU4.js} +12 -11
- package/dist/{amap-VOX4T2AW.js → amap-OK5VBHYC.js} +221 -220
- package/dist/anthropic-S67AZFZ3.js +203 -0
- package/dist/apify-ZE6MYQI3.js +248 -0
- package/dist/brave_search-TG2M2KOD.js +302 -0
- package/dist/chunk-2JNAI4OC.js +161 -0
- package/dist/{chunk-KMTT3I6D.js → chunk-4XJPN3DY.js} +19392 -26136
- package/dist/chunk-5ICRY3VU.js +8432 -0
- package/dist/chunk-7CTWGTDU.js +302 -0
- package/dist/chunk-BADVCN6K.js +378 -0
- package/dist/{chunk-XYBU3WZH.js → chunk-TDAWLMDE.js} +3 -3
- package/dist/chunk-U7PTOA3U.js +7320 -0
- package/dist/{chunk-E6JCVKW6.js → chunk-VWRUGUSU.js} +3 -3
- package/dist/{chunk-ATK45BXV.js → chunk-WJHG6OK7.js} +4 -2
- package/dist/circleci-3L3WJVSK.js +389 -0
- package/dist/clerk-EZPF2V7T.js +1019 -0
- package/dist/cohere-U27DPO64.js +185 -0
- package/dist/{confluence-B3EWPZVE.js → confluence-G2KL6ERH.js} +105 -104
- package/dist/{convertapi-EUWSQYPF.js → convertapi-L4CLJ2M3.js} +32 -31
- package/dist/{currencyapi-KVTIK3GL.js → currencyapi-YPYXG7YY.js} +71 -71
- package/dist/deepseek-6HT6WF3M.js +210 -0
- package/dist/docker_hub-LPE3PCVB.js +933 -0
- package/dist/dropbox-V56ABHTA.js +1305 -0
- package/dist/dub-6OKQ7MHT.js +680 -0
- package/dist/e2b-JS2U2QFU.js +278 -0
- package/dist/exa-DPWVYXSP.js +332 -0
- package/dist/{fal_ai-23E7JPNT.js → fal_ai-DK6Y27ZF.js} +81 -80
- package/dist/{feishu-7QRIDUV6.js → feishu-K7EGSRF3.js} +528 -572
- package/dist/{feishu_custom_bot-TJ4K7QNJ.js → feishu_custom_bot-2JUGFYNG.js} +57 -53
- package/dist/figma-FT5I7ITD.js +777 -0
- package/dist/firehydrant-EIKLKHX2.js +563 -0
- package/dist/{fixer-BWON27UO.js → fixer-U5QXIAKD.js} +34 -33
- package/dist/fly-T3JYFZ2M.js +469 -0
- package/dist/{front-QCGXYEDJ.js → front-D72MGVOR.js} +104 -104
- package/dist/geocodio-BOTD5TI5.js +213 -0
- package/dist/ghost-KYP7SZGB.js +338 -0
- package/dist/github-AGMZT3VY.js +5421 -0
- package/dist/gmail-BLJNJOBG.js +1887 -0
- package/dist/googlecalendar-GTHWNCF6.js +2524 -0
- package/dist/{googledocs-BUHL4J2H.js → googledocs-6EEDMEBQ.js} +341 -340
- package/dist/{grafana-GLU2DWF2.js → grafana-GMW6EKSQ.js} +221 -220
- package/dist/graphhopper-6OLGBDGB.js +325 -0
- package/dist/index.d.ts +1132 -332
- package/dist/index.js +31 -14
- package/dist/{ip2proxy-EZ64Y4ZH.js → ip2proxy-4QN42E6T.js} +28 -27
- package/dist/ipgeolocation_io-SK4XKDA2.js +315 -0
- package/dist/ipqualityscore-6ANBPXKT.js +279 -0
- package/dist/{jina_ai-EFBHTBXL.js → jina_ai-IHPSVRM5.js} +23 -23
- package/dist/{jira-HQSHAA5K.js → jira-46KKM4LC.js} +118 -117
- package/dist/langsmith-JZA345I5.js +593 -0
- package/dist/lemlist-43IV7DK6.js +289 -0
- package/dist/{linear-K7RYFYAD.js → linear-5LFH7XNL.js} +327 -326
- package/dist/logsnag-5RMYAHIL.js +150 -0
- package/dist/main.js +57 -280
- package/dist/{mattermost-S2BRCWLQ.js → mattermost-XFL6SHGG.js} +59 -58
- package/dist/mem0-NYO4DTP6.js +544 -0
- package/dist/memos-37MPQOLV.js +744 -0
- package/dist/{metabase-MMSEPCOF.js → metabase-KYBKZFMG.js} +90 -89
- package/dist/mistral_ai-6PL3K4PM.js +1196 -0
- package/dist/{mother_duck-H7PCQNZ2.js → mother_duck-2NH7W5M5.js} +94 -93
- package/dist/ngrok-UO6CDYCA.js +356 -0
- package/dist/{notes-PFMKRO33.js → notes-I3P32WP4.js} +11 -9
- package/dist/notion-BEAJFUOE.js +940 -0
- package/dist/open_exchange_rates-CMF62JB4.js +215 -0
- package/dist/openai-IHOMKVND.js +800 -0
- package/dist/opengraph_io-ZQ2FGLHX.js +362 -0
- package/dist/openrouter-HXLW3NR5.js +441 -0
- package/dist/outline-ELCP4NEU.js +599 -0
- package/dist/paddle-O77LALVN.js +454 -0
- package/dist/perplexity-JCU654QV.js +220 -0
- package/dist/pinecone-W5W4LRKL.js +571 -0
- package/dist/{pipedrive-Y2O7QGFF.js → pipedrive-ITMJLLPZ.js} +99 -98
- package/dist/polar-R33XU4L3.js +395 -0
- package/dist/posthog-JVNTOLTV.js +3464 -0
- package/dist/postmark-6SBG7HWV.js +427 -0
- package/dist/{prerender-MENYM2TY.js → prerender-GPNKTNFC.js} +31 -30
- package/dist/{pubmed-GOXUVVH5.js → pubmed-UP6ZEEIH.js} +239 -238
- package/dist/{railway-V2SID4WV.js → railway-KWEWXHTY.js} +118 -117
- package/dist/readwise-BLATSMC3.js +470 -0
- package/dist/render-QYRVIXII.js +461 -0
- package/dist/{replicate-756MXPYX.js → replicate-JYTWH4NF.js} +81 -80
- package/dist/{resend-ZKH3BTBI.js → resend-L5N75SZM.js} +20 -16
- package/dist/rootly-MHCPEQ26.js +336 -0
- package/dist/{scrapfly-NSRHFDIQ.js → scrapfly-PTPGYSJM.js} +62 -61
- package/dist/{scrapingbee-OQHLAVEY.js → scrapingbee-JN6UH5PY.js} +56 -56
- package/dist/{screenshot_fyi-DVWG3AXC.js → screenshot_fyi-4QRVSV55.js} +16 -16
- package/dist/semantic_scholar-LRSWA2GE.js +611 -0
- package/dist/{sentry-546MNDJG.js → sentry-2G6PF5W6.js} +208 -207
- package/dist/{shodan-C3OON3Z3.js → shodan-WKKPP5C6.js} +62 -61
- package/dist/shopify-64YDK5T2.js +610 -0
- package/dist/stripe-QAIGGOTF.js +585 -0
- package/dist/{supabase-U2SL4D63.js → supabase-WHTGR6ND.js} +245 -244
- package/dist/tavily-QIXCDDWO.js +326 -0
- package/dist/telegram-E6G7CWI6.js +1767 -0
- package/dist/{telnyx-CXQ4EZUX.js → telnyx-ZDVVS7PK.js} +57 -56
- package/dist/todoist-DMYF3G7J.js +664 -0
- package/dist/trello-HY2RYIRP.js +1080 -0
- package/dist/turso-HAQWMGRP.js +416 -0
- package/dist/{twilio-4PDBJKWX.js → twilio-MLXYPHJE.js} +70 -69
- package/dist/umami-DZHBLPVG.js +389 -0
- package/dist/unsplash-GS2OPXKE.js +351 -0
- package/dist/{upstash_redis-G4LQBYHA.js → upstash_redis-XMXWTNAJ.js} +51 -50
- package/dist/uptimerobot-TF5WRZ4G.js +483 -0
- package/dist/v2ex-2BVXAPDF.js +667 -0
- package/dist/vercel-YMJGQYJE.js +1076 -0
- package/dist/{wolfram_alpha_api-3G4PUJWB.js → wolfram_alpha_api-I56SXWFZ.js} +36 -35
- package/dist/wordpress-R7TDFZ2P.js +812 -0
- package/dist/workos-HDNHWVMS.js +664 -0
- package/dist/zhihu-LX6AGGDS.js +254 -0
- package/package.json +18 -9
- package/dist/airtable-LLZDFN7M.js +0 -789
- package/dist/anthropic-G23NN3X5.js +0 -202
- package/dist/apify-Y3SS734K.js +0 -247
- package/dist/brave_search-ZC7OAPSZ.js +0 -301
- package/dist/chunk-R6P4XAE5.js +0 -248
- package/dist/chunk-U7B6DS2O.js +0 -977
- package/dist/chunk-UZM2RXZH.js +0 -23436
- package/dist/circleci-3BAX5FCG.js +0 -388
- package/dist/clerk-6LEM6TNU.js +0 -1019
- package/dist/cloudflare_dns-KINYTJUD.js +0 -588
- package/dist/cohere-XCJ5AJ6B.js +0 -185
- package/dist/deepseek-PC5YGNC5.js +0 -209
- package/dist/docker_hub-C3MA5FU6.js +0 -932
- package/dist/dropbox-XBV7Z2IR.js +0 -1304
- package/dist/dub-LDOFG3HC.js +0 -679
- package/dist/e2b-JMCPSVBW.js +0 -277
- package/dist/exa-RAK7O7RD.js +0 -331
- package/dist/figma-E6IX5DTH.js +0 -773
- package/dist/firehydrant-ZBLPQREE.js +0 -562
- package/dist/fly-ZH3HFCZJ.js +0 -468
- package/dist/geocodio-YGNI7DA4.js +0 -212
- package/dist/ghost-EVSGKH2Q.js +0 -337
- package/dist/github-MA2BGRCJ.js +0 -5420
- package/dist/gmail-E5E6AADE.js +0 -1886
- package/dist/googlecalendar-BTLFPXTD.js +0 -2523
- package/dist/graphhopper-WSMB3TCD.js +0 -324
- package/dist/ipgeolocation_io-AA7HAS22.js +0 -315
- package/dist/ipqualityscore-BHJXVTJT.js +0 -277
- package/dist/langsmith-5W6SCT6F.js +0 -592
- package/dist/lemlist-HJWH6UMK.js +0 -288
- package/dist/logsnag-4KFOHL37.js +0 -150
- package/dist/mem0-CAW43CIC.js +0 -543
- package/dist/memos-TWEGPKFM.js +0 -740
- package/dist/mistral_ai-64BGZQHP.js +0 -1195
- package/dist/ngrok-GQCUGZKJ.js +0 -356
- package/dist/notion-DQWZWP4N.js +0 -936
- package/dist/open_exchange_rates-QMMD735E.js +0 -214
- package/dist/openai-W6PX32NZ.js +0 -799
- package/dist/opengraph_io-HNDBXYNW.js +0 -361
- package/dist/openrouter-JJYMEAUL.js +0 -437
- package/dist/outline-MCBNQZYY.js +0 -595
- package/dist/paddle-D2SKLUDN.js +0 -453
- package/dist/perplexity-XIFMKUAE.js +0 -219
- package/dist/pinecone-HUFTALV2.js +0 -570
- package/dist/polar-TYTOMOSR.js +0 -394
- package/dist/posthog-43JAR3VW.js +0 -3463
- package/dist/postmark-KL2QJYSG.js +0 -426
- package/dist/readwise-CI4GIMMJ.js +0 -469
- package/dist/render-SUBJ6YRZ.js +0 -460
- package/dist/rootly-CD2LJHPI.js +0 -336
- package/dist/semantic_scholar-T4A252KW.js +0 -610
- package/dist/shopify-Y2HN2MCQ.js +0 -609
- package/dist/stripe-VE3CD3AY.js +0 -584
- package/dist/tavily-KCZHK6HE.js +0 -326
- package/dist/telegram-3URFBCMY.js +0 -1766
- package/dist/todoist-HNPWNYTD.js +0 -663
- package/dist/trello-3W2MIXRP.js +0 -1079
- package/dist/turso-2EQF7C2Z.js +0 -415
- package/dist/umami-5REN7TGP.js +0 -388
- package/dist/unsplash-EIXL424F.js +0 -350
- package/dist/uptimerobot-KNJ3EYLY.js +0 -482
- package/dist/v2ex-RHJ234PZ.js +0 -666
- package/dist/vercel-AS6NCIC7.js +0 -1075
- package/dist/wordpress-KNDAAUV7.js +0 -811
- package/dist/workos-R6UITSJ7.js +0 -663
- package/dist/zhihu-AGK4HILK.js +0 -253
package/dist/admin.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
BootstrapStateStore,
|
|
4
|
+
package_default
|
|
5
|
+
} from "./chunk-7CTWGTDU.js";
|
|
6
|
+
import "./chunk-5ICRY3VU.js";
|
|
7
|
+
import "./chunk-U67V476Y.js";
|
|
8
|
+
|
|
9
|
+
// src/admin.ts
|
|
10
|
+
import { chown, mkdir, readFile, writeFile } from "fs/promises";
|
|
11
|
+
import { CreateBucketCommand, S3Client } from "@aws-sdk/client-s3";
|
|
12
|
+
import writeFileAtomic from "write-file-atomic";
|
|
13
|
+
import { randomBytes } from "crypto";
|
|
14
|
+
import { Command } from "commander";
|
|
15
|
+
import { join } from "path";
|
|
16
|
+
import pRetry from "p-retry";
|
|
17
|
+
var program = new Command("tool-bridge-admin").version(package_default.version).description(
|
|
18
|
+
"Local installation and recovery; requires access to the protected bootstrap directory"
|
|
19
|
+
);
|
|
20
|
+
for (const mode of ["pair", "recover"]) {
|
|
21
|
+
program.command(mode).option(
|
|
22
|
+
"--directory <path>",
|
|
23
|
+
"Protected bootstrap directory",
|
|
24
|
+
process.env.TB_BOOTSTRAP_DIR ?? "/data/bootstrap"
|
|
25
|
+
).action(async (opts) => {
|
|
26
|
+
const store = new BootstrapStateStore(opts.directory);
|
|
27
|
+
const token = await store.createLocalPairing(
|
|
28
|
+
mode === "pair" ? "setup" : "recovery"
|
|
29
|
+
);
|
|
30
|
+
process.stdout.write(token + "\n");
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
program.command("init").option(
|
|
34
|
+
"--directory <path>",
|
|
35
|
+
"Protected bootstrap directory",
|
|
36
|
+
"/data/bootstrap"
|
|
37
|
+
).option(
|
|
38
|
+
"--pg-secrets <path>",
|
|
39
|
+
"PostgreSQL credential directory",
|
|
40
|
+
"/secrets/postgres"
|
|
41
|
+
).option("--s3-secrets <path>", "S3 credential directory", "/secrets/s3").action(
|
|
42
|
+
async (opts) => {
|
|
43
|
+
const store = new BootstrapStateStore(opts.directory);
|
|
44
|
+
await store.initialize();
|
|
45
|
+
await store.exclusive(async () => {
|
|
46
|
+
if (await store.defaults()) return;
|
|
47
|
+
const password = randomBytes(32).toString("hex");
|
|
48
|
+
const pgAdminPassword = randomBytes(32).toString("hex");
|
|
49
|
+
const appKey = randomBytes(24).toString("hex");
|
|
50
|
+
const appSecret = randomBytes(32).toString("hex");
|
|
51
|
+
const adminKey = randomBytes(24).toString("hex");
|
|
52
|
+
const adminSecret = randomBytes(32).toString("hex");
|
|
53
|
+
await mkdir(opts.pgSecrets, { recursive: true, mode: 493 });
|
|
54
|
+
await mkdir(opts.s3Secrets, { recursive: true, mode: 493 });
|
|
55
|
+
await writeFileAtomic(
|
|
56
|
+
join(opts.pgSecrets, "password"),
|
|
57
|
+
pgAdminPassword + "\n",
|
|
58
|
+
{ mode: 256 }
|
|
59
|
+
);
|
|
60
|
+
await chown(join(opts.pgSecrets, "password"), 999, 999);
|
|
61
|
+
await writeFileAtomic(
|
|
62
|
+
join(opts.pgSecrets, "01-app.sql"),
|
|
63
|
+
`CREATE ROLE toolbridge LOGIN PASSWORD '${password}';
|
|
64
|
+
ALTER DATABASE toolbridge OWNER TO toolbridge;
|
|
65
|
+
`,
|
|
66
|
+
{ mode: 256 }
|
|
67
|
+
);
|
|
68
|
+
await chown(join(opts.pgSecrets, "01-app.sql"), 999, 999);
|
|
69
|
+
const identities = [
|
|
70
|
+
{
|
|
71
|
+
name: "installer",
|
|
72
|
+
credentials: [{ accessKey: adminKey, secretKey: adminSecret }],
|
|
73
|
+
actions: ["Admin", "Read", "Write", "List", "Tagging"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "tool-bridge",
|
|
77
|
+
credentials: [{ accessKey: appKey, secretKey: appSecret }],
|
|
78
|
+
actions: [
|
|
79
|
+
"Read:tb-objects",
|
|
80
|
+
"Write:tb-objects",
|
|
81
|
+
"List:tb-objects",
|
|
82
|
+
"Tagging:tb-objects"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
];
|
|
86
|
+
await writeFileAtomic(
|
|
87
|
+
join(opts.s3Secrets, "s3.json"),
|
|
88
|
+
JSON.stringify({ identities }),
|
|
89
|
+
{ mode: 256 }
|
|
90
|
+
);
|
|
91
|
+
await chown(join(opts.s3Secrets, "s3.json"), 1e3, 1e3);
|
|
92
|
+
await writeFileAtomic(
|
|
93
|
+
join(opts.s3Secrets, "admin.json"),
|
|
94
|
+
JSON.stringify({
|
|
95
|
+
accessKeyId: adminKey,
|
|
96
|
+
secretAccessKey: adminSecret
|
|
97
|
+
}),
|
|
98
|
+
{ mode: 256 }
|
|
99
|
+
);
|
|
100
|
+
await store.write("install-defaults.json", {
|
|
101
|
+
databaseUrl: `postgres://toolbridge:${password}@postgres:5432/toolbridge`,
|
|
102
|
+
databaseAdminUrl: `postgres://postgres:${pgAdminPassword}@postgres:5432/toolbridge`,
|
|
103
|
+
storage: {
|
|
104
|
+
endpoint: "http://objects:8333",
|
|
105
|
+
bucket: "tb-objects",
|
|
106
|
+
region: "us-east-1",
|
|
107
|
+
accessKeyId: appKey,
|
|
108
|
+
secretAccessKey: appSecret
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
for (const name of [
|
|
112
|
+
"bootstrap.json",
|
|
113
|
+
"identity.json",
|
|
114
|
+
"keys.json",
|
|
115
|
+
"pairing.json",
|
|
116
|
+
"pairing-token",
|
|
117
|
+
"install-defaults.json"
|
|
118
|
+
]) {
|
|
119
|
+
await chown(store.path(name), 1e3, 1e3);
|
|
120
|
+
}
|
|
121
|
+
await chown(opts.directory, 1e3, 1e3);
|
|
122
|
+
await writeFile(join(opts.s3Secrets, "ready"), "ready\n", {
|
|
123
|
+
mode: 292
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
program.command("init-bucket").option(
|
|
129
|
+
"--credentials <path>",
|
|
130
|
+
"S3 installer credentials",
|
|
131
|
+
"/secrets/s3/admin.json"
|
|
132
|
+
).option("--endpoint <url>", "Exact local S3 endpoint", "http://objects:8333").action(async (opts) => {
|
|
133
|
+
const credentials = JSON.parse(
|
|
134
|
+
await readFile(opts.credentials, "utf8")
|
|
135
|
+
);
|
|
136
|
+
const client = new S3Client({
|
|
137
|
+
endpoint: opts.endpoint,
|
|
138
|
+
region: "us-east-1",
|
|
139
|
+
forcePathStyle: true,
|
|
140
|
+
credentials,
|
|
141
|
+
maxAttempts: 1
|
|
142
|
+
});
|
|
143
|
+
try {
|
|
144
|
+
await pRetry(
|
|
145
|
+
async () => {
|
|
146
|
+
try {
|
|
147
|
+
await client.send(
|
|
148
|
+
new CreateBucketCommand({ Bucket: "tb-objects" })
|
|
149
|
+
);
|
|
150
|
+
} catch (error) {
|
|
151
|
+
if (!["BucketAlreadyOwnedByYou", "BucketAlreadyExists"].includes(
|
|
152
|
+
error.name
|
|
153
|
+
))
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{ retries: 30, minTimeout: 500, maxTimeout: 2e3 }
|
|
158
|
+
);
|
|
159
|
+
} finally {
|
|
160
|
+
client.destroy();
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
try {
|
|
164
|
+
await program.parseAsync();
|
|
165
|
+
} catch {
|
|
166
|
+
console.error(
|
|
167
|
+
"Local maintenance failed; check protected files and service connectivity."
|
|
168
|
+
);
|
|
169
|
+
process.exitCode = 1;
|
|
170
|
+
}
|