@trusty-squire/mcp 0.8.2 → 0.8.3-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/dist/api-client.d.ts +51 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +25 -0
- package/dist/api-client.js.map +1 -1
- package/dist/bot/agent.d.ts +3 -0
- package/dist/bot/agent.d.ts.map +1 -1
- package/dist/bot/agent.js +479 -24
- package/dist/bot/agent.js.map +1 -1
- package/dist/bot/browser.d.ts +1 -0
- package/dist/bot/browser.d.ts.map +1 -1
- package/dist/bot/browser.js +63 -5
- package/dist/bot/browser.js.map +1 -1
- package/dist/bot/google-login.d.ts +1 -0
- package/dist/bot/google-login.d.ts.map +1 -1
- package/dist/bot/google-login.js +21 -1
- package/dist/bot/google-login.js.map +1 -1
- package/dist/bot/inbox-client.d.ts +3 -0
- package/dist/bot/inbox-client.d.ts.map +1 -1
- package/dist/bot/inbox-client.js +112 -0
- package/dist/bot/inbox-client.js.map +1 -1
- package/dist/bot/near-text-hint.d.ts +4 -0
- package/dist/bot/near-text-hint.d.ts.map +1 -0
- package/dist/bot/near-text-hint.js +72 -0
- package/dist/bot/near-text-hint.js.map +1 -0
- package/dist/bot/promote-to-skill.d.ts.map +1 -1
- package/dist/bot/promote-to-skill.js +365 -49
- package/dist/bot/promote-to-skill.js.map +1 -1
- package/dist/bot/read-otp.d.ts +6 -0
- package/dist/bot/read-otp.d.ts.map +1 -1
- package/dist/bot/read-otp.js +22 -0
- package/dist/bot/read-otp.js.map +1 -1
- package/dist/bot/replay-skill.d.ts.map +1 -1
- package/dist/bot/replay-skill.js +99 -109
- package/dist/bot/replay-skill.js.map +1 -1
- package/dist/install/agents.d.ts +1 -0
- package/dist/install/agents.d.ts.map +1 -1
- package/dist/install/agents.js +32 -0
- package/dist/install/agents.js.map +1 -1
- package/dist/install/cli.d.ts.map +1 -1
- package/dist/install/cli.js +24 -2
- package/dist/install/cli.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +20 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/always-load.d.ts +4 -0
- package/dist/tools/always-load.d.ts.map +1 -0
- package/dist/tools/always-load.js +6 -0
- package/dist/tools/always-load.js.map +1 -0
- package/dist/tools/delete-credential.d.ts +12 -0
- package/dist/tools/delete-credential.d.ts.map +1 -0
- package/dist/tools/delete-credential.js +23 -0
- package/dist/tools/delete-credential.js.map +1 -0
- package/dist/tools/index.d.ts +10 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +17 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/poll-credential-access.d.ts +12 -0
- package/dist/tools/poll-credential-access.d.ts.map +1 -0
- package/dist/tools/poll-credential-access.js +29 -0
- package/dist/tools/poll-credential-access.js.map +1 -0
- package/dist/tools/request-credential.d.ts +69 -0
- package/dist/tools/request-credential.d.ts.map +1 -0
- package/dist/tools/request-credential.js +69 -0
- package/dist/tools/request-credential.js.map +1 -0
- package/dist/tools/rotate-credential.d.ts +15 -0
- package/dist/tools/rotate-credential.d.ts.map +1 -0
- package/dist/tools/rotate-credential.js +29 -0
- package/dist/tools/rotate-credential.js.map +1 -0
- package/dist/tools/store-credential.d.ts +21 -0
- package/dist/tools/store-credential.d.ts.map +1 -0
- package/dist/tools/store-credential.js +50 -0
- package/dist/tools/store-credential.js.map +1 -0
- package/dist/tools/use-credential.d.ts +40 -0
- package/dist/tools/use-credential.d.ts.map +1 -0
- package/dist/tools/use-credential.js +61 -0
- package/dist/tools/use-credential.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { assertApi } from "./index.js";
|
|
3
|
+
const inputSchema = z.object({
|
|
4
|
+
reference: z.string().min(1),
|
|
5
|
+
});
|
|
6
|
+
const DESCRIPTION = `Permanently delete a credential from the vault. Irreversible.`;
|
|
7
|
+
export const deleteCredentialTool = {
|
|
8
|
+
name: "delete_credential",
|
|
9
|
+
description: DESCRIPTION,
|
|
10
|
+
inputSchema,
|
|
11
|
+
jsonInputSchema: {
|
|
12
|
+
type: "object",
|
|
13
|
+
required: ["reference"],
|
|
14
|
+
properties: { reference: { type: "string" } },
|
|
15
|
+
},
|
|
16
|
+
annotations: { destructiveHint: true },
|
|
17
|
+
async handler(args, api) {
|
|
18
|
+
assertApi(api);
|
|
19
|
+
const res = await api.deleteCredential(args.reference);
|
|
20
|
+
return { deleted_at: res.deleted_at };
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=delete-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-credential.js","sourceRoot":"","sources":["../../src/tools/delete-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAElD,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,+DAA+D,CAAC;AAEpF,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,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;IACtC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -4,16 +4,25 @@ import { getCredentialTool } from "./get-credential.js";
|
|
|
4
4
|
import { listCredentialsTool } from "./list-credentials.js";
|
|
5
5
|
import { provisionTool, checkProvisionStatusTool } from "./provision-any.js";
|
|
6
6
|
import { listExtractFailuresTool, getExtractFailureTool } from "./extract-failures.js";
|
|
7
|
+
import { storeCredentialTool } from "./store-credential.js";
|
|
8
|
+
import { rotateCredentialTool } from "./rotate-credential.js";
|
|
9
|
+
import { deleteCredentialTool } from "./delete-credential.js";
|
|
10
|
+
import { requestCredentialTool } from "./request-credential.js";
|
|
11
|
+
import { pollCredentialAccessTool } from "./poll-credential-access.js";
|
|
12
|
+
import { useCredentialTool } from "./use-credential.js";
|
|
7
13
|
export interface Tool<TArgs extends Record<string, unknown> = Record<string, unknown>> {
|
|
8
14
|
name: string;
|
|
9
15
|
description: string;
|
|
10
16
|
inputSchema: ZodTypeAny;
|
|
11
17
|
jsonInputSchema: Record<string, unknown>;
|
|
18
|
+
annotations?: Record<string, unknown>;
|
|
19
|
+
meta?: Record<string, unknown>;
|
|
12
20
|
handler: (args: TArgs, api: ApiClient | null) => Promise<unknown>;
|
|
13
21
|
}
|
|
22
|
+
export { ALWAYS_LOAD_META } from "./always-load.js";
|
|
14
23
|
export declare function assertApi(api: ApiClient | null): asserts api is ApiClient;
|
|
15
24
|
export declare const TOOLS: Tool[];
|
|
16
25
|
export declare function findTool(name: string): Tool | null;
|
|
17
26
|
export { z };
|
|
18
|
-
export { provisionTool, checkProvisionStatusTool, getCredentialTool, listCredentialsTool, listExtractFailuresTool, getExtractFailureTool, };
|
|
27
|
+
export { provisionTool, checkProvisionStatusTool, getCredentialTool, listCredentialsTool, storeCredentialTool, rotateCredentialTool, deleteCredentialTool, requestCredentialTool, pollCredentialAccessTool, useCredentialTool, listExtractFailuresTool, getExtractFailureTool, };
|
|
19
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,IAAI,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGzC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAItC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAID,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQpD,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS,CAMzE;AAQD,eAAO,MAAM,KAAK,EAAE,IAAI,EAgBb,CAAC;AAEZ,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAElD;AAGD,OAAO,EAAE,CAAC,EAAE,CAAC;AAIb,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -12,6 +12,15 @@ import { getCredentialTool } from "./get-credential.js";
|
|
|
12
12
|
import { listCredentialsTool } from "./list-credentials.js";
|
|
13
13
|
import { provisionTool, checkProvisionStatusTool } from "./provision-any.js";
|
|
14
14
|
import { listExtractFailuresTool, getExtractFailureTool } from "./extract-failures.js";
|
|
15
|
+
import { storeCredentialTool } from "./store-credential.js";
|
|
16
|
+
import { rotateCredentialTool } from "./rotate-credential.js";
|
|
17
|
+
import { deleteCredentialTool } from "./delete-credential.js";
|
|
18
|
+
import { requestCredentialTool } from "./request-credential.js";
|
|
19
|
+
import { pollCredentialAccessTool } from "./poll-credential-access.js";
|
|
20
|
+
import { useCredentialTool } from "./use-credential.js";
|
|
21
|
+
// Re-exported for convenience; defined in its own module to avoid a
|
|
22
|
+
// circular import (tool files import it; index imports the tool files).
|
|
23
|
+
export { ALWAYS_LOAD_META } from "./always-load.js";
|
|
15
24
|
// All tools receive `api: ApiClient | null`. In the single-tier model
|
|
16
25
|
// server.ts only invokes a handler after confirming a non-null api, but
|
|
17
26
|
// the registry contract still types it as nullable so handlers like
|
|
@@ -34,6 +43,13 @@ export const TOOLS = [
|
|
|
34
43
|
checkProvisionStatusTool,
|
|
35
44
|
getCredentialTool,
|
|
36
45
|
listCredentialsTool,
|
|
46
|
+
// Vault lifecycle + agent-mediated access (the credential surface).
|
|
47
|
+
storeCredentialTool,
|
|
48
|
+
rotateCredentialTool,
|
|
49
|
+
deleteCredentialTool,
|
|
50
|
+
requestCredentialTool,
|
|
51
|
+
pollCredentialAccessTool,
|
|
52
|
+
useCredentialTool,
|
|
37
53
|
// Diagnostic tools: agent reads them after a failed extract so it
|
|
38
54
|
// can write a targeted fix without the user fetching by curl.
|
|
39
55
|
listExtractFailuresTool,
|
|
@@ -46,5 +62,5 @@ export function findTool(name) {
|
|
|
46
62
|
export { z };
|
|
47
63
|
// Per-tool re-exports so callers (tests, custom integrations) can
|
|
48
64
|
// import a single tool without going through the TOOLS array.
|
|
49
|
-
export { provisionTool, checkProvisionStatusTool, getCredentialTool, listCredentialsTool, listExtractFailuresTool, getExtractFailureTool, };
|
|
65
|
+
export { provisionTool, checkProvisionStatusTool, getCredentialTool, listCredentialsTool, storeCredentialTool, rotateCredentialTool, deleteCredentialTool, requestCredentialTool, pollCredentialAccessTool, useCredentialTool, listExtractFailuresTool, getExtractFailureTool, };
|
|
50
66
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,8DAA8D;AAC9D,sEAAsE;AACtE,mCAAmC;AAEnC,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,8DAA8D;AAC9D,sEAAsE;AACtE,mCAAmC;AAEnC,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAiBxD,oEAAoE;AACpE,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,oEAAoE;AACpE,6DAA6D;AAC7D,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,GAAqB;IAC7C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,KAAK,GAAW;IAC3B,aAAa;IACb,wBAAwB;IACxB,iBAAiB;IACjB,mBAAmB;IACnB,oEAAoE;IACpE,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,wBAAwB;IACxB,iBAAiB;IACjB,kEAAkE;IAClE,8DAA8D;IAC9D,uBAAuB;IACvB,qBAAqB;CACZ,CAAC;AAEZ,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AACpD,CAAC;AAED,2EAA2E;AAC3E,OAAO,EAAE,CAAC,EAAE,CAAC;AAEb,kEAAkE;AAClE,8DAA8D;AAC9D,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type Tool } from "./index.js";
|
|
3
|
+
declare const inputSchema: z.ZodObject<{
|
|
4
|
+
request_id: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
request_id: string;
|
|
7
|
+
}, {
|
|
8
|
+
request_id: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const pollCredentialAccessTool: Tool<z.infer<typeof inputSchema>>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=poll-credential-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll-credential-access.d.ts","sourceRoot":"","sources":["../../src/tools/poll-credential-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAGlD,QAAA,MAAM,WAAW;;;;;;EAEf,CAAC;AAIH,eAAO,MAAM,wBAAwB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAoBtE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { assertApi } from "./index.js";
|
|
3
|
+
import { ALWAYS_LOAD_META } from "./always-load.js";
|
|
4
|
+
const inputSchema = z.object({
|
|
5
|
+
request_id: z.string().min(1),
|
|
6
|
+
});
|
|
7
|
+
const DESCRIPTION = `Long-poll the broker for a pending access-request's status.`;
|
|
8
|
+
export const pollCredentialAccessTool = {
|
|
9
|
+
name: "poll_credential_access",
|
|
10
|
+
description: DESCRIPTION,
|
|
11
|
+
inputSchema,
|
|
12
|
+
jsonInputSchema: {
|
|
13
|
+
type: "object",
|
|
14
|
+
required: ["request_id"],
|
|
15
|
+
properties: { request_id: { type: "string" } },
|
|
16
|
+
},
|
|
17
|
+
annotations: { readOnlyHint: true },
|
|
18
|
+
meta: ALWAYS_LOAD_META,
|
|
19
|
+
async handler(args, api) {
|
|
20
|
+
assertApi(api);
|
|
21
|
+
const res = await api.pollCredentialAccess(args.request_id);
|
|
22
|
+
return {
|
|
23
|
+
status: res.status,
|
|
24
|
+
...(res.value !== undefined ? { value: res.value } : {}),
|
|
25
|
+
...(res.denied_reason !== undefined ? { denied_reason: res.denied_reason } : {}),
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=poll-credential-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll-credential-access.js","sourceRoot":"","sources":["../../src/tools/poll-credential-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,6DAA6D,CAAC;AAElF,MAAM,CAAC,MAAM,wBAAwB,GAAsC;IACzE,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,WAAW;IACxB,WAAW;IACX,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,YAAY,CAAC;QACxB,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KAC/C;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IACnC,IAAI,EAAE,gBAAgB;IACtB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type Tool } from "./index.js";
|
|
3
|
+
declare const inputSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
4
|
+
reference: z.ZodOptional<z.ZodString>;
|
|
5
|
+
service: z.ZodOptional<z.ZodString>;
|
|
6
|
+
purpose: z.ZodString;
|
|
7
|
+
intent: z.ZodEnum<["value", "proxy"]>;
|
|
8
|
+
proxy_target_host: z.ZodOptional<z.ZodString>;
|
|
9
|
+
reason_proxy_not_possible: z.ZodOptional<z.ZodString>;
|
|
10
|
+
mode_requested: z.ZodOptional<z.ZodEnum<["once", "session", "persistent"]>>;
|
|
11
|
+
ttl_requested: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
purpose: string;
|
|
14
|
+
intent: "value" | "proxy";
|
|
15
|
+
service?: string | undefined;
|
|
16
|
+
reference?: string | undefined;
|
|
17
|
+
proxy_target_host?: string | undefined;
|
|
18
|
+
reason_proxy_not_possible?: string | undefined;
|
|
19
|
+
mode_requested?: "once" | "session" | "persistent" | undefined;
|
|
20
|
+
ttl_requested?: number | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
purpose: string;
|
|
23
|
+
intent: "value" | "proxy";
|
|
24
|
+
service?: string | undefined;
|
|
25
|
+
reference?: string | undefined;
|
|
26
|
+
proxy_target_host?: string | undefined;
|
|
27
|
+
reason_proxy_not_possible?: string | undefined;
|
|
28
|
+
mode_requested?: "once" | "session" | "persistent" | undefined;
|
|
29
|
+
ttl_requested?: number | undefined;
|
|
30
|
+
}>, {
|
|
31
|
+
purpose: string;
|
|
32
|
+
intent: "value" | "proxy";
|
|
33
|
+
service?: string | undefined;
|
|
34
|
+
reference?: string | undefined;
|
|
35
|
+
proxy_target_host?: string | undefined;
|
|
36
|
+
reason_proxy_not_possible?: string | undefined;
|
|
37
|
+
mode_requested?: "once" | "session" | "persistent" | undefined;
|
|
38
|
+
ttl_requested?: number | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
purpose: string;
|
|
41
|
+
intent: "value" | "proxy";
|
|
42
|
+
service?: string | undefined;
|
|
43
|
+
reference?: string | undefined;
|
|
44
|
+
proxy_target_host?: string | undefined;
|
|
45
|
+
reason_proxy_not_possible?: string | undefined;
|
|
46
|
+
mode_requested?: "once" | "session" | "persistent" | undefined;
|
|
47
|
+
ttl_requested?: number | undefined;
|
|
48
|
+
}>, {
|
|
49
|
+
purpose: string;
|
|
50
|
+
intent: "value" | "proxy";
|
|
51
|
+
service?: string | undefined;
|
|
52
|
+
reference?: string | undefined;
|
|
53
|
+
proxy_target_host?: string | undefined;
|
|
54
|
+
reason_proxy_not_possible?: string | undefined;
|
|
55
|
+
mode_requested?: "once" | "session" | "persistent" | undefined;
|
|
56
|
+
ttl_requested?: number | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
purpose: string;
|
|
59
|
+
intent: "value" | "proxy";
|
|
60
|
+
service?: string | undefined;
|
|
61
|
+
reference?: string | undefined;
|
|
62
|
+
proxy_target_host?: string | undefined;
|
|
63
|
+
reason_proxy_not_possible?: string | undefined;
|
|
64
|
+
mode_requested?: "once" | "session" | "persistent" | undefined;
|
|
65
|
+
ttl_requested?: number | undefined;
|
|
66
|
+
}>;
|
|
67
|
+
export declare const requestCredentialTool: Tool<z.infer<typeof inputSchema>>;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=request-credential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-credential.d.ts","sourceRoot":"","sources":["../../src/tools/request-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAElD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBb,CAAC;AAWL,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAwCnE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { assertApi } from "./index.js";
|
|
3
|
+
const inputSchema = z
|
|
4
|
+
.object({
|
|
5
|
+
reference: z.string().min(1).optional(),
|
|
6
|
+
service: z.string().min(1).optional(),
|
|
7
|
+
purpose: z.string().min(1).max(400),
|
|
8
|
+
intent: z.enum(["value", "proxy"]),
|
|
9
|
+
proxy_target_host: z.string().min(1).optional(),
|
|
10
|
+
reason_proxy_not_possible: z.string().min(1).optional(),
|
|
11
|
+
mode_requested: z.enum(["once", "session", "persistent"]).optional(),
|
|
12
|
+
ttl_requested: z.number().int().positive().optional(),
|
|
13
|
+
})
|
|
14
|
+
.refine((b) => b.reference !== undefined || b.service !== undefined, {
|
|
15
|
+
message: "one of reference or service is required",
|
|
16
|
+
})
|
|
17
|
+
.refine((b) => b.intent !== "value" || b.reason_proxy_not_possible !== undefined, {
|
|
18
|
+
message: "reason_proxy_not_possible is required when intent=value",
|
|
19
|
+
});
|
|
20
|
+
const DESCRIPTION = `Return the raw plaintext secret to this agent. The secret will be
|
|
21
|
+
VISIBLE in the conversation context after this call. Use ONLY when the
|
|
22
|
+
user explicitly needs the value (writing a .env file, pasting into a
|
|
23
|
+
config UI) — for HTTP API calls always prefer use_credential, which
|
|
24
|
+
keeps the secret server-side. Requires the user to approve in the
|
|
25
|
+
Trusty Squire web UI; you must poll_credential_access for the result.
|
|
26
|
+
Must include a \`reason_proxy_not_possible\` explaining why use_credential
|
|
27
|
+
doesn't fit.`;
|
|
28
|
+
export const requestCredentialTool = {
|
|
29
|
+
name: "request_credential",
|
|
30
|
+
description: DESCRIPTION,
|
|
31
|
+
inputSchema,
|
|
32
|
+
jsonInputSchema: {
|
|
33
|
+
type: "object",
|
|
34
|
+
required: ["purpose", "intent"],
|
|
35
|
+
properties: {
|
|
36
|
+
reference: { type: "string" },
|
|
37
|
+
service: { type: "string" },
|
|
38
|
+
purpose: { type: "string", maxLength: 400 },
|
|
39
|
+
intent: { type: "string", enum: ["value", "proxy"] },
|
|
40
|
+
proxy_target_host: { type: "string" },
|
|
41
|
+
reason_proxy_not_possible: { type: "string" },
|
|
42
|
+
mode_requested: { type: "string", enum: ["once", "session", "persistent"] },
|
|
43
|
+
ttl_requested: { type: "number" },
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
annotations: { destructiveHint: true },
|
|
47
|
+
async handler(args, api) {
|
|
48
|
+
assertApi(api);
|
|
49
|
+
const res = await api.requestCredentialAccess({
|
|
50
|
+
...(args.reference !== undefined ? { reference: args.reference } : {}),
|
|
51
|
+
...(args.service !== undefined ? { service: args.service } : {}),
|
|
52
|
+
purpose: args.purpose,
|
|
53
|
+
intent: args.intent,
|
|
54
|
+
...(args.proxy_target_host !== undefined ? { proxy_target_host: args.proxy_target_host } : {}),
|
|
55
|
+
...(args.reason_proxy_not_possible !== undefined
|
|
56
|
+
? { reason_proxy_not_possible: args.reason_proxy_not_possible }
|
|
57
|
+
: {}),
|
|
58
|
+
...(args.mode_requested !== undefined ? { mode_requested: args.mode_requested } : {}),
|
|
59
|
+
...(args.ttl_requested !== undefined ? { ttl_requested: args.ttl_requested } : {}),
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
request_id: res.request_id,
|
|
63
|
+
status: res.status,
|
|
64
|
+
expires_at: res.expires_at,
|
|
65
|
+
auto_approved: res.auto_approved,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=request-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-credential.js","sourceRoot":"","sources":["../../src/tools/request-credential.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type Tool } from "./index.js";
|
|
3
|
+
declare const inputSchema: z.ZodObject<{
|
|
4
|
+
reference: z.ZodString;
|
|
5
|
+
new_value: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
reference: string;
|
|
8
|
+
new_value: string;
|
|
9
|
+
}, {
|
|
10
|
+
reference: string;
|
|
11
|
+
new_value: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const rotateCredentialTool: Tool<z.infer<typeof inputSchema>>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=rotate-credential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAElD,QAAA,MAAM,WAAW;;;;;;;;;EAGf,CAAC;AAMH,eAAO,MAAM,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAkBlE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { assertApi } from "./index.js";
|
|
3
|
+
const inputSchema = z.object({
|
|
4
|
+
reference: z.string().min(1),
|
|
5
|
+
new_value: z.string().min(1).max(8192),
|
|
6
|
+
});
|
|
7
|
+
const DESCRIPTION = `Rotate a vaulted secret's value. Cascade: revokes all persistent grants
|
|
8
|
+
bound to this credential — every previously-approved agent will need
|
|
9
|
+
fresh user approval.`;
|
|
10
|
+
export const rotateCredentialTool = {
|
|
11
|
+
name: "rotate_credential",
|
|
12
|
+
description: DESCRIPTION,
|
|
13
|
+
inputSchema,
|
|
14
|
+
jsonInputSchema: {
|
|
15
|
+
type: "object",
|
|
16
|
+
required: ["reference", "new_value"],
|
|
17
|
+
properties: {
|
|
18
|
+
reference: { type: "string" },
|
|
19
|
+
new_value: { type: "string" },
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
annotations: { destructiveHint: true },
|
|
23
|
+
async handler(args, api) {
|
|
24
|
+
assertApi(api);
|
|
25
|
+
const res = await api.rotateCredential(args.reference, args.new_value);
|
|
26
|
+
return { rotated_at: res.rotated_at, revoked_grant_count: res.revoked_grant_count };
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=rotate-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate-credential.js","sourceRoot":"","sources":["../../src/tools/rotate-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;;qBAEC,CAAC;AAEtB,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,EAAE,WAAW,CAAC;QACpC,UAAU,EAAE;YACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC9B;KACF;IACD,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;IACtC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC;IACtF,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type Tool } from "./index.js";
|
|
3
|
+
declare const inputSchema: z.ZodObject<{
|
|
4
|
+
service: z.ZodString;
|
|
5
|
+
value: z.ZodString;
|
|
6
|
+
env_var_suggestion: z.ZodOptional<z.ZodString>;
|
|
7
|
+
type: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
value: string;
|
|
10
|
+
service: string;
|
|
11
|
+
type?: string | undefined;
|
|
12
|
+
env_var_suggestion?: string | undefined;
|
|
13
|
+
}, {
|
|
14
|
+
value: string;
|
|
15
|
+
service: string;
|
|
16
|
+
type?: string | undefined;
|
|
17
|
+
env_var_suggestion?: string | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const storeCredentialTool: Tool<z.infer<typeof inputSchema>>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=store-credential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-credential.d.ts","sourceRoot":"","sources":["../../src/tools/store-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAGlD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;EAKf,CAAC;AASH,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAiCjE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { assertApi } from "./index.js";
|
|
3
|
+
import { ALWAYS_LOAD_META } from "./always-load.js";
|
|
4
|
+
const inputSchema = z.object({
|
|
5
|
+
service: z.string().min(1).max(120),
|
|
6
|
+
value: z.string().min(1).max(8192),
|
|
7
|
+
env_var_suggestion: z.string().min(1).max(120).optional(),
|
|
8
|
+
type: z.string().min(1).max(60).optional(),
|
|
9
|
+
});
|
|
10
|
+
const DESCRIPTION = `Save a secret (API key, token, password, OAuth refresh token, database
|
|
11
|
+
connection string) that the user just shared into the encrypted vault.
|
|
12
|
+
CALL THIS AUTOMATICALLY whenever the user pastes a secret-shaped value
|
|
13
|
+
(sk-, ghp_, AKIA, eyJ; password/token patterns) into the conversation —
|
|
14
|
+
don't ask permission first. Returns a credential reference and the
|
|
15
|
+
service's allowed_hosts list.`;
|
|
16
|
+
export const storeCredentialTool = {
|
|
17
|
+
name: "store_credential",
|
|
18
|
+
description: DESCRIPTION,
|
|
19
|
+
inputSchema,
|
|
20
|
+
jsonInputSchema: {
|
|
21
|
+
type: "object",
|
|
22
|
+
required: ["service", "value"],
|
|
23
|
+
properties: {
|
|
24
|
+
service: { type: "string" },
|
|
25
|
+
value: { type: "string" },
|
|
26
|
+
env_var_suggestion: { type: "string" },
|
|
27
|
+
type: { type: "string" },
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
annotations: { idempotentHint: true },
|
|
31
|
+
meta: ALWAYS_LOAD_META,
|
|
32
|
+
async handler(args, api) {
|
|
33
|
+
assertApi(api);
|
|
34
|
+
const res = await api.storeCredential({
|
|
35
|
+
service: args.service,
|
|
36
|
+
value: args.value,
|
|
37
|
+
...(args.env_var_suggestion !== undefined
|
|
38
|
+
? { env_var_suggestion: args.env_var_suggestion }
|
|
39
|
+
: {}),
|
|
40
|
+
...(args.type !== undefined ? { type: args.type } : {}),
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
reference: res.reference,
|
|
44
|
+
type: res.type,
|
|
45
|
+
stored_at: res.created_at ?? null,
|
|
46
|
+
allowed_hosts: res.allowed_hosts ?? [],
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=store-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-credential.js","sourceRoot":"","sources":["../../src/tools/store-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;;;;;8BAKU,CAAC;AAE/B,MAAM,CAAC,MAAM,mBAAmB,GAAsC;IACpE,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,WAAW;IACxB,WAAW;IACX,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzB;KACF;IACD,WAAW,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;IACrC,IAAI,EAAE,gBAAgB;IACtB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;YACjC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;SACvC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type Tool } from "./index.js";
|
|
3
|
+
declare const inputSchema: z.ZodObject<{
|
|
4
|
+
request_id: z.ZodString;
|
|
5
|
+
http: z.ZodObject<{
|
|
6
|
+
method: z.ZodString;
|
|
7
|
+
url: z.ZodString;
|
|
8
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
9
|
+
body: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
method: string;
|
|
12
|
+
url: string;
|
|
13
|
+
body?: string | undefined;
|
|
14
|
+
headers?: Record<string, string> | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
method: string;
|
|
17
|
+
url: string;
|
|
18
|
+
body?: string | undefined;
|
|
19
|
+
headers?: Record<string, string> | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
request_id: string;
|
|
23
|
+
http: {
|
|
24
|
+
method: string;
|
|
25
|
+
url: string;
|
|
26
|
+
body?: string | undefined;
|
|
27
|
+
headers?: Record<string, string> | undefined;
|
|
28
|
+
};
|
|
29
|
+
}, {
|
|
30
|
+
request_id: string;
|
|
31
|
+
http: {
|
|
32
|
+
method: string;
|
|
33
|
+
url: string;
|
|
34
|
+
body?: string | undefined;
|
|
35
|
+
headers?: Record<string, string> | undefined;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
export declare const useCredentialTool: Tool<z.infer<typeof inputSchema>>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=use-credential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-credential.d.ts","sourceRoot":"","sources":["../../src/tools/use-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAQlD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQf,CAAC;AAUH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAmC/D,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { assertApi } from "./index.js";
|
|
3
|
+
import { ALWAYS_LOAD_META } from "./always-load.js";
|
|
4
|
+
// use_credential can target a freshly-minted request (request_id) OR
|
|
5
|
+
// ask the broker to mint one inline from a service/reference. v1
|
|
6
|
+
// requires an already-created request_id: the agent calls
|
|
7
|
+
// request_credential(intent="proxy") first (auto-approved for trusted
|
|
8
|
+
// sessions), then use_credential with the returned request_id.
|
|
9
|
+
const inputSchema = z.object({
|
|
10
|
+
request_id: z.string().min(1),
|
|
11
|
+
http: z.object({
|
|
12
|
+
method: z.string().min(1).max(10),
|
|
13
|
+
url: z.string().min(1).max(2048),
|
|
14
|
+
headers: z.record(z.string()).optional(),
|
|
15
|
+
body: z.string().max(64 * 1024).optional(),
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
const DESCRIPTION = `Execute an authenticated HTTP request against an external API using a
|
|
19
|
+
vaulted credential. The secret value never crosses to this agent — the
|
|
20
|
+
server injects it server-side via \${SECRET} or \${SECRET_JSON} placeholders
|
|
21
|
+
in your headers/body. Pass \`service\` or \`reference\` plus the standard
|
|
22
|
+
HTTP fields (method, url, headers, body). PREFER THIS over
|
|
23
|
+
request_credential whenever the user wants an API call; only fall back
|
|
24
|
+
if you need the raw secret to write into a local file.`;
|
|
25
|
+
export const useCredentialTool = {
|
|
26
|
+
name: "use_credential",
|
|
27
|
+
description: DESCRIPTION,
|
|
28
|
+
inputSchema,
|
|
29
|
+
jsonInputSchema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
required: ["request_id", "http"],
|
|
32
|
+
properties: {
|
|
33
|
+
request_id: { type: "string" },
|
|
34
|
+
http: {
|
|
35
|
+
type: "object",
|
|
36
|
+
required: ["method", "url"],
|
|
37
|
+
properties: {
|
|
38
|
+
method: { type: "string" },
|
|
39
|
+
url: { type: "string" },
|
|
40
|
+
headers: { type: "object", additionalProperties: { type: "string" } },
|
|
41
|
+
body: { type: "string" },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
annotations: { destructiveHint: true },
|
|
47
|
+
meta: ALWAYS_LOAD_META,
|
|
48
|
+
async handler(args, api) {
|
|
49
|
+
assertApi(api);
|
|
50
|
+
// Rebuild without undefined-valued optionals (exactOptionalPropertyTypes).
|
|
51
|
+
const http = {
|
|
52
|
+
method: args.http.method,
|
|
53
|
+
url: args.http.url,
|
|
54
|
+
...(args.http.headers !== undefined ? { headers: args.http.headers } : {}),
|
|
55
|
+
...(args.http.body !== undefined ? { body: args.http.body } : {}),
|
|
56
|
+
};
|
|
57
|
+
const res = await api.useCredentialProxy(args.request_id, http);
|
|
58
|
+
return { response: res.response };
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=use-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-credential.js","sourceRoot":"","sources":["../../src/tools/use-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,qEAAqE;AACrE,iEAAiE;AACjE,0DAA0D;AAC1D,sEAAsE;AACtE,+DAA+D;AAC/D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;KAC3C,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;;;;;;uDAMmC,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAClE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,WAAW;IACxB,WAAW;IACX,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;QAChC,UAAU,EAAE;YACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC3B,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBACrE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;aACF;SACF;KACF;IACD,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,gBAAgB;IACtB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,2EAA2E;QAC3E,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trusty-squire/mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3-rc.1",
|
|
4
4
|
"mcpName": "io.github.Trusty-Squire/mcp",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Local MCP server vibe coding agents install. Thin relay to the Trusty Squire API, with the bundled universal signup bot.",
|