@action-llama/action-llama 0.1.4 → 0.2.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/README.md +63 -59
- package/dist/agents/container-entry.js +36 -9
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/prompt.d.ts.map +1 -1
- package/dist/agents/prompt.js +17 -6
- package/dist/agents/prompt.js.map +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +5 -25
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/{agent/add.d.ts → setup.d.ts} +1 -2
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +60 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +3 -0
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +1 -37
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/main.js +6 -9
- package/dist/cli/main.js.map +1 -1
- package/dist/credentials/builtins/anthropic-key.d.ts +4 -0
- package/dist/credentials/builtins/anthropic-key.d.ts.map +1 -0
- package/dist/credentials/builtins/anthropic-key.js +69 -0
- package/dist/credentials/builtins/anthropic-key.js.map +1 -0
- package/dist/credentials/builtins/github-token.d.ts +4 -0
- package/dist/credentials/builtins/github-token.d.ts.map +1 -0
- package/dist/credentials/builtins/github-token.js +19 -0
- package/dist/credentials/builtins/github-token.js.map +1 -0
- package/dist/credentials/builtins/github-webhook-secret.d.ts +4 -0
- package/dist/credentials/builtins/github-webhook-secret.d.ts.map +1 -0
- package/dist/credentials/builtins/github-webhook-secret.js +12 -0
- package/dist/credentials/builtins/github-webhook-secret.js.map +1 -0
- package/dist/credentials/builtins/id-rsa.d.ts +4 -0
- package/dist/credentials/builtins/id-rsa.d.ts.map +1 -0
- package/dist/credentials/builtins/id-rsa.js +67 -0
- package/dist/credentials/builtins/id-rsa.js.map +1 -0
- package/dist/credentials/builtins/index.d.ts +3 -0
- package/dist/credentials/builtins/index.d.ts.map +1 -0
- package/dist/credentials/builtins/index.js +15 -0
- package/dist/credentials/builtins/index.js.map +1 -0
- package/dist/credentials/builtins/sentry-client-secret.d.ts +4 -0
- package/dist/credentials/builtins/sentry-client-secret.d.ts.map +1 -0
- package/dist/credentials/builtins/sentry-client-secret.js +12 -0
- package/dist/credentials/builtins/sentry-client-secret.js.map +1 -0
- package/dist/credentials/builtins/sentry-token.d.ts +4 -0
- package/dist/credentials/builtins/sentry-token.d.ts.map +1 -0
- package/dist/credentials/builtins/sentry-token.js +72 -0
- package/dist/credentials/builtins/sentry-token.js.map +1 -0
- package/dist/credentials/prompter.d.ts +14 -0
- package/dist/credentials/prompter.d.ts.map +1 -0
- package/dist/credentials/prompter.js +65 -0
- package/dist/credentials/prompter.js.map +1 -0
- package/dist/credentials/registry.d.ts +16 -0
- package/dist/credentials/registry.d.ts.map +1 -0
- package/dist/credentials/registry.js +25 -0
- package/dist/credentials/registry.js.map +1 -0
- package/dist/credentials/schema.d.ts +23 -0
- package/dist/credentials/schema.d.ts.map +1 -0
- package/dist/credentials/schema.js +6 -0
- package/dist/credentials/schema.js.map +1 -0
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +14 -4
- package/dist/scheduler/index.js.map +1 -1
- package/dist/setup/prompts.d.ts +1 -43
- package/dist/setup/prompts.d.ts.map +1 -1
- package/dist/setup/prompts.js +43 -605
- package/dist/setup/prompts.js.map +1 -1
- package/dist/setup/scaffold.d.ts +1 -2
- package/dist/setup/scaffold.d.ts.map +1 -1
- package/dist/setup/scaffold.js +62 -29
- package/dist/setup/scaffold.js.map +1 -1
- package/dist/shared/config.d.ts +1 -2
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +16 -6
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/credentials.d.ts +2 -0
- package/dist/shared/credentials.d.ts.map +1 -1
- package/dist/shared/credentials.js +17 -0
- package/dist/shared/credentials.js.map +1 -1
- package/dist/shared/paths.d.ts +0 -1
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +0 -3
- package/dist/shared/paths.js.map +1 -1
- package/dist/webhooks/definitions/github.d.ts +3 -0
- package/dist/webhooks/definitions/github.d.ts.map +1 -0
- package/dist/webhooks/definitions/github.js +38 -0
- package/dist/webhooks/definitions/github.js.map +1 -0
- package/dist/webhooks/definitions/registry.d.ts +4 -0
- package/dist/webhooks/definitions/registry.d.ts.map +1 -0
- package/dist/webhooks/definitions/registry.js +14 -0
- package/dist/webhooks/definitions/registry.js.map +1 -0
- package/dist/webhooks/definitions/schema.d.ts +19 -0
- package/dist/webhooks/definitions/schema.d.ts.map +1 -0
- package/dist/webhooks/definitions/schema.js +2 -0
- package/dist/webhooks/definitions/schema.js.map +1 -0
- package/dist/webhooks/definitions/sentry.d.ts +3 -0
- package/dist/webhooks/definitions/sentry.d.ts.map +1 -0
- package/dist/webhooks/definitions/sentry.js +22 -0
- package/dist/webhooks/definitions/sentry.js.map +1 -0
- package/dist/webhooks/providers/sentry.d.ts +9 -0
- package/dist/webhooks/providers/sentry.d.ts.map +1 -0
- package/dist/webhooks/providers/sentry.js +108 -0
- package/dist/webhooks/providers/sentry.js.map +1 -0
- package/dist/webhooks/registry.js +2 -2
- package/dist/webhooks/registry.js.map +1 -1
- package/dist/webhooks/types.d.ts +5 -1
- package/dist/webhooks/types.d.ts.map +1 -1
- package/package.json +4 -3
- package/dist/agents/definitions/dev/AGENTS.md +0 -44
- package/dist/agents/definitions/dev/config-definition.json +0 -39
- package/dist/agents/definitions/devops/AGENTS.md +0 -33
- package/dist/agents/definitions/devops/config-definition.json +0 -37
- package/dist/agents/definitions/loader.d.ts +0 -18
- package/dist/agents/definitions/loader.d.ts.map +0 -1
- package/dist/agents/definitions/loader.js +0 -59
- package/dist/agents/definitions/loader.js.map +0 -1
- package/dist/agents/definitions/reviewer/AGENTS.md +0 -37
- package/dist/agents/definitions/reviewer/config-definition.json +0 -24
- package/dist/agents/definitions/schema.d.ts +0 -38
- package/dist/agents/definitions/schema.d.ts.map +0 -1
- package/dist/agents/definitions/schema.js +0 -97
- package/dist/agents/definitions/schema.js.map +0 -1
- package/dist/cli/commands/agent/add.d.ts.map +0 -1
- package/dist/cli/commands/agent/add.js +0 -86
- package/dist/cli/commands/agent/add.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAyB;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,IAAI,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/cli/main.js
CHANGED
|
@@ -48,16 +48,13 @@ program
|
|
|
48
48
|
const { execute } = await import("./commands/status.js");
|
|
49
49
|
await execute(opts);
|
|
50
50
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
agent
|
|
54
|
-
.command("add")
|
|
55
|
-
.description("Add a new agent to an existing project")
|
|
56
|
-
.argument("[definition]", "built-in name (dev, reviewer, devops) or path to definition directory")
|
|
51
|
+
program
|
|
52
|
+
.command("setup")
|
|
53
|
+
.description("Ensure all agent credentials exist")
|
|
57
54
|
.option("-p, --project <dir>", "project directory", ".")
|
|
58
|
-
.action(async (
|
|
59
|
-
const { execute } = await import("./commands/
|
|
60
|
-
await execute(
|
|
55
|
+
.action(async (opts) => {
|
|
56
|
+
const { execute } = await import("./commands/setup.js");
|
|
57
|
+
await execute(opts);
|
|
61
58
|
});
|
|
62
59
|
program.parseAsync().catch((err) => {
|
|
63
60
|
const detail = { error: err.message };
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,+BAA+B;AAE/B,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,sDAAsD,CAAC;KACnE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,CAAC;KACvD,MAAM,CAAC,uBAAuB,EAAE,kEAAkE,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;KACjC,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,IAAI,CAAC;KAChE,MAAM,CAAC,cAAc,EAAE,uCAAuC,CAAC;KAC/D,MAAM,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE;IACpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACvD,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACzD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-key.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/anthropic-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAA0B,MAAM,cAAc,CAAC;AAMjF,QAAA,MAAM,YAAY,EAAE,oBAsEnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { input, select, confirm } from "@inquirer/prompts";
|
|
2
|
+
import { validateAnthropicApiKey, validateOAuthTokenFormat } from "../../setup/validators.js";
|
|
3
|
+
import { CREDENTIALS_DIR } from "../../shared/paths.js";
|
|
4
|
+
const anthropicKey = {
|
|
5
|
+
id: "anthropic-key",
|
|
6
|
+
label: "Anthropic API Credential",
|
|
7
|
+
description: "API key, OAuth token, or pi auth for Claude access",
|
|
8
|
+
filename: "anthropic-key",
|
|
9
|
+
fields: [
|
|
10
|
+
{ name: "token", label: "API Key / OAuth Token", description: "Anthropic credential", secret: true },
|
|
11
|
+
],
|
|
12
|
+
// No envVars — anthropic-key is read directly by container-entry.ts via the SDK
|
|
13
|
+
// Custom prompt: supports three auth methods (pi_auth, api_key, oauth_token)
|
|
14
|
+
async prompt(existing) {
|
|
15
|
+
if (existing?.token) {
|
|
16
|
+
const reuse = await confirm({
|
|
17
|
+
message: `Found existing Anthropic credential in ${CREDENTIALS_DIR}/anthropic-key. Use it?`,
|
|
18
|
+
default: true,
|
|
19
|
+
});
|
|
20
|
+
if (reuse) {
|
|
21
|
+
const authType = existing.token.includes("sk-ant-oat") ? "oauth_token" : "api_key";
|
|
22
|
+
console.log(`Using existing credential (detected type: ${authType}).\n`);
|
|
23
|
+
return { values: existing, params: { authType } };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const authMethod = await select({
|
|
27
|
+
message: "How do you want to authenticate with Anthropic?",
|
|
28
|
+
choices: [
|
|
29
|
+
{ name: "Use existing pi auth (already ran `pi /login` or `claude setup-token`)", value: "pi_auth" },
|
|
30
|
+
{ name: "Enter an API key (sk-ant-api...)", value: "api_key" },
|
|
31
|
+
{ name: "Enter an OAuth token (sk-ant-oat...)", value: "oauth_token" },
|
|
32
|
+
],
|
|
33
|
+
});
|
|
34
|
+
if (authMethod === "pi_auth") {
|
|
35
|
+
const { AuthStorage, ModelRegistry } = await import("@mariozechner/pi-coding-agent");
|
|
36
|
+
const authStorage = AuthStorage.create();
|
|
37
|
+
const registry = new ModelRegistry(authStorage);
|
|
38
|
+
const available = await registry.getAvailable();
|
|
39
|
+
const hasAnthropic = available.some((m) => m.provider === "anthropic");
|
|
40
|
+
if (!hasAnthropic) {
|
|
41
|
+
throw new Error("No Anthropic credentials found in pi auth storage (~/.pi/agent/auth.json). " +
|
|
42
|
+
"Run `pi /login` first, or choose a different auth method.");
|
|
43
|
+
}
|
|
44
|
+
console.log("Found existing Anthropic credentials in pi auth storage.\n");
|
|
45
|
+
// pi_auth doesn't write a credential file — return undefined to skip storage
|
|
46
|
+
return { values: {}, params: { authType: "pi_auth" } };
|
|
47
|
+
}
|
|
48
|
+
if (authMethod === "api_key") {
|
|
49
|
+
const token = (await input({
|
|
50
|
+
message: "Anthropic API key:",
|
|
51
|
+
validate: (v) => (v.trim().length > 0 ? true : "Key is required"),
|
|
52
|
+
})).trim();
|
|
53
|
+
console.log("Validating API key...");
|
|
54
|
+
await validateAnthropicApiKey(token);
|
|
55
|
+
console.log("API key validated.\n");
|
|
56
|
+
return { values: { token }, params: { authType: "api_key" } };
|
|
57
|
+
}
|
|
58
|
+
// oauth_token
|
|
59
|
+
const token = (await input({
|
|
60
|
+
message: "Anthropic OAuth token (from `claude setup-token`):",
|
|
61
|
+
validate: (v) => (v.trim().length > 0 ? true : "Token is required"),
|
|
62
|
+
})).trim();
|
|
63
|
+
validateOAuthTokenFormat(token);
|
|
64
|
+
console.log("OAuth token format looks valid. It will be verified on first agent run.\n");
|
|
65
|
+
return { values: { token }, params: { authType: "oauth_token" } };
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
export default anthropicKey;
|
|
69
|
+
//# sourceMappingURL=anthropic-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-key.js","sourceRoot":"","sources":["../../../src/credentials/builtins/anthropic-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-token.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/github-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,QAAA,MAAM,WAAW,EAAE,oBAgBlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { validateGitHubToken } from "../../setup/validators.js";
|
|
2
|
+
const githubToken = {
|
|
3
|
+
id: "github-token",
|
|
4
|
+
label: "GitHub Personal Access Token",
|
|
5
|
+
description: "Needs repo and workflow scopes",
|
|
6
|
+
helpUrl: "https://github.com/settings/tokens",
|
|
7
|
+
filename: "github-token",
|
|
8
|
+
fields: [
|
|
9
|
+
{ name: "token", label: "Token", description: "GitHub PAT (ghp_...)", secret: true },
|
|
10
|
+
],
|
|
11
|
+
envVars: { token: "GITHUB_TOKEN" },
|
|
12
|
+
agentContext: "`GITHUB_TOKEN` / `GH_TOKEN` — use `gh` CLI and `git` directly",
|
|
13
|
+
async validate(values) {
|
|
14
|
+
await validateGitHubToken(values.token);
|
|
15
|
+
return true;
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export default githubToken;
|
|
19
|
+
//# sourceMappingURL=github-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-token.js","sourceRoot":"","sources":["../../../src/credentials/builtins/github-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,WAAW,GAAyB;IACxC,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,gCAAgC;IAC7C,OAAO,EAAE,oCAAoC;IAC7C,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE;KACrF;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAClC,YAAY,EAAE,+DAA+D;IAE7E,KAAK,CAAC,QAAQ,CAAC,MAAM;QACnB,MAAM,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-webhook-secret.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/github-webhook-secret.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,QAAA,MAAM,mBAAmB,EAAE,oBAS1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const githubWebhookSecret = {
|
|
2
|
+
id: "github-webhook-secret",
|
|
3
|
+
label: "GitHub Webhook Secret",
|
|
4
|
+
description: "Shared secret for verifying GitHub webhook payloads",
|
|
5
|
+
filename: "github-webhook-secret",
|
|
6
|
+
fields: [
|
|
7
|
+
{ name: "secret", label: "Webhook Secret", description: "Set this same value in your GitHub webhook settings", secret: true },
|
|
8
|
+
],
|
|
9
|
+
// No envVars or agentContext — used by the gateway, not injected into agents
|
|
10
|
+
};
|
|
11
|
+
export default githubWebhookSecret;
|
|
12
|
+
//# sourceMappingURL=github-webhook-secret.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-webhook-secret.js","sourceRoot":"","sources":["../../../src/credentials/builtins/github-webhook-secret.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAyB;IAChD,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,qDAAqD;IAClE,QAAQ,EAAE,uBAAuB;IACjC,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,qDAAqD,EAAE,MAAM,EAAE,IAAI,EAAE;KAC9H;IACD,6EAA6E;CAC9E,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-rsa.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/id-rsa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAA0B,MAAM,cAAc,CAAC;AAMjF,QAAA,MAAM,KAAK,EAAE,oBAiEZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { input, confirm, select } from "@inquirer/prompts";
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
|
+
import { resolve } from "path";
|
|
4
|
+
import { CREDENTIALS_DIR } from "../../shared/paths.js";
|
|
5
|
+
const idRsa = {
|
|
6
|
+
id: "id_rsa",
|
|
7
|
+
label: "SSH Private Key",
|
|
8
|
+
description: "For git clone/push over SSH",
|
|
9
|
+
filename: "id_rsa",
|
|
10
|
+
fields: [
|
|
11
|
+
{ name: "key", label: "Private Key", description: "SSH private key contents", secret: true },
|
|
12
|
+
],
|
|
13
|
+
// No envVars — SSH key is mounted as a file
|
|
14
|
+
async prompt(existing) {
|
|
15
|
+
if (existing?.key) {
|
|
16
|
+
const reuse = await confirm({
|
|
17
|
+
message: `Found existing SSH key in ${CREDENTIALS_DIR}/id_rsa. Use it?`,
|
|
18
|
+
default: true,
|
|
19
|
+
});
|
|
20
|
+
if (reuse)
|
|
21
|
+
return { values: existing };
|
|
22
|
+
}
|
|
23
|
+
const method = await select({
|
|
24
|
+
message: "How would you like to provide your SSH private key?",
|
|
25
|
+
choices: [
|
|
26
|
+
{ name: "Read from file", value: "file" },
|
|
27
|
+
{ name: "Paste key directly", value: "paste" },
|
|
28
|
+
{ name: "Skip (use system SSH config)", value: "skip" },
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
if (method === "skip") {
|
|
32
|
+
console.log("No SSH key configured — git will use your system SSH config.\n");
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
if (method === "file") {
|
|
36
|
+
const defaultPath = resolve(process.env.HOME || "~", ".ssh", "id_rsa");
|
|
37
|
+
const keyPath = await input({
|
|
38
|
+
message: "Path to SSH private key:",
|
|
39
|
+
default: existsSync(defaultPath) ? defaultPath : "",
|
|
40
|
+
validate: (v) => (v.trim().length > 0 ? true : "Path is required"),
|
|
41
|
+
});
|
|
42
|
+
const resolvedPath = resolve(keyPath.trim());
|
|
43
|
+
if (!existsSync(resolvedPath)) {
|
|
44
|
+
throw new Error(`SSH key not found at ${resolvedPath}`);
|
|
45
|
+
}
|
|
46
|
+
const content = readFileSync(resolvedPath, "utf-8");
|
|
47
|
+
console.log("SSH key loaded.\n");
|
|
48
|
+
return { values: { key: content } };
|
|
49
|
+
}
|
|
50
|
+
// paste
|
|
51
|
+
const pasted = await input({
|
|
52
|
+
message: "Paste your SSH private key (entire content, then press Enter):",
|
|
53
|
+
validate: (v) => {
|
|
54
|
+
const trimmed = v.trim();
|
|
55
|
+
if (!trimmed)
|
|
56
|
+
return "Key is required";
|
|
57
|
+
if (!trimmed.includes("PRIVATE KEY"))
|
|
58
|
+
return "Does not look like a private key — expected a PEM-formatted key";
|
|
59
|
+
return true;
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
console.log("SSH key loaded.\n");
|
|
63
|
+
return { values: { key: pasted.trim() } };
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
export default idRsa;
|
|
67
|
+
//# sourceMappingURL=id-rsa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-rsa.js","sourceRoot":"","sources":["../../../src/credentials/builtins/id-rsa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAQzD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAOnE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import githubToken from "./github-token.js";
|
|
2
|
+
import anthropicKey from "./anthropic-key.js";
|
|
3
|
+
import sentryToken from "./sentry-token.js";
|
|
4
|
+
import idRsa from "./id-rsa.js";
|
|
5
|
+
import githubWebhookSecret from "./github-webhook-secret.js";
|
|
6
|
+
import sentryClientSecret from "./sentry-client-secret.js";
|
|
7
|
+
export const builtinCredentials = {
|
|
8
|
+
"github-token": githubToken,
|
|
9
|
+
"anthropic-key": anthropicKey,
|
|
10
|
+
"sentry-token": sentryToken,
|
|
11
|
+
"id_rsa": idRsa,
|
|
12
|
+
"github-webhook-secret": githubWebhookSecret,
|
|
13
|
+
"sentry-client-secret": sentryClientSecret,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/credentials/builtins/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,kBAAkB,MAAM,2BAA2B,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAyC;IACtE,cAAc,EAAE,WAAW;IAC3B,eAAe,EAAE,YAAY;IAC7B,cAAc,EAAE,WAAW;IAC3B,QAAQ,EAAE,KAAK;IACf,uBAAuB,EAAE,mBAAmB;IAC5C,sBAAsB,EAAE,kBAAkB;CAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-client-secret.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/sentry-client-secret.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,QAAA,MAAM,kBAAkB,EAAE,oBASzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const sentryClientSecret = {
|
|
2
|
+
id: "sentry-client-secret",
|
|
3
|
+
label: "Sentry Client Secret",
|
|
4
|
+
description: "Client secret for verifying Sentry webhook payloads",
|
|
5
|
+
filename: "sentry-client-secret",
|
|
6
|
+
fields: [
|
|
7
|
+
{ name: "secret", label: "Client Secret", description: "From your Sentry integration settings", secret: true },
|
|
8
|
+
],
|
|
9
|
+
// No envVars or agentContext — used by the gateway, not injected into agents
|
|
10
|
+
};
|
|
11
|
+
export default sentryClientSecret;
|
|
12
|
+
//# sourceMappingURL=sentry-client-secret.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-client-secret.js","sourceRoot":"","sources":["../../../src/credentials/builtins/sentry-client-secret.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAyB;IAC/C,EAAE,EAAE,sBAAsB;IAC1B,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,qDAAqD;IAClE,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,uCAAuC,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/G;IACD,6EAA6E;CAC9E,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-token.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/sentry-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAA0B,MAAM,cAAc,CAAC;AAMjF,QAAA,MAAM,WAAW,EAAE,oBAuElB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { input, select, checkbox, confirm } from "@inquirer/prompts";
|
|
2
|
+
import { validateSentryToken, validateSentryProjects } from "../../setup/validators.js";
|
|
3
|
+
import { CREDENTIALS_DIR } from "../../shared/paths.js";
|
|
4
|
+
const sentryToken = {
|
|
5
|
+
id: "sentry-token",
|
|
6
|
+
label: "Sentry Auth Token",
|
|
7
|
+
description: "For error monitoring integration",
|
|
8
|
+
helpUrl: "https://sentry.io/settings/auth-tokens/",
|
|
9
|
+
filename: "sentry-token",
|
|
10
|
+
fields: [
|
|
11
|
+
{ name: "token", label: "Auth Token", description: "Sentry auth token", secret: true },
|
|
12
|
+
],
|
|
13
|
+
envVars: { token: "SENTRY_AUTH_TOKEN" },
|
|
14
|
+
agentContext: "`SENTRY_AUTH_TOKEN` — use `curl` for Sentry API requests",
|
|
15
|
+
// Custom prompt: validate → pick org → pick projects → return linked params
|
|
16
|
+
async prompt(existing) {
|
|
17
|
+
let token;
|
|
18
|
+
if (existing?.token) {
|
|
19
|
+
const reuse = await confirm({
|
|
20
|
+
message: `Found existing Sentry token in ${CREDENTIALS_DIR}/sentry-token. Use it?`,
|
|
21
|
+
default: true,
|
|
22
|
+
});
|
|
23
|
+
if (reuse) {
|
|
24
|
+
token = existing.token;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!token) {
|
|
28
|
+
const useSentry = await confirm({
|
|
29
|
+
message: "Configure Sentry integration?",
|
|
30
|
+
default: false,
|
|
31
|
+
});
|
|
32
|
+
if (!useSentry)
|
|
33
|
+
return undefined;
|
|
34
|
+
token = (await input({
|
|
35
|
+
message: "Sentry auth token:",
|
|
36
|
+
validate: (v) => (v.trim().length > 0 ? true : "Token is required"),
|
|
37
|
+
})).trim();
|
|
38
|
+
}
|
|
39
|
+
console.log("Validating Sentry token...");
|
|
40
|
+
const { organizations } = await validateSentryToken(token);
|
|
41
|
+
if (organizations.length === 0)
|
|
42
|
+
throw new Error("No organizations found");
|
|
43
|
+
let sentryOrg;
|
|
44
|
+
if (organizations.length === 1) {
|
|
45
|
+
sentryOrg = organizations[0].slug;
|
|
46
|
+
console.log(`Organization: ${sentryOrg}\n`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
sentryOrg = await select({
|
|
50
|
+
message: "Select Sentry organization:",
|
|
51
|
+
choices: organizations.map((o) => ({ name: `${o.name} (${o.slug})`, value: o.slug })),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
let sentryProjectSlugs = [];
|
|
55
|
+
const { projects } = await validateSentryProjects(token, sentryOrg);
|
|
56
|
+
if (projects.length > 0) {
|
|
57
|
+
sentryProjectSlugs = await checkbox({
|
|
58
|
+
message: "Select Sentry projects to monitor:",
|
|
59
|
+
choices: projects.map((p) => ({ name: p.name, value: p.slug })),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
values: { token },
|
|
64
|
+
params: {
|
|
65
|
+
sentryOrg,
|
|
66
|
+
sentryProjects: sentryProjectSlugs,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
export default sentryToken;
|
|
72
|
+
//# sourceMappingURL=sentry-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-token.js","sourceRoot":"","sources":["../../../src/credentials/builtins/sentry-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CredentialDefinition, CredentialPromptResult } from "./schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generic credential prompting driven by a CredentialDefinition.
|
|
4
|
+
*
|
|
5
|
+
* Flow:
|
|
6
|
+
* 1. If the definition has a custom `prompt()`, delegate to it entirely
|
|
7
|
+
* 2. Otherwise, check if credential exists on disk
|
|
8
|
+
* 3. If exists, ask to reuse
|
|
9
|
+
* 4. If not, show label/description/helpUrl, prompt for each field
|
|
10
|
+
* 5. Run validator if defined
|
|
11
|
+
* 6. Return field values (or undefined if user declined)
|
|
12
|
+
*/
|
|
13
|
+
export declare function promptCredential(def: CredentialDefinition): Promise<CredentialPromptResult | undefined>;
|
|
14
|
+
//# sourceMappingURL=prompter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompter.d.ts","sourceRoot":"","sources":["../../src/credentials/prompter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAgBhF;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CA2C7C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { input, confirm } from "@inquirer/prompts";
|
|
2
|
+
import { loadCredential } from "../shared/credentials.js";
|
|
3
|
+
import { loadStructuredCredential } from "../shared/credentials.js";
|
|
4
|
+
/**
|
|
5
|
+
* Load existing credential values from disk, respecting single vs structured storage.
|
|
6
|
+
*/
|
|
7
|
+
function loadExistingValues(def) {
|
|
8
|
+
if (def.fields.length === 1) {
|
|
9
|
+
const raw = loadCredential(def.filename);
|
|
10
|
+
if (!raw)
|
|
11
|
+
return undefined;
|
|
12
|
+
return { [def.fields[0].name]: raw };
|
|
13
|
+
}
|
|
14
|
+
return loadStructuredCredential(def.filename);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generic credential prompting driven by a CredentialDefinition.
|
|
18
|
+
*
|
|
19
|
+
* Flow:
|
|
20
|
+
* 1. If the definition has a custom `prompt()`, delegate to it entirely
|
|
21
|
+
* 2. Otherwise, check if credential exists on disk
|
|
22
|
+
* 3. If exists, ask to reuse
|
|
23
|
+
* 4. If not, show label/description/helpUrl, prompt for each field
|
|
24
|
+
* 5. Run validator if defined
|
|
25
|
+
* 6. Return field values (or undefined if user declined)
|
|
26
|
+
*/
|
|
27
|
+
export async function promptCredential(def) {
|
|
28
|
+
const existing = loadExistingValues(def);
|
|
29
|
+
// Custom prompt handler — delegates entirely
|
|
30
|
+
if (def.prompt) {
|
|
31
|
+
return def.prompt(existing);
|
|
32
|
+
}
|
|
33
|
+
// Default field-by-field prompting
|
|
34
|
+
if (existing) {
|
|
35
|
+
const reuse = await confirm({
|
|
36
|
+
message: `Found existing ${def.label}. Use it?`,
|
|
37
|
+
default: true,
|
|
38
|
+
});
|
|
39
|
+
if (reuse)
|
|
40
|
+
return { values: existing };
|
|
41
|
+
}
|
|
42
|
+
// Show context
|
|
43
|
+
if (def.helpUrl) {
|
|
44
|
+
console.log(`${def.label}: ${def.description}`);
|
|
45
|
+
console.log(` → ${def.helpUrl}\n`);
|
|
46
|
+
}
|
|
47
|
+
const values = {};
|
|
48
|
+
for (const field of def.fields) {
|
|
49
|
+
const value = await input({
|
|
50
|
+
message: `${field.label}:`,
|
|
51
|
+
// TODO: inquirer doesn't have a native "secret" mode in @inquirer/prompts input;
|
|
52
|
+
// for now we rely on terminal not echoing for password-type prompts.
|
|
53
|
+
// The `secret` field is available for future password-input support.
|
|
54
|
+
validate: (v) => (v.trim().length > 0 ? true : `${field.label} is required`),
|
|
55
|
+
});
|
|
56
|
+
values[field.name] = value.trim();
|
|
57
|
+
}
|
|
58
|
+
// Validate if validator is defined
|
|
59
|
+
if (def.validate) {
|
|
60
|
+
console.log(`Validating ${def.label}...`);
|
|
61
|
+
await def.validate(values);
|
|
62
|
+
}
|
|
63
|
+
return { values };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=prompter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompter.js","sourceRoot":"","sources":["../../src/credentials/prompter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAyB;IACnD,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAyB;IAEzB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEzC,6CAA6C;IAC7C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,mCAAmC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,OAAO,EAAE,kBAAkB,GAAG,CAAC,KAAK,WAAW;YAC/C,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IAED,eAAe;IACf,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;YACxB,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG;YAC1B,iFAAiF;YACjF,qEAAqE;YACrE,qEAAqE;YACrE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,cAAc,CAAC;SAC7E,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,mCAAmC;IACnC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CredentialDefinition } from "./schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a credential definition by ID.
|
|
4
|
+
* Looks up built-in credentials shipped with action-llama.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveCredential(id: string): CredentialDefinition;
|
|
7
|
+
/**
|
|
8
|
+
* Get a built-in credential definition by ID.
|
|
9
|
+
* Returns undefined if not a built-in.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getBuiltinCredential(id: string): CredentialDefinition | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* List all built-in credential IDs.
|
|
14
|
+
*/
|
|
15
|
+
export declare function listBuiltinCredentialIds(): string[];
|
|
16
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/credentials/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,CAMlE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAEjF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { builtinCredentials } from "./builtins/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a credential definition by ID.
|
|
4
|
+
* Looks up built-in credentials shipped with action-llama.
|
|
5
|
+
*/
|
|
6
|
+
export function resolveCredential(id) {
|
|
7
|
+
if (builtinCredentials[id]) {
|
|
8
|
+
return builtinCredentials[id];
|
|
9
|
+
}
|
|
10
|
+
throw new Error(`Unknown credential "${id}".`);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get a built-in credential definition by ID.
|
|
14
|
+
* Returns undefined if not a built-in.
|
|
15
|
+
*/
|
|
16
|
+
export function getBuiltinCredential(id) {
|
|
17
|
+
return builtinCredentials[id];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* List all built-in credential IDs.
|
|
21
|
+
*/
|
|
22
|
+
export function listBuiltinCredentialIds() {
|
|
23
|
+
return Object.keys(builtinCredentials);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/credentials/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface CredentialField {
|
|
2
|
+
name: string;
|
|
3
|
+
label: string;
|
|
4
|
+
description: string;
|
|
5
|
+
secret: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface CredentialPromptResult {
|
|
8
|
+
values: Record<string, string>;
|
|
9
|
+
params?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface CredentialDefinition {
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
description: string;
|
|
15
|
+
helpUrl?: string;
|
|
16
|
+
filename: string;
|
|
17
|
+
fields: CredentialField[];
|
|
18
|
+
envVars?: Record<string, string>;
|
|
19
|
+
agentContext?: string;
|
|
20
|
+
validate?: (values: Record<string, string>) => Promise<boolean>;
|
|
21
|
+
prompt?: (existing?: Record<string, string>) => Promise<CredentialPromptResult | undefined>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/credentials/schema.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAK1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAKjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAKhE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;CAC7F"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// --- Credential definition schema ---
|
|
2
|
+
// Each credential is defined as a code object implementing this interface.
|
|
3
|
+
// Built-in credentials ship with action-llama; custom credentials can be
|
|
4
|
+
// defined inline in agent definitions or as standalone modules.
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/credentials/schema.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,2EAA2E;AAC3E,yEAAyE;AACzE,gEAAgE"}
|