@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.
Files changed (126) hide show
  1. package/README.md +63 -59
  2. package/dist/agents/container-entry.js +36 -9
  3. package/dist/agents/container-entry.js.map +1 -1
  4. package/dist/agents/prompt.d.ts.map +1 -1
  5. package/dist/agents/prompt.js +17 -6
  6. package/dist/agents/prompt.js.map +1 -1
  7. package/dist/cli/commands/new.d.ts.map +1 -1
  8. package/dist/cli/commands/new.js +5 -25
  9. package/dist/cli/commands/new.js.map +1 -1
  10. package/dist/cli/commands/{agent/add.d.ts → setup.d.ts} +1 -2
  11. package/dist/cli/commands/setup.d.ts.map +1 -0
  12. package/dist/cli/commands/setup.js +60 -0
  13. package/dist/cli/commands/setup.js.map +1 -0
  14. package/dist/cli/commands/start.d.ts.map +1 -1
  15. package/dist/cli/commands/start.js +3 -0
  16. package/dist/cli/commands/start.js.map +1 -1
  17. package/dist/cli/commands/status.d.ts.map +1 -1
  18. package/dist/cli/commands/status.js +1 -37
  19. package/dist/cli/commands/status.js.map +1 -1
  20. package/dist/cli/main.js +6 -9
  21. package/dist/cli/main.js.map +1 -1
  22. package/dist/credentials/builtins/anthropic-key.d.ts +4 -0
  23. package/dist/credentials/builtins/anthropic-key.d.ts.map +1 -0
  24. package/dist/credentials/builtins/anthropic-key.js +69 -0
  25. package/dist/credentials/builtins/anthropic-key.js.map +1 -0
  26. package/dist/credentials/builtins/github-token.d.ts +4 -0
  27. package/dist/credentials/builtins/github-token.d.ts.map +1 -0
  28. package/dist/credentials/builtins/github-token.js +19 -0
  29. package/dist/credentials/builtins/github-token.js.map +1 -0
  30. package/dist/credentials/builtins/github-webhook-secret.d.ts +4 -0
  31. package/dist/credentials/builtins/github-webhook-secret.d.ts.map +1 -0
  32. package/dist/credentials/builtins/github-webhook-secret.js +12 -0
  33. package/dist/credentials/builtins/github-webhook-secret.js.map +1 -0
  34. package/dist/credentials/builtins/id-rsa.d.ts +4 -0
  35. package/dist/credentials/builtins/id-rsa.d.ts.map +1 -0
  36. package/dist/credentials/builtins/id-rsa.js +67 -0
  37. package/dist/credentials/builtins/id-rsa.js.map +1 -0
  38. package/dist/credentials/builtins/index.d.ts +3 -0
  39. package/dist/credentials/builtins/index.d.ts.map +1 -0
  40. package/dist/credentials/builtins/index.js +15 -0
  41. package/dist/credentials/builtins/index.js.map +1 -0
  42. package/dist/credentials/builtins/sentry-client-secret.d.ts +4 -0
  43. package/dist/credentials/builtins/sentry-client-secret.d.ts.map +1 -0
  44. package/dist/credentials/builtins/sentry-client-secret.js +12 -0
  45. package/dist/credentials/builtins/sentry-client-secret.js.map +1 -0
  46. package/dist/credentials/builtins/sentry-token.d.ts +4 -0
  47. package/dist/credentials/builtins/sentry-token.d.ts.map +1 -0
  48. package/dist/credentials/builtins/sentry-token.js +72 -0
  49. package/dist/credentials/builtins/sentry-token.js.map +1 -0
  50. package/dist/credentials/prompter.d.ts +14 -0
  51. package/dist/credentials/prompter.d.ts.map +1 -0
  52. package/dist/credentials/prompter.js +65 -0
  53. package/dist/credentials/prompter.js.map +1 -0
  54. package/dist/credentials/registry.d.ts +16 -0
  55. package/dist/credentials/registry.d.ts.map +1 -0
  56. package/dist/credentials/registry.js +25 -0
  57. package/dist/credentials/registry.js.map +1 -0
  58. package/dist/credentials/schema.d.ts +23 -0
  59. package/dist/credentials/schema.d.ts.map +1 -0
  60. package/dist/credentials/schema.js +6 -0
  61. package/dist/credentials/schema.js.map +1 -0
  62. package/dist/scheduler/index.d.ts.map +1 -1
  63. package/dist/scheduler/index.js +14 -4
  64. package/dist/scheduler/index.js.map +1 -1
  65. package/dist/setup/prompts.d.ts +1 -43
  66. package/dist/setup/prompts.d.ts.map +1 -1
  67. package/dist/setup/prompts.js +43 -605
  68. package/dist/setup/prompts.js.map +1 -1
  69. package/dist/setup/scaffold.d.ts +1 -2
  70. package/dist/setup/scaffold.d.ts.map +1 -1
  71. package/dist/setup/scaffold.js +62 -29
  72. package/dist/setup/scaffold.js.map +1 -1
  73. package/dist/shared/config.d.ts +1 -2
  74. package/dist/shared/config.d.ts.map +1 -1
  75. package/dist/shared/config.js +16 -6
  76. package/dist/shared/config.js.map +1 -1
  77. package/dist/shared/credentials.d.ts +2 -0
  78. package/dist/shared/credentials.d.ts.map +1 -1
  79. package/dist/shared/credentials.js +17 -0
  80. package/dist/shared/credentials.js.map +1 -1
  81. package/dist/shared/paths.d.ts +0 -1
  82. package/dist/shared/paths.d.ts.map +1 -1
  83. package/dist/shared/paths.js +0 -3
  84. package/dist/shared/paths.js.map +1 -1
  85. package/dist/webhooks/definitions/github.d.ts +3 -0
  86. package/dist/webhooks/definitions/github.d.ts.map +1 -0
  87. package/dist/webhooks/definitions/github.js +38 -0
  88. package/dist/webhooks/definitions/github.js.map +1 -0
  89. package/dist/webhooks/definitions/registry.d.ts +4 -0
  90. package/dist/webhooks/definitions/registry.d.ts.map +1 -0
  91. package/dist/webhooks/definitions/registry.js +14 -0
  92. package/dist/webhooks/definitions/registry.js.map +1 -0
  93. package/dist/webhooks/definitions/schema.d.ts +19 -0
  94. package/dist/webhooks/definitions/schema.d.ts.map +1 -0
  95. package/dist/webhooks/definitions/schema.js +2 -0
  96. package/dist/webhooks/definitions/schema.js.map +1 -0
  97. package/dist/webhooks/definitions/sentry.d.ts +3 -0
  98. package/dist/webhooks/definitions/sentry.d.ts.map +1 -0
  99. package/dist/webhooks/definitions/sentry.js +22 -0
  100. package/dist/webhooks/definitions/sentry.js.map +1 -0
  101. package/dist/webhooks/providers/sentry.d.ts +9 -0
  102. package/dist/webhooks/providers/sentry.d.ts.map +1 -0
  103. package/dist/webhooks/providers/sentry.js +108 -0
  104. package/dist/webhooks/providers/sentry.js.map +1 -0
  105. package/dist/webhooks/registry.js +2 -2
  106. package/dist/webhooks/registry.js.map +1 -1
  107. package/dist/webhooks/types.d.ts +5 -1
  108. package/dist/webhooks/types.d.ts.map +1 -1
  109. package/package.json +4 -3
  110. package/dist/agents/definitions/dev/AGENTS.md +0 -44
  111. package/dist/agents/definitions/dev/config-definition.json +0 -39
  112. package/dist/agents/definitions/devops/AGENTS.md +0 -33
  113. package/dist/agents/definitions/devops/config-definition.json +0 -37
  114. package/dist/agents/definitions/loader.d.ts +0 -18
  115. package/dist/agents/definitions/loader.d.ts.map +0 -1
  116. package/dist/agents/definitions/loader.js +0 -59
  117. package/dist/agents/definitions/loader.js.map +0 -1
  118. package/dist/agents/definitions/reviewer/AGENTS.md +0 -37
  119. package/dist/agents/definitions/reviewer/config-definition.json +0 -24
  120. package/dist/agents/definitions/schema.d.ts +0 -38
  121. package/dist/agents/definitions/schema.d.ts.map +0 -1
  122. package/dist/agents/definitions/schema.js +0 -97
  123. package/dist/agents/definitions/schema.js.map +0 -1
  124. package/dist/cli/commands/agent/add.d.ts.map +0 -1
  125. package/dist/cli/commands/agent/add.js +0 -86
  126. 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":"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"}
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
- // --- Agent management commands ---
52
- const agent = program.command("agent").description("Agent management commands");
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 (definition, opts) => {
59
- const { execute } = await import("./commands/agent/add.js");
60
- await execute({ ...opts, definition });
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 };
@@ -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,oCAAoC;AAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAEhF,KAAK;KACF,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,wCAAwC,CAAC;KACrD,QAAQ,CAAC,cAAc,EAAE,uEAAuE,CAAC;KACjG,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,IAAI,EAAE,EAAE;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC5D,MAAM,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,GAAG,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC3C,IAAI,GAAG,CAAC,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ declare const anthropicKey: CredentialDefinition;
3
+ export default anthropicKey;
4
+ //# sourceMappingURL=anthropic-key.d.ts.map
@@ -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,4 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ declare const githubToken: CredentialDefinition;
3
+ export default githubToken;
4
+ //# sourceMappingURL=github-token.d.ts.map
@@ -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,4 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ declare const githubWebhookSecret: CredentialDefinition;
3
+ export default githubWebhookSecret;
4
+ //# sourceMappingURL=github-webhook-secret.d.ts.map
@@ -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,4 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ declare const idRsa: CredentialDefinition;
3
+ export default idRsa;
4
+ //# sourceMappingURL=id-rsa.d.ts.map
@@ -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,3 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ export declare const builtinCredentials: Record<string, CredentialDefinition>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ declare const sentryClientSecret: CredentialDefinition;
3
+ export default sentryClientSecret;
4
+ //# sourceMappingURL=sentry-client-secret.d.ts.map
@@ -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,4 @@
1
+ import type { CredentialDefinition } from "../schema.js";
2
+ declare const sentryToken: CredentialDefinition;
3
+ export default sentryToken;
4
+ //# sourceMappingURL=sentry-token.d.ts.map
@@ -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"}