drivethrough-cli 0.1.38 → 0.1.39
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/main.mjs +9 -9
- package/package.json +1 -1
package/dist/main.mjs
CHANGED
|
@@ -41197,7 +41197,7 @@ function registerTools(server, ctx) {
|
|
|
41197
41197
|
{
|
|
41198
41198
|
outputSchema: OUTPUT_SCHEMAS.get_integrations,
|
|
41199
41199
|
title: "Get integrations",
|
|
41200
|
-
description: `Show a site's connections to other services' APIs (
|
|
41200
|
+
description: `Show a site's connections to other services' APIs (Plus plan) and how they last went: which secrets are set (never their values), the declared routes, actions, schedules (next run, last result, failures) and webhooks (URL, last event), and the latest 20 outcomes, including real page use. Read-only. Pass reference: true for the drivethrough.json format these are declared in, with two complete examples \u2014 read it before adding one to a site.`,
|
|
41201
41201
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
41202
41202
|
inputSchema: {
|
|
41203
41203
|
site: external_exports.string().describe("Site name or id"),
|
|
@@ -41218,7 +41218,7 @@ function registerTools(server, ctx) {
|
|
|
41218
41218
|
{
|
|
41219
41219
|
outputSchema: OUTPUT_SCHEMAS.create_integration_setup_link,
|
|
41220
41220
|
title: "Create integration setup link",
|
|
41221
|
-
description: `Get a one-time link where the user sets the API keys a site's integrations need (
|
|
41221
|
+
description: `Get a one-time link where the user sets the API keys a site's integrations need (Plus plan) \u2014 two steps, like create_upload. Call it with the site: it returns a link (10 minutes, one use, no sign-in). Send it to the user as a clickable link and have them paste the keys there. NEVER ask for a key in the chat, and never put one in a file \u2014 this tool never receives or returns a key's value. When they say they're done, call again with the returned session: it reports which names are set. A deploy that needs an unset secret is refused with a fresh link already in the error \u2014 relay that one instead. Pass names to rotate a key that is already set. A webhook's secret comes FROM the other service: tell the user to add a webhook there pointing at its URL (get_integrations and the deploy error give it) and paste the signing secret it shows into the link page; a url_token secret is generated on the link page, which then shows the full URL to paste.`,
|
|
41222
41222
|
// Destructive: a link can replace a key that is already set, and the old
|
|
41223
41223
|
// value is gone once the user saves (OpenAI's guidelines reserve false
|
|
41224
41224
|
// for purely additive writes).
|
|
@@ -41273,7 +41273,7 @@ function registerTools(server, ctx) {
|
|
|
41273
41273
|
{
|
|
41274
41274
|
outputSchema: OUTPUT_SCHEMAS.preview_action,
|
|
41275
41275
|
title: "Preview action",
|
|
41276
|
-
description: `Show the exact request one of a site's declared actions would send for a sample row (
|
|
41276
|
+
description: `Show the exact request one of a site's declared actions would send for a sample row (Plus plan) \u2014 method, URL, headers and JSON body, with every secret value redacted \u2014 or why it can't be built (a secret not set, a bad URL). Nothing is sent, stored or charged. Check that the {{field}} values landed where they should. ${liveCheck}`,
|
|
41277
41277
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
41278
41278
|
inputSchema: {
|
|
41279
41279
|
site: external_exports.string().describe("Site name or id"),
|
|
@@ -41294,7 +41294,7 @@ function registerTools(server, ctx) {
|
|
|
41294
41294
|
{
|
|
41295
41295
|
outputSchema: OUTPUT_SCHEMAS.preview_schedule,
|
|
41296
41296
|
title: "Preview schedule",
|
|
41297
|
-
description: `Show what a site's declared schedule would send on its next run (
|
|
41297
|
+
description: `Show what a site's declared schedule would send on its next run (Plus plan), with every secret value redacted: for "rotate", the row that comes next and the request its action would send; for "pull", the GET it would make and the type and map its response would fill. Nothing is sent, stored or charged, and the rotation doesn't move. get_integrations shows when it next runs and how its last run went.`,
|
|
41298
41298
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
41299
41299
|
inputSchema: {
|
|
41300
41300
|
site: external_exports.string().describe("Site name or id"),
|
|
@@ -41314,7 +41314,7 @@ function registerTools(server, ctx) {
|
|
|
41314
41314
|
{
|
|
41315
41315
|
outputSchema: OUTPUT_SCHEMAS.preview_webhook,
|
|
41316
41316
|
title: "Preview webhook",
|
|
41317
|
-
description: `Dry-run one of a site's declared webhooks (
|
|
41317
|
+
description: `Dry-run one of a site's declared webhooks (Plus plan): builds an event from sample field values, takes it through the same mapping and validation a real delivery gets, and returns the row it would store and the URL the other service must POST to. Nothing is stored, sent or charged. Real delivery is proven by the other service's own "send test event", then get_integrations (last event).`,
|
|
41318
41318
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
41319
41319
|
inputSchema: {
|
|
41320
41320
|
site: external_exports.string().describe("Site name or id"),
|
|
@@ -41336,7 +41336,7 @@ function registerTools(server, ctx) {
|
|
|
41336
41336
|
{
|
|
41337
41337
|
outputSchema: OUTPUT_SCHEMAS.test_route,
|
|
41338
41338
|
title: "Test route",
|
|
41339
|
-
description: `Send one GET through a site's declared API route now, exactly as a page would (
|
|
41339
|
+
description: `Send one GET through a site's declared API route now, exactly as a page would (Plus plan), and return the other service's HTTP status and the first 1 KB of its response with every secret redacted. Only GET is ever sent, only to a path the route allows, and it counts as one call against the month's integration allowance. Read the preview before telling the user it works \u2014 a 200 with an error body is still a failure.`,
|
|
41340
41340
|
// Not read-only: it reaches a third party (some GETs have effects there)
|
|
41341
41341
|
// and spends one of the month's metered calls. Open-world for the same reason.
|
|
41342
41342
|
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
@@ -41358,7 +41358,7 @@ function registerTools(server, ctx) {
|
|
|
41358
41358
|
{
|
|
41359
41359
|
outputSchema: OUTPUT_SCHEMAS.run_action,
|
|
41360
41360
|
title: "Run action",
|
|
41361
|
-
description: `Run one of a site's declared actions now, for real (
|
|
41361
|
+
description: `Run one of a site's declared actions now, for real (Plus plan): it sends the action's POST to the other service with fields standing in for the row that would normally trigger it, and returns that service's HTTP status and a redacted preview of its response. The other service acts on it as it would on any request \u2014 a display shows the text, a message is sent \u2014 so confirm with the user before running anything that can't be taken back. preview_action shows the same request without sending it.`,
|
|
41362
41362
|
// Destructive + open-world: the other service may act irreversibly on the request.
|
|
41363
41363
|
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true },
|
|
41364
41364
|
inputSchema: {
|
|
@@ -41380,7 +41380,7 @@ function registerTools(server, ctx) {
|
|
|
41380
41380
|
{
|
|
41381
41381
|
outputSchema: OUTPUT_SCHEMAS.run_schedule,
|
|
41382
41382
|
title: "Run schedule",
|
|
41383
|
-
description: `Run one of a site's declared schedules once, now, for real (
|
|
41383
|
+
description: `Run one of a site's declared schedules once, now, for real (Plus plan), and return the outcome. A "pull" schedule calls its route and saves the response as a new row; a "rotate" schedule sends the next row through its action (the other service acts on it) and advances the rotation. A successful run also re-enables a schedule that was paused after repeated failures. The regular timetable is unchanged. preview_schedule shows the same run without sending anything.`,
|
|
41384
41384
|
// Destructive + open-world: a rotate run fires an action the other service acts on.
|
|
41385
41385
|
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true },
|
|
41386
41386
|
inputSchema: {
|
|
@@ -41478,7 +41478,7 @@ RECIPE \u2014 a searchable, filterable list (catalogue, directory, archive)
|
|
|
41478
41478
|
whose query the config doesn't declare (it will render empty for visitors),
|
|
41479
41479
|
and a declaration no page uses (pure cost on every insert).
|
|
41480
41480
|
|
|
41481
|
-
Connecting a site to another service's API (
|
|
41481
|
+
Connecting a site to another service's API (Plus plan): this is site configuration, not something you run. The site's drivethrough.json declares it and deploy_site deploys it, like any other file; get_integrations {reference: true} returns the format with two complete examples. The integration tools: get_integrations (what is declared and how it went), create_integration_setup_link (a one-time link where the user sets API keys \u2014 never ask for a key in the chat), and preview_action, preview_schedule, preview_webhook (show what would be sent or stored; nothing is sent). Preview each piece, then have the user use the page once and confirm the outcome in get_integrations before telling them it works.
|
|
41482
41482
|
|
|
41483
41483
|
Custom domains (paid plans): manage_domain attaches a domain the user already owns. After attaching, check_domain {action: "connect"} looks up one-click setup at their registrar (relay the URL when offered, else the exact DNS records from attach), and check_domain {action: "status"} polls until "active" \u2014 DNS seen, then TLS issued.`;
|
|
41484
41484
|
INTEGRATION_EXAMPLE_A = JSON.stringify({
|