@trusty-squire/mcp 0.7.20 → 0.8.0-rc.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.
- package/README.md +2 -2
- package/dist/api-client.js +3 -3
- package/dist/api-client.js.map +1 -1
- package/dist/bot/agent.js +2 -2
- package/dist/bot/agent.js.map +1 -1
- package/dist/bot/oauth-lock.js +1 -1
- package/dist/bot/oauth-lock.js.map +1 -1
- package/dist/bot/replay-skill.js +1 -1
- package/dist/bot/replay-skill.js.map +1 -1
- package/dist/skill-cli/cli.js +2 -2
- package/dist/skill-cli/cli.js.map +1 -1
- package/dist/skill-cli/registry-http.js +1 -1
- package/dist/skill-cli/registry-http.js.map +1 -1
- package/dist/skill-cli/signing.js +1 -1
- package/dist/skill-cli/signing.js.map +1 -1
- package/dist/skill-registry-client.d.ts +2 -2
- package/dist/skill-registry-client.d.ts.map +1 -1
- package/dist/skill-registry-client.js +3 -3
- package/dist/skill-registry-client.js.map +1 -1
- package/dist/tools/get-credential.js +1 -1
- package/dist/tools/index.d.ts +2 -9
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -19
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/provision-any.d.ts +2 -2
- package/dist/tools/provision-any.d.ts.map +1 -1
- package/dist/tools/provision-any.js +15 -15
- package/dist/tools/provision-any.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/cancel.d.ts +0 -12
- package/dist/tools/cancel.d.ts.map +0 -1
- package/dist/tools/cancel.js +0 -34
- package/dist/tools/cancel.js.map +0 -1
- package/dist/tools/get-usage.d.ts +0 -6
- package/dist/tools/get-usage.d.ts.map +0 -1
- package/dist/tools/get-usage.js +0 -24
- package/dist/tools/get-usage.js.map +0 -1
- package/dist/tools/list-services.d.ts +0 -15
- package/dist/tools/list-services.d.ts.map +0 -1
- package/dist/tools/list-services.js +0 -55
- package/dist/tools/list-services.js.map +0 -1
- package/dist/tools/list-subscriptions.d.ts +0 -6
- package/dist/tools/list-subscriptions.d.ts.map +0 -1
- package/dist/tools/list-subscriptions.js +0 -25
- package/dist/tools/list-subscriptions.js.map +0 -1
- package/dist/tools/provision.d.ts +0 -30
- package/dist/tools/provision.d.ts.map +0 -1
- package/dist/tools/provision.js +0 -112
- package/dist/tools/provision.js.map +0 -1
- package/dist/tools/rotate-credential.d.ts +0 -12
- package/dist/tools/rotate-credential.d.ts.map +0 -1
- package/dist/tools/rotate-credential.js +0 -43
- package/dist/tools/rotate-credential.js.map +0 -1
- package/dist/tools/wait-for-approval.d.ts +0 -28
- package/dist/tools/wait-for-approval.d.ts.map +0 -1
- package/dist/tools/wait-for-approval.js +0 -82
- package/dist/tools/wait-for-approval.js.map +0 -1
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { type Tool } from "./index.js";
|
|
3
|
-
declare const inputSchema: z.ZodObject<{
|
|
4
|
-
service: z.ZodString;
|
|
5
|
-
plan: z.ZodDefault<z.ZodString>;
|
|
6
|
-
project_name: z.ZodString;
|
|
7
|
-
category: z.ZodOptional<z.ZodString>;
|
|
8
|
-
cost_cents: z.ZodDefault<z.ZodNumber>;
|
|
9
|
-
recurrence: z.ZodDefault<z.ZodEnum<["one_time", "monthly", "yearly", "none"]>>;
|
|
10
|
-
requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
11
|
-
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
service: string;
|
|
13
|
-
plan: string;
|
|
14
|
-
project_name: string;
|
|
15
|
-
cost_cents: number;
|
|
16
|
-
recurrence: "one_time" | "monthly" | "yearly" | "none";
|
|
17
|
-
category?: string | undefined;
|
|
18
|
-
requirements?: Record<string, unknown> | undefined;
|
|
19
|
-
}, {
|
|
20
|
-
service: string;
|
|
21
|
-
project_name: string;
|
|
22
|
-
plan?: string | undefined;
|
|
23
|
-
category?: string | undefined;
|
|
24
|
-
cost_cents?: number | undefined;
|
|
25
|
-
recurrence?: "one_time" | "monthly" | "yearly" | "none" | undefined;
|
|
26
|
-
requirements?: Record<string, unknown> | undefined;
|
|
27
|
-
}>;
|
|
28
|
-
export declare const provisionTool: Tool<z.infer<typeof inputSchema>>;
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=provision.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/tools/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAElD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAaf,CAAC;AAkCH,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAiE3D,CAAC"}
|
package/dist/tools/provision.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { assertApi } from "./index.js";
|
|
3
|
-
const inputSchema = z.object({
|
|
4
|
-
service: z.string().min(1),
|
|
5
|
-
plan: z.string().min(1).default("free"),
|
|
6
|
-
project_name: z.string().min(1).max(120),
|
|
7
|
-
// The runtime needs category + cost for the mandate evaluator;
|
|
8
|
-
// the MCP tool's caller may not know these. When omitted, we
|
|
9
|
-
// request the registry directory for default category.
|
|
10
|
-
category: z.string().optional(),
|
|
11
|
-
cost_cents: z.number().int().nonnegative().default(0),
|
|
12
|
-
recurrence: z
|
|
13
|
-
.enum(["one_time", "monthly", "yearly", "none"])
|
|
14
|
-
.default("none"),
|
|
15
|
-
requirements: z.record(z.string(), z.unknown()).optional(),
|
|
16
|
-
});
|
|
17
|
-
const DESCRIPTION = `Sign up for and configure a SaaS service on the user's behalf, returning
|
|
18
|
-
working credentials. The user has pre-authorized spending within their
|
|
19
|
-
spending policy, so no manual signup, email verification, or card entry
|
|
20
|
-
is needed from them.
|
|
21
|
-
|
|
22
|
-
WHEN TO CALL THIS TOOL:
|
|
23
|
-
- The user's project needs an API key for any external SaaS
|
|
24
|
-
- You would otherwise instruct the user to "go sign up at example.com"
|
|
25
|
-
- You need a service-specific credential the user does not yet have
|
|
26
|
-
- The user mentions needing hosting, a database, email, monitoring,
|
|
27
|
-
auth, AI APIs, payments, analytics, error tracking, or similar
|
|
28
|
-
|
|
29
|
-
FIRST call list_credentials — if the account already has a working key
|
|
30
|
-
for this service, reuse it via get_credential instead of provisioning a
|
|
31
|
-
duplicate.
|
|
32
|
-
|
|
33
|
-
DO NOT instruct the user to sign up manually if a Squire adapter exists.
|
|
34
|
-
Call list_services first if you are unsure whether the service is supported.
|
|
35
|
-
|
|
36
|
-
BEHAVIOR:
|
|
37
|
-
- Free tiers are auto-approved within the user's spending policy (silent)
|
|
38
|
-
- Paid tiers above the silent ceiling return status="pending_approval"
|
|
39
|
-
with a one-click approval link the user can click in their terminal
|
|
40
|
-
- Returns within 3-15 seconds for native adapters, up to 60s for browser-based
|
|
41
|
-
- Stores credentials in the user's vault automatically
|
|
42
|
-
- Idempotent on (user, service, project_name)
|
|
43
|
-
|
|
44
|
-
AFTER PROVISIONING:
|
|
45
|
-
- Use get_credential() to retrieve the API key for use in code
|
|
46
|
-
- Reference credentials via env vars; do not paste secrets into source files
|
|
47
|
-
- Tell the user what was set up and the cost, even when silent`;
|
|
48
|
-
export const provisionTool = {
|
|
49
|
-
name: "provision",
|
|
50
|
-
description: DESCRIPTION,
|
|
51
|
-
inputSchema,
|
|
52
|
-
jsonInputSchema: {
|
|
53
|
-
type: "object",
|
|
54
|
-
required: ["service", "project_name"],
|
|
55
|
-
properties: {
|
|
56
|
-
service: { type: "string" },
|
|
57
|
-
plan: { type: "string", default: "free" },
|
|
58
|
-
project_name: { type: "string" },
|
|
59
|
-
category: { type: "string" },
|
|
60
|
-
cost_cents: { type: "integer", minimum: 0, default: 0 },
|
|
61
|
-
recurrence: {
|
|
62
|
-
type: "string",
|
|
63
|
-
enum: ["one_time", "monthly", "yearly", "none"],
|
|
64
|
-
default: "none",
|
|
65
|
-
},
|
|
66
|
-
requirements: { type: "object" },
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
async handler(args, api) {
|
|
70
|
-
assertApi(api);
|
|
71
|
-
// If the caller didn't supply category, look it up in the registry.
|
|
72
|
-
let category = args.category;
|
|
73
|
-
if (category === undefined) {
|
|
74
|
-
const dir = await api.listServices();
|
|
75
|
-
const match = dir.adapters.find((a) => a.service === args.service);
|
|
76
|
-
category = match?.category ?? "unknown";
|
|
77
|
-
}
|
|
78
|
-
const res = await api.createRun({
|
|
79
|
-
service: args.service,
|
|
80
|
-
plan: args.plan,
|
|
81
|
-
project_name: args.project_name,
|
|
82
|
-
category,
|
|
83
|
-
cost_cents: args.cost_cents,
|
|
84
|
-
recurrence: args.recurrence,
|
|
85
|
-
});
|
|
86
|
-
if (res.decision === "silent") {
|
|
87
|
-
return {
|
|
88
|
-
status: "active",
|
|
89
|
-
run_id: res.run.id,
|
|
90
|
-
run_state: res.run.state,
|
|
91
|
-
message: "Sign-up enqueued silently within the user's spending policy.",
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
if (res.decision === "needs_approval") {
|
|
95
|
-
return {
|
|
96
|
-
status: "pending_approval",
|
|
97
|
-
run_id: res.run.id,
|
|
98
|
-
run_state: res.run.state,
|
|
99
|
-
approval_url: res.approval_url,
|
|
100
|
-
reasons: res.reasons ?? [],
|
|
101
|
-
required_confidence: res.required_confidence ?? "high",
|
|
102
|
-
message: "Approval required. Show the user the approval_url so they can confirm.",
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
return {
|
|
106
|
-
status: "rejected",
|
|
107
|
-
run_id: res.run.id,
|
|
108
|
-
message: "The mandate rejected this action.",
|
|
109
|
-
};
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=provision.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/tools/provision.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import type { Tool } from "./index.js";
|
|
3
|
-
declare const inputSchema: z.ZodObject<{
|
|
4
|
-
reference: z.ZodString;
|
|
5
|
-
}, "strip", z.ZodTypeAny, {
|
|
6
|
-
reference: string;
|
|
7
|
-
}, {
|
|
8
|
-
reference: string;
|
|
9
|
-
}>;
|
|
10
|
-
export declare const rotateCredentialTool: Tool<z.infer<typeof inputSchema>>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=rotate-credential.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rotate-credential.d.ts","sourceRoot":"","sources":["../../src/tools/rotate-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,QAAA,MAAM,WAAW;;;;;;EAEf,CAAC;AAoBH,eAAO,MAAM,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAqBlE,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
const inputSchema = z.object({
|
|
3
|
-
reference: z.string().min(1),
|
|
4
|
-
});
|
|
5
|
-
const DESCRIPTION = `Rotate a vault-stored credential (e.g. when the user suspects a leak).
|
|
6
|
-
The adapter's rotate flow generates a fresh credential, stores it in
|
|
7
|
-
the vault under the same reference, and revokes the old value at the
|
|
8
|
-
service.
|
|
9
|
-
|
|
10
|
-
WHEN TO CALL THIS TOOL:
|
|
11
|
-
- The user explicitly asks "rotate the X key"
|
|
12
|
-
- A credential leak has been confirmed
|
|
13
|
-
- Compliance policy requires periodic rotation and the rotation due
|
|
14
|
-
date has passed
|
|
15
|
-
|
|
16
|
-
BEHAVIOR:
|
|
17
|
-
- Default confidence requirement is medium (not high) — rotation is a
|
|
18
|
-
privileged operation but doesn't authorize new spending
|
|
19
|
-
- In v0 the rotate flow is partially wired; the rotate adapter step
|
|
20
|
-
exists but the runtime's flow selector doesn't pick the rotate flow
|
|
21
|
-
yet — see chunk 11+ roadmap. This tool currently returns 202.`;
|
|
22
|
-
export const rotateCredentialTool = {
|
|
23
|
-
name: "rotate_credential",
|
|
24
|
-
description: DESCRIPTION,
|
|
25
|
-
inputSchema,
|
|
26
|
-
jsonInputSchema: {
|
|
27
|
-
type: "object",
|
|
28
|
-
required: ["reference"],
|
|
29
|
-
properties: { reference: { type: "string" } },
|
|
30
|
-
},
|
|
31
|
-
async handler(args, _api) {
|
|
32
|
-
// v0 stub. The endpoint doesn't exist on apps/api yet — the chunk-11
|
|
33
|
-
// spec lists rotate as a future improvement. We return a clear
|
|
34
|
-
// not-implemented body so the coding agent can surface this to
|
|
35
|
-
// the user rather than acting on a false success.
|
|
36
|
-
return {
|
|
37
|
-
status: "not_implemented",
|
|
38
|
-
reference: args.reference,
|
|
39
|
-
message: "Credential rotation is a v0 stub. The cancel + rotate flow selectors arrive in a later chunk. Track progress at /v1/usage.",
|
|
40
|
-
};
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=rotate-credential.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rotate-credential.js","sourceRoot":"","sources":["../../src/tools/rotate-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;gEAgB4C,CAAC;AAEjE,MAAM,CAAC,MAAM,oBAAoB,GAAsC;IACrE,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,WAAW;IACxB,WAAW;IACX,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KAC9C;IACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;QACtB,qEAAqE;QACrE,+DAA+D;QAC/D,+DAA+D;QAC/D,kDAAkD;QAClD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EACL,4HAA4H;SAC/H,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import type { ApiClient } from "../api-client.js";
|
|
3
|
-
import { type Tool } from "./index.js";
|
|
4
|
-
declare const inputSchema: z.ZodObject<{
|
|
5
|
-
run_id: z.ZodString;
|
|
6
|
-
timeout_seconds: z.ZodDefault<z.ZodNumber>;
|
|
7
|
-
poll_interval_seconds: z.ZodDefault<z.ZodNumber>;
|
|
8
|
-
}, "strip", z.ZodTypeAny, {
|
|
9
|
-
timeout_seconds: number;
|
|
10
|
-
run_id: string;
|
|
11
|
-
poll_interval_seconds: number;
|
|
12
|
-
}, {
|
|
13
|
-
run_id: string;
|
|
14
|
-
timeout_seconds?: number | undefined;
|
|
15
|
-
poll_interval_seconds?: number | undefined;
|
|
16
|
-
}>;
|
|
17
|
-
export declare const waitForApprovalTool: Tool<z.infer<typeof inputSchema>>;
|
|
18
|
-
export declare function waitForApprovalImpl(args: z.infer<typeof inputSchema>, api: ApiClient, options?: {
|
|
19
|
-
sleep?: (ms: number) => Promise<void>;
|
|
20
|
-
now?: () => number;
|
|
21
|
-
}): Promise<{
|
|
22
|
-
status: string;
|
|
23
|
-
run_state: string;
|
|
24
|
-
run_id: string;
|
|
25
|
-
reason?: string;
|
|
26
|
-
}>;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=wait-for-approval.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wait-for-approval.d.ts","sourceRoot":"","sources":["../../src/tools/wait-for-approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAElD,QAAA,MAAM,WAAW;;;;;;;;;;;;EAIf,CAAC;AAcH,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAiBjE,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EACjC,GAAG,EAAE,SAAS,EACd,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC1E,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBjF"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { assertApi } from "./index.js";
|
|
3
|
-
const inputSchema = z.object({
|
|
4
|
-
run_id: z.string().min(1),
|
|
5
|
-
timeout_seconds: z.number().int().positive().max(600).default(120),
|
|
6
|
-
poll_interval_seconds: z.number().int().positive().max(30).default(2),
|
|
7
|
-
});
|
|
8
|
-
const DESCRIPTION = `Wait for a run that's in pending_approval to be granted or denied by the user.
|
|
9
|
-
Returns the final status once the run leaves PENDING_APPROVAL or the timeout elapses.
|
|
10
|
-
|
|
11
|
-
WHEN TO CALL THIS TOOL:
|
|
12
|
-
- After provision() returns status="pending_approval"
|
|
13
|
-
- When you want to block until the user clicks the approval link
|
|
14
|
-
|
|
15
|
-
BEHAVIOR:
|
|
16
|
-
- Polls the run every poll_interval_seconds (default 2s)
|
|
17
|
-
- Returns once the run leaves PENDING_APPROVAL or timeout_seconds elapses
|
|
18
|
-
- Does NOT auto-grant; only the user can grant via the approval URL`;
|
|
19
|
-
export const waitForApprovalTool = {
|
|
20
|
-
name: "wait_for_approval",
|
|
21
|
-
description: DESCRIPTION,
|
|
22
|
-
inputSchema,
|
|
23
|
-
jsonInputSchema: {
|
|
24
|
-
type: "object",
|
|
25
|
-
required: ["run_id"],
|
|
26
|
-
properties: {
|
|
27
|
-
run_id: { type: "string" },
|
|
28
|
-
timeout_seconds: { type: "integer", minimum: 1, maximum: 600, default: 120 },
|
|
29
|
-
poll_interval_seconds: { type: "integer", minimum: 1, maximum: 30, default: 2 },
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
async handler(args, api) {
|
|
33
|
-
assertApi(api);
|
|
34
|
-
return waitForApprovalImpl(args, api);
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
export async function waitForApprovalImpl(args, api, options = {}) {
|
|
38
|
-
const sleep = options.sleep ?? defaultSleep;
|
|
39
|
-
const now = options.now ?? (() => Date.now());
|
|
40
|
-
const deadline = now() + args.timeout_seconds * 1000;
|
|
41
|
-
while (true) {
|
|
42
|
-
const run = await api.getRun(args.run_id);
|
|
43
|
-
if (run.state !== "PENDING_APPROVAL") {
|
|
44
|
-
return {
|
|
45
|
-
status: terminalDescription(run.state),
|
|
46
|
-
run_state: run.state,
|
|
47
|
-
run_id: run.id,
|
|
48
|
-
...(run.failure_reason !== null ? { reason: run.failure_reason } : {}),
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
if (now() >= deadline) {
|
|
52
|
-
return {
|
|
53
|
-
status: "timeout",
|
|
54
|
-
run_state: run.state,
|
|
55
|
-
run_id: run.id,
|
|
56
|
-
reason: "wait_for_approval_timed_out",
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
await sleep(args.poll_interval_seconds * 1000);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function defaultSleep(ms) {
|
|
63
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
64
|
-
}
|
|
65
|
-
function terminalDescription(state) {
|
|
66
|
-
switch (state) {
|
|
67
|
-
case "PROVISIONING":
|
|
68
|
-
case "ADAPTER_EXECUTING":
|
|
69
|
-
case "CRED_EXTRACTED":
|
|
70
|
-
case "VAULT_WRITTEN":
|
|
71
|
-
return "granted";
|
|
72
|
-
case "COMPLETE":
|
|
73
|
-
return "active";
|
|
74
|
-
case "REJECTED":
|
|
75
|
-
return "denied";
|
|
76
|
-
case "FAILED":
|
|
77
|
-
return "failed";
|
|
78
|
-
default:
|
|
79
|
-
return state.toLowerCase();
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=wait-for-approval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wait-for-approval.js","sourceRoot":"","sources":["../../src/tools/wait-for-approval.ts"],"names":[],"mappings":"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"}
|