@action-llama/action-llama 0.3.0 → 0.4.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/LICENSE +21 -0
- package/README.md +43 -102
- package/dist/agents/container-entry.js +123 -17
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +10 -4
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +83 -105
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/prompt.d.ts +2 -0
- package/dist/agents/prompt.d.ts.map +1 -1
- package/dist/agents/prompt.js +12 -4
- package/dist/agents/prompt.js.map +1 -1
- package/dist/agents/runner.d.ts +10 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +60 -8
- package/dist/agents/runner.js.map +1 -1
- package/dist/cli/commands/{setup.d.ts → cloud-setup.d.ts} +1 -1
- package/dist/cli/commands/cloud-setup.d.ts.map +1 -0
- package/dist/cli/commands/cloud-setup.js +565 -0
- package/dist/cli/commands/cloud-setup.js.map +1 -0
- package/dist/cli/commands/cloud-teardown.d.ts +6 -0
- package/dist/cli/commands/cloud-teardown.d.ts.map +1 -0
- package/dist/cli/commands/cloud-teardown.js +152 -0
- package/dist/cli/commands/cloud-teardown.js.map +1 -0
- package/dist/cli/commands/console.d.ts.map +1 -1
- package/dist/cli/commands/console.js +108 -8
- package/dist/cli/commands/console.js.map +1 -1
- package/dist/cli/commands/creds.d.ts +2 -0
- package/dist/cli/commands/creds.d.ts.map +1 -0
- package/dist/cli/commands/creds.js +62 -0
- package/dist/cli/commands/creds.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +7 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +405 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +1 -0
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +67 -0
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +9 -2
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/run.d.ts +6 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +121 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +52 -16
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +39 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/main.js +58 -16
- package/dist/cli/main.js.map +1 -1
- package/dist/credentials/builtins/aws.d.ts +4 -0
- package/dist/credentials/builtins/aws.d.ts.map +1 -0
- package/dist/credentials/builtins/aws.js +33 -0
- package/dist/credentials/builtins/aws.js.map +1 -0
- package/dist/credentials/builtins/bugsnag-token.d.ts +4 -0
- package/dist/credentials/builtins/bugsnag-token.d.ts.map +1 -0
- package/dist/credentials/builtins/bugsnag-token.js +18 -0
- package/dist/credentials/builtins/bugsnag-token.js.map +1 -0
- package/dist/credentials/builtins/github-webhook-secret.d.ts.map +1 -1
- package/dist/credentials/builtins/github-webhook-secret.js +2 -1
- package/dist/credentials/builtins/github-webhook-secret.js.map +1 -1
- package/dist/credentials/builtins/index.d.ts.map +1 -1
- package/dist/credentials/builtins/index.js +10 -0
- package/dist/credentials/builtins/index.js.map +1 -1
- package/dist/credentials/builtins/netlify-token.d.ts +4 -0
- package/dist/credentials/builtins/netlify-token.d.ts.map +1 -0
- package/dist/credentials/builtins/netlify-token.js +18 -0
- package/dist/credentials/builtins/netlify-token.js.map +1 -0
- package/dist/credentials/builtins/openai-key.d.ts +4 -0
- package/dist/credentials/builtins/openai-key.d.ts.map +1 -0
- package/dist/credentials/builtins/openai-key.js +38 -0
- package/dist/credentials/builtins/openai-key.js.map +1 -0
- package/dist/credentials/builtins/x-twitter-api.d.ts +4 -0
- package/dist/credentials/builtins/x-twitter-api.d.ts.map +1 -0
- package/dist/credentials/builtins/x-twitter-api.js +28 -0
- package/dist/credentials/builtins/x-twitter-api.js.map +1 -0
- package/dist/credentials/prompter.d.ts.map +1 -1
- package/dist/credentials/prompter.js +8 -5
- package/dist/credentials/prompter.js.map +1 -1
- package/dist/docker/cloud-run-runtime.d.ts +61 -0
- package/dist/docker/cloud-run-runtime.d.ts.map +1 -0
- package/dist/docker/cloud-run-runtime.js +510 -0
- package/dist/docker/cloud-run-runtime.js.map +1 -0
- package/dist/docker/ecs-runtime.d.ts +73 -0
- package/dist/docker/ecs-runtime.d.ts.map +1 -0
- package/dist/docker/ecs-runtime.js +596 -0
- package/dist/docker/ecs-runtime.js.map +1 -0
- package/dist/docker/image.d.ts.map +1 -1
- package/dist/docker/image.js +3 -2
- package/dist/docker/image.js.map +1 -1
- package/dist/docker/local-runtime.d.ts +19 -0
- package/dist/docker/local-runtime.d.ts.map +1 -0
- package/dist/docker/local-runtime.js +209 -0
- package/dist/docker/local-runtime.js.map +1 -0
- package/dist/docker/network.d.ts +1 -1
- package/dist/docker/network.d.ts.map +1 -1
- package/dist/docker/network.js +2 -1
- package/dist/docker/network.js.map +1 -1
- package/dist/docker/runtime.d.ts +90 -0
- package/dist/docker/runtime.d.ts.map +1 -0
- package/dist/docker/runtime.js +2 -0
- package/dist/docker/runtime.js.map +1 -0
- package/dist/gateway/index.d.ts +8 -2
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +16 -8
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/routes/credentials.d.ts +5 -0
- package/dist/gateway/routes/credentials.d.ts.map +1 -0
- package/dist/gateway/routes/credentials.js +17 -0
- package/dist/gateway/routes/credentials.js.map +1 -0
- package/dist/gateway/routes/logs.d.ts +5 -0
- package/dist/gateway/routes/logs.d.ts.map +1 -0
- package/dist/gateway/routes/logs.js +31 -0
- package/dist/gateway/routes/logs.js.map +1 -0
- package/dist/gateway/routes/shutdown.d.ts +2 -1
- package/dist/gateway/routes/shutdown.d.ts.map +1 -1
- package/dist/gateway/routes/shutdown.js +7 -16
- package/dist/gateway/routes/shutdown.js.map +1 -1
- package/dist/gateway/routes/webhooks.d.ts +2 -1
- package/dist/gateway/routes/webhooks.d.ts.map +1 -1
- package/dist/gateway/routes/webhooks.js +11 -4
- package/dist/gateway/routes/webhooks.js.map +1 -1
- package/dist/gateway/types.d.ts +6 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/scheduler/index.d.ts +3 -2
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +286 -67
- package/dist/scheduler/index.js.map +1 -1
- package/dist/setup/scaffold.d.ts.map +1 -1
- package/dist/setup/scaffold.js +110 -50
- package/dist/setup/scaffold.js.map +1 -1
- package/dist/setup/validators.d.ts +14 -0
- package/dist/setup/validators.d.ts.map +1 -1
- package/dist/setup/validators.js +53 -0
- package/dist/setup/validators.js.map +1 -1
- package/dist/shared/asm-backend.d.ts +25 -0
- package/dist/shared/asm-backend.d.ts.map +1 -0
- package/dist/shared/asm-backend.js +107 -0
- package/dist/shared/asm-backend.js.map +1 -0
- package/dist/shared/aws-constants.d.ts +55 -0
- package/dist/shared/aws-constants.d.ts.map +1 -0
- package/dist/shared/aws-constants.js +55 -0
- package/dist/shared/aws-constants.js.map +1 -0
- package/dist/shared/config.d.ts +25 -5
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +15 -22
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/credential-backend.d.ts +28 -0
- package/dist/shared/credential-backend.d.ts.map +1 -0
- package/dist/shared/credential-backend.js +2 -0
- package/dist/shared/credential-backend.js.map +1 -0
- package/dist/shared/credentials.d.ts +42 -4
- package/dist/shared/credentials.d.ts.map +1 -1
- package/dist/shared/credentials.js +83 -6
- package/dist/shared/credentials.js.map +1 -1
- package/dist/shared/filesystem-backend.d.ts +18 -0
- package/dist/shared/filesystem-backend.d.ts.map +1 -0
- package/dist/shared/filesystem-backend.js +86 -0
- package/dist/shared/filesystem-backend.js.map +1 -0
- package/dist/shared/gsm-backend.d.ts +35 -0
- package/dist/shared/gsm-backend.d.ts.map +1 -0
- package/dist/shared/gsm-backend.js +208 -0
- package/dist/shared/gsm-backend.js.map +1 -0
- package/dist/shared/remote.d.ts +11 -0
- package/dist/shared/remote.d.ts.map +1 -0
- package/dist/shared/remote.js +29 -0
- package/dist/shared/remote.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +13 -4
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/plain-logger.d.ts +5 -0
- package/dist/tui/plain-logger.d.ts.map +1 -0
- package/dist/tui/plain-logger.js +80 -0
- package/dist/tui/plain-logger.js.map +1 -0
- package/dist/tui/status-tracker.d.ts +3 -2
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js.map +1 -1
- package/dist/webhooks/definitions/github.js +1 -1
- package/dist/webhooks/definitions/github.js.map +1 -1
- package/dist/webhooks/definitions/sentry.js +1 -1
- package/dist/webhooks/definitions/sentry.js.map +1 -1
- package/dist/webhooks/providers/github.d.ts +1 -1
- package/dist/webhooks/providers/github.d.ts.map +1 -1
- package/dist/webhooks/providers/github.js +13 -9
- package/dist/webhooks/providers/github.js.map +1 -1
- package/dist/webhooks/providers/sentry.d.ts +1 -1
- package/dist/webhooks/providers/sentry.d.ts.map +1 -1
- package/dist/webhooks/providers/sentry.js +12 -9
- package/dist/webhooks/providers/sentry.js.map +1 -1
- package/dist/webhooks/registry.d.ts +1 -1
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/registry.js +20 -13
- package/dist/webhooks/registry.js.map +1 -1
- package/dist/webhooks/types.d.ts +16 -6
- package/dist/webhooks/types.d.ts.map +1 -1
- package/docker/Dockerfile +4 -1
- package/package.json +10 -1
- package/dist/cli/commands/setup.d.ts.map +0 -1
- package/dist/cli/commands/setup.js +0 -50
- package/dist/cli/commands/setup.js.map +0 -1
- package/dist/docker/container.d.ts +0 -19
- package/dist/docker/container.d.ts.map +0 -1
- package/dist/docker/container.js +0 -73
- package/dist/docker/container.js.map +0 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { resolve } from "path";
|
|
2
|
+
import { existsSync, mkdirSync } from "fs";
|
|
3
|
+
import { loadGlobalConfig, loadAgentConfig, discoverAgents } from "../../shared/config.js";
|
|
4
|
+
import { backendRequireCredentialRef } from "../../shared/credentials.js";
|
|
5
|
+
import { createLogger } from "../../shared/logger.js";
|
|
6
|
+
import { agentDir } from "../../shared/paths.js";
|
|
7
|
+
import { AgentRunner } from "../../agents/runner.js";
|
|
8
|
+
import { AWS_CONSTANTS } from "../../shared/aws-constants.js";
|
|
9
|
+
import { buildManualPrompt } from "../../agents/prompt.js";
|
|
10
|
+
import { execute as runDoctor } from "./doctor.js";
|
|
11
|
+
export async function execute(agent, opts) {
|
|
12
|
+
const projectPath = resolve(opts.project);
|
|
13
|
+
// Guard: refuse to run if the project path looks like an agent directory
|
|
14
|
+
if (existsSync(resolve(projectPath, "agent-config.toml")) || existsSync(resolve(projectPath, "PLAYBOOK.md"))) {
|
|
15
|
+
throw new Error(`"${projectPath}" looks like an agent directory, not a project directory. ` +
|
|
16
|
+
`Run 'al run' from the project root (the parent directory).`);
|
|
17
|
+
}
|
|
18
|
+
// Check agent exists
|
|
19
|
+
const agentNames = discoverAgents(projectPath);
|
|
20
|
+
if (!agentNames.includes(agent)) {
|
|
21
|
+
const available = agentNames.length > 0 ? `Available agents: ${agentNames.join(", ")}` : "No agents found.";
|
|
22
|
+
throw new Error(`Agent "${agent}" not found. ${available}`);
|
|
23
|
+
}
|
|
24
|
+
// Ensure credentials are present
|
|
25
|
+
await runDoctor({ project: opts.project });
|
|
26
|
+
const globalConfig = loadGlobalConfig(projectPath);
|
|
27
|
+
const agentConfig = loadAgentConfig(projectPath, agent);
|
|
28
|
+
// Validate credentials
|
|
29
|
+
for (const credRef of agentConfig.credentials) {
|
|
30
|
+
await backendRequireCredentialRef(credRef);
|
|
31
|
+
}
|
|
32
|
+
const dockerEnabled = !opts.noDocker && (globalConfig.local?.enabled ?? true);
|
|
33
|
+
const cloudMode = opts.cloud === true;
|
|
34
|
+
const logger = createLogger(projectPath, agent);
|
|
35
|
+
if (cloudMode) {
|
|
36
|
+
// Cloud mode: use cloud runtime
|
|
37
|
+
const cloud = globalConfig.cloud;
|
|
38
|
+
if (!cloud) {
|
|
39
|
+
throw new Error("No [cloud] section found in config.toml. Run 'al cloud setup' first.");
|
|
40
|
+
}
|
|
41
|
+
const { setDefaultBackend } = await import("../../shared/credentials.js");
|
|
42
|
+
const { createBackendFromCloudConfig } = await import("../../shared/remote.js");
|
|
43
|
+
const backend = await createBackendFromCloudConfig(cloud);
|
|
44
|
+
setDefaultBackend(backend);
|
|
45
|
+
let runtime;
|
|
46
|
+
if (cloud.provider === "cloud-run") {
|
|
47
|
+
const { CloudRunJobRuntime } = await import("../../docker/cloud-run-runtime.js");
|
|
48
|
+
const { gcpProject, region, artifactRegistry, serviceAccount, secretPrefix } = cloud;
|
|
49
|
+
if (!gcpProject || !region || !artifactRegistry || !serviceAccount) {
|
|
50
|
+
throw new Error("Cloud Run requires cloud.gcpProject, cloud.region, " +
|
|
51
|
+
"cloud.artifactRegistry, and cloud.serviceAccount in config.toml");
|
|
52
|
+
}
|
|
53
|
+
runtime = new CloudRunJobRuntime({ gcpProject, region, artifactRegistry, serviceAccount, secretPrefix });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const { ECSFargateRuntime } = await import("../../docker/ecs-runtime.js");
|
|
57
|
+
if (!cloud.awsRegion || !cloud.ecsCluster || !cloud.ecrRepository || !cloud.executionRoleArn || !cloud.taskRoleArn || !cloud.subnets?.length) {
|
|
58
|
+
throw new Error("ECS requires cloud.awsRegion, cloud.ecsCluster, cloud.ecrRepository, " +
|
|
59
|
+
"cloud.executionRoleArn, cloud.taskRoleArn, and cloud.subnets in config.toml");
|
|
60
|
+
}
|
|
61
|
+
runtime = new ECSFargateRuntime({
|
|
62
|
+
awsRegion: cloud.awsRegion,
|
|
63
|
+
ecsCluster: cloud.ecsCluster,
|
|
64
|
+
ecrRepository: cloud.ecrRepository,
|
|
65
|
+
executionRoleArn: cloud.executionRoleArn,
|
|
66
|
+
taskRoleArn: cloud.taskRoleArn,
|
|
67
|
+
subnets: cloud.subnets,
|
|
68
|
+
securityGroups: cloud.securityGroups,
|
|
69
|
+
secretPrefix: cloud.awsSecretPrefix,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const { ContainerAgentRunner } = await import("../../agents/container-runner.js");
|
|
73
|
+
const baseImage = globalConfig.local?.image || AWS_CONSTANTS.DEFAULT_IMAGE;
|
|
74
|
+
const image = await runtime.buildImage({ tag: baseImage, dockerfile: "docker/Dockerfile", contextDir: resolve(import.meta.dirname || ".", "../..") });
|
|
75
|
+
const runner = new ContainerAgentRunner(runtime, globalConfig, agentConfig, logger, () => { }, () => { }, "", projectPath, image);
|
|
76
|
+
const prompt = buildManualPrompt(agentConfig);
|
|
77
|
+
console.log(`Running agent "${agent}" in cloud (${cloud.provider})...`);
|
|
78
|
+
await runner.run(prompt);
|
|
79
|
+
}
|
|
80
|
+
else if (dockerEnabled) {
|
|
81
|
+
// Docker mode: validate and run in container
|
|
82
|
+
if (agentConfig.model.authType === "pi_auth") {
|
|
83
|
+
throw new Error(`Agent "${agent}" uses pi_auth which is not supported in Docker mode. ` +
|
|
84
|
+
`Either switch to api_key/oauth_token (run 'al doctor') or use --no-docker.`);
|
|
85
|
+
}
|
|
86
|
+
const { execFileSync } = await import("child_process");
|
|
87
|
+
try {
|
|
88
|
+
execFileSync("docker", ["info"], { stdio: "pipe", timeout: 10000 });
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
throw new Error("Docker is not running. Start Docker Desktop (or the Docker daemon) and try again, " +
|
|
92
|
+
"or use --no-docker to run without container isolation.");
|
|
93
|
+
}
|
|
94
|
+
const { LocalDockerRuntime } = await import("../../docker/local-runtime.js");
|
|
95
|
+
const { ensureNetwork } = await import("../../docker/network.js");
|
|
96
|
+
const { ensureImage, ensureAgentImage } = await import("../../docker/image.js");
|
|
97
|
+
const { ContainerAgentRunner } = await import("../../agents/container-runner.js");
|
|
98
|
+
const runtime = new LocalDockerRuntime();
|
|
99
|
+
ensureNetwork();
|
|
100
|
+
const baseImage = globalConfig.local?.image || AWS_CONSTANTS.DEFAULT_IMAGE;
|
|
101
|
+
ensureImage(baseImage);
|
|
102
|
+
const image = ensureAgentImage(agent, projectPath, baseImage);
|
|
103
|
+
const runner = new ContainerAgentRunner(runtime, globalConfig, agentConfig, logger, () => { }, // no gateway to register with
|
|
104
|
+
() => { }, // no gateway to unregister from
|
|
105
|
+
"", // no gateway URL
|
|
106
|
+
projectPath, image);
|
|
107
|
+
const prompt = buildManualPrompt(agentConfig);
|
|
108
|
+
console.log(`Running agent "${agent}" in Docker...`);
|
|
109
|
+
await runner.run(prompt);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Host mode
|
|
113
|
+
mkdirSync(agentDir(projectPath, agent), { recursive: true });
|
|
114
|
+
const runner = new AgentRunner(agentConfig, logger, projectPath);
|
|
115
|
+
const prompt = buildManualPrompt(agentConfig);
|
|
116
|
+
console.log(`Running agent "${agent}"...`);
|
|
117
|
+
await runner.run(prompt);
|
|
118
|
+
}
|
|
119
|
+
console.log(`Agent "${agent}" run completed.`);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAOA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF1H"}
|
|
@@ -1,42 +1,78 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
|
+
import { existsSync } from "fs";
|
|
2
3
|
import { loadGlobalConfig } from "../../shared/config.js";
|
|
3
4
|
import { startScheduler } from "../../scheduler/index.js";
|
|
4
5
|
import { StatusTracker } from "../../tui/status-tracker.js";
|
|
5
|
-
import { execute as
|
|
6
|
+
import { execute as runDoctor } from "./doctor.js";
|
|
6
7
|
export async function execute(opts) {
|
|
7
8
|
const projectPath = resolve(opts.project);
|
|
9
|
+
// Guard: refuse to run if the project path looks like an agent directory
|
|
10
|
+
if (existsSync(resolve(projectPath, "agent-config.toml")) || existsSync(resolve(projectPath, "PLAYBOOK.md"))) {
|
|
11
|
+
throw new Error(`"${projectPath}" looks like an agent directory, not a project directory. ` +
|
|
12
|
+
`Run 'al start' from the project root (the parent directory).`);
|
|
13
|
+
}
|
|
8
14
|
// Ensure all credentials are present before starting
|
|
9
|
-
await
|
|
15
|
+
await runDoctor({ project: opts.project, cloud: opts.cloud });
|
|
10
16
|
const globalConfig = loadGlobalConfig(projectPath);
|
|
11
|
-
// Docker is on by default; --
|
|
12
|
-
if (opts.
|
|
13
|
-
if (!globalConfig.
|
|
14
|
-
globalConfig.
|
|
17
|
+
// Docker is on by default; --no-docker disables it
|
|
18
|
+
if (opts.noDocker) {
|
|
19
|
+
if (!globalConfig.local)
|
|
20
|
+
globalConfig.local = { enabled: false };
|
|
15
21
|
else
|
|
16
|
-
globalConfig.
|
|
22
|
+
globalConfig.local.enabled = false;
|
|
23
|
+
}
|
|
24
|
+
else if (!globalConfig.local) {
|
|
25
|
+
globalConfig.local = { enabled: true };
|
|
17
26
|
}
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
// Cloud mode: set up cloud backend
|
|
28
|
+
if (opts.cloud) {
|
|
29
|
+
if (!globalConfig.cloud) {
|
|
30
|
+
throw new Error("No [cloud] section found in config.toml. Run 'al cloud setup' first.");
|
|
31
|
+
}
|
|
32
|
+
const { setDefaultBackend } = await import("../../shared/credentials.js");
|
|
33
|
+
const { createBackendFromCloudConfig } = await import("../../shared/remote.js");
|
|
34
|
+
const backend = await createBackendFromCloudConfig(globalConfig.cloud);
|
|
35
|
+
setDefaultBackend(backend);
|
|
20
36
|
}
|
|
21
|
-
const dockerEnabled = globalConfig.
|
|
37
|
+
const dockerEnabled = globalConfig.local?.enabled === true;
|
|
22
38
|
const mode = dockerEnabled ? "docker" : "host";
|
|
23
39
|
const statusTracker = new StatusTracker();
|
|
24
|
-
|
|
40
|
+
// Render TUI early so build progress is visible
|
|
41
|
+
statusTracker.setSchedulerInfo({
|
|
42
|
+
mode,
|
|
43
|
+
runtime: dockerEnabled ? (opts.cloud ? globalConfig.cloud?.provider : "local") : undefined,
|
|
44
|
+
gatewayPort: null,
|
|
45
|
+
cronJobCount: 0,
|
|
46
|
+
webhooksActive: false,
|
|
47
|
+
webhookUrls: [],
|
|
48
|
+
startedAt: new Date(),
|
|
49
|
+
});
|
|
50
|
+
let cleanup;
|
|
51
|
+
if (opts.tui === false) {
|
|
52
|
+
const { attachPlainLogger } = await import("../../tui/plain-logger.js");
|
|
53
|
+
const { detach } = attachPlainLogger(statusTracker);
|
|
54
|
+
cleanup = detach;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const { renderTUI } = await import("../../tui/render.js");
|
|
58
|
+
const { unmount } = await renderTUI(statusTracker);
|
|
59
|
+
cleanup = unmount;
|
|
60
|
+
}
|
|
61
|
+
const { cronJobs, gateway, webhookRegistry, webhookUrls } = await startScheduler(projectPath, globalConfig, statusTracker, opts.cloud);
|
|
25
62
|
const gatewayPort = gateway ? (globalConfig.gateway?.port || 8080) : null;
|
|
63
|
+
// Update scheduler info now that startup is complete
|
|
26
64
|
statusTracker.setSchedulerInfo({
|
|
27
65
|
mode,
|
|
66
|
+
runtime: dockerEnabled ? (opts.cloud ? globalConfig.cloud?.provider : "local") : undefined,
|
|
28
67
|
gatewayPort,
|
|
29
68
|
cronJobCount: cronJobs.length,
|
|
30
69
|
webhooksActive: !!webhookRegistry,
|
|
31
70
|
webhookUrls: webhookUrls || [],
|
|
32
71
|
startedAt: new Date(),
|
|
33
72
|
});
|
|
34
|
-
//
|
|
35
|
-
const { renderTUI } = await import("../../tui/render.js");
|
|
36
|
-
const { unmount } = await renderTUI(statusTracker);
|
|
37
|
-
// Coordinate SIGINT: unmount Ink, then exit
|
|
73
|
+
// Coordinate SIGINT: cleanup, then exit
|
|
38
74
|
const shutdown = () => {
|
|
39
|
-
|
|
75
|
+
cleanup();
|
|
40
76
|
process.exit(0);
|
|
41
77
|
};
|
|
42
78
|
process.on("SIGINT", shutdown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DvF"}
|
|
@@ -1,13 +1,50 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
|
-
import { discoverAgents, loadAgentConfig } from "../../shared/config.js";
|
|
2
|
+
import { discoverAgents, loadAgentConfig, loadGlobalConfig } from "../../shared/config.js";
|
|
3
3
|
export async function execute(opts) {
|
|
4
4
|
const projectPath = resolve(opts.project);
|
|
5
|
+
if (opts.cloud) {
|
|
6
|
+
const globalConfig = loadGlobalConfig(projectPath);
|
|
7
|
+
const cloud = globalConfig.cloud;
|
|
8
|
+
if (!cloud) {
|
|
9
|
+
throw new Error("No [cloud] section found in config.toml. Run 'al cloud setup' first.");
|
|
10
|
+
}
|
|
11
|
+
let agents;
|
|
12
|
+
if (cloud.provider === "cloud-run") {
|
|
13
|
+
const { CloudRunJobRuntime } = await import("../../docker/cloud-run-runtime.js");
|
|
14
|
+
const runtime = new CloudRunJobRuntime(cloud);
|
|
15
|
+
console.log(`Cloud Run Jobs status (project: ${cloud.gcpProject}):\n`);
|
|
16
|
+
agents = await runtime.listRunningAgents();
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const { ECSFargateRuntime } = await import("../../docker/ecs-runtime.js");
|
|
20
|
+
const runtime = new ECSFargateRuntime(cloud);
|
|
21
|
+
console.log(`ECS tasks status (cluster: ${cloud.ecsCluster}):\n`);
|
|
22
|
+
agents = await runtime.listRunningAgents();
|
|
23
|
+
}
|
|
24
|
+
if (agents.length === 0) {
|
|
25
|
+
console.log("No running agents.");
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const cols = { agent: 24, task: 40, status: 14, started: 24 };
|
|
29
|
+
console.log("AGENT".padEnd(cols.agent) +
|
|
30
|
+
"TASK".padEnd(cols.task) +
|
|
31
|
+
"STATUS".padEnd(cols.status) +
|
|
32
|
+
"STARTED AT");
|
|
33
|
+
console.log("-".repeat(cols.agent + cols.task + cols.status + cols.started));
|
|
34
|
+
for (const a of agents) {
|
|
35
|
+
console.log(a.agentName.padEnd(cols.agent) +
|
|
36
|
+
a.taskId.padEnd(cols.task) +
|
|
37
|
+
a.status.padEnd(cols.status) +
|
|
38
|
+
(a.startedAt ? a.startedAt.toISOString() : "-"));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
5
43
|
const agentNames = discoverAgents(projectPath);
|
|
6
44
|
console.log(`AL Status — ${projectPath}\n`);
|
|
7
45
|
for (const name of agentNames) {
|
|
8
46
|
const agentConfig = loadAgentConfig(projectPath, name);
|
|
9
47
|
console.log(`${name}:`);
|
|
10
|
-
console.log(` Repos: ${agentConfig.repos.join(", ")}`);
|
|
11
48
|
console.log(` Schedule: ${agentConfig.schedule || "(none)"}`);
|
|
12
49
|
console.log("");
|
|
13
50
|
}
|
|
@@ -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,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
@@ -19,15 +19,37 @@ program
|
|
|
19
19
|
const { execute } = await import("./commands/new.js");
|
|
20
20
|
await execute(name);
|
|
21
21
|
});
|
|
22
|
+
program
|
|
23
|
+
.command("run")
|
|
24
|
+
.description("Manually run a single agent")
|
|
25
|
+
.argument("<agent>", "agent name")
|
|
26
|
+
.option("-p, --project <dir>", "project directory", ".")
|
|
27
|
+
.option("--no-docker", "disable Docker container isolation (run agents directly on host)")
|
|
28
|
+
.option("-c, --cloud", "run on cloud infrastructure")
|
|
29
|
+
.action(async (agent, opts) => {
|
|
30
|
+
const { execute } = await import("./commands/run.js");
|
|
31
|
+
await execute(agent, opts);
|
|
32
|
+
});
|
|
22
33
|
program
|
|
23
34
|
.command("start")
|
|
24
35
|
.description("Start cron scheduler")
|
|
25
36
|
.option("-p, --project <dir>", "project directory", ".")
|
|
26
|
-
.option("--
|
|
37
|
+
.option("--no-docker", "disable Docker container isolation (run agents directly on host)")
|
|
38
|
+
.option("-c, --cloud", "run on cloud infrastructure")
|
|
39
|
+
.option("--no-tui", "disable interactive TUI, log status changes to stdout")
|
|
27
40
|
.action(async (opts) => {
|
|
28
41
|
const { execute } = await import("./commands/start.js");
|
|
29
42
|
await execute(opts);
|
|
30
43
|
});
|
|
44
|
+
program
|
|
45
|
+
.command("doctor")
|
|
46
|
+
.description("Check agents, credentials, webhooks, and config — prompt to fix")
|
|
47
|
+
.option("-p, --project <dir>", "project directory", ".")
|
|
48
|
+
.option("-c, --cloud", "also push credentials to cloud and reconcile IAM")
|
|
49
|
+
.action(async (opts) => {
|
|
50
|
+
const { execute } = await import("./commands/doctor.js");
|
|
51
|
+
await execute(opts);
|
|
52
|
+
});
|
|
31
53
|
program
|
|
32
54
|
.command("logs")
|
|
33
55
|
.description("View agent log files")
|
|
@@ -36,6 +58,7 @@ program
|
|
|
36
58
|
.option("-n, --lines <N>", "number of log entries to show", "50")
|
|
37
59
|
.option("-f, --follow", "tail mode — watch for new log entries")
|
|
38
60
|
.option("-d, --date <YYYY-MM-DD>", "specific date's log file")
|
|
61
|
+
.option("-c, --cloud", "view cloud logs")
|
|
39
62
|
.action(async (agent, opts) => {
|
|
40
63
|
const { execute } = await import("./commands/logs.js");
|
|
41
64
|
await execute(agent, opts);
|
|
@@ -44,37 +67,56 @@ program
|
|
|
44
67
|
.command("status")
|
|
45
68
|
.description("Show agent status")
|
|
46
69
|
.option("-p, --project <dir>", "project directory", ".")
|
|
70
|
+
.option("-c, --cloud", "show cloud status")
|
|
47
71
|
.action(async (opts) => {
|
|
48
72
|
const { execute } = await import("./commands/status.js");
|
|
49
73
|
await execute(opts);
|
|
50
74
|
});
|
|
51
75
|
program
|
|
76
|
+
.command("console")
|
|
77
|
+
.description("Open an interactive Pi coding console with project context")
|
|
78
|
+
.option("-p, --project <dir>", "project directory", ".")
|
|
79
|
+
.action(async (opts) => {
|
|
80
|
+
const { execute } = await import("./commands/console.js");
|
|
81
|
+
await execute(opts);
|
|
82
|
+
});
|
|
83
|
+
// --- Credential management ---
|
|
84
|
+
const credsCmd = program
|
|
85
|
+
.command("creds")
|
|
86
|
+
.description("Credential management");
|
|
87
|
+
credsCmd
|
|
88
|
+
.command("ls")
|
|
89
|
+
.description("List stored credentials (names only, no secrets)")
|
|
90
|
+
.action(async () => {
|
|
91
|
+
const { list } = await import("./commands/creds.js");
|
|
92
|
+
await list();
|
|
93
|
+
});
|
|
94
|
+
// --- Cloud management ---
|
|
95
|
+
const cloudCmd = program
|
|
96
|
+
.command("cloud")
|
|
97
|
+
.description("Cloud infrastructure management");
|
|
98
|
+
cloudCmd
|
|
52
99
|
.command("setup")
|
|
53
|
-
.description("
|
|
100
|
+
.description("Interactive wizard: pick provider, configure, push creds, provision IAM")
|
|
54
101
|
.option("-p, --project <dir>", "project directory", ".")
|
|
55
102
|
.action(async (opts) => {
|
|
56
|
-
const { execute } = await import("./commands/setup.js");
|
|
103
|
+
const { execute } = await import("./commands/cloud-setup.js");
|
|
57
104
|
await execute(opts);
|
|
58
105
|
});
|
|
59
|
-
|
|
60
|
-
.command("
|
|
61
|
-
.description("
|
|
106
|
+
cloudCmd
|
|
107
|
+
.command("teardown")
|
|
108
|
+
.description("Delete per-agent IAM resources and remove [cloud] config")
|
|
62
109
|
.option("-p, --project <dir>", "project directory", ".")
|
|
63
110
|
.action(async (opts) => {
|
|
64
|
-
const { execute } = await import("./commands/
|
|
111
|
+
const { execute } = await import("./commands/cloud-teardown.js");
|
|
65
112
|
await execute(opts);
|
|
66
113
|
});
|
|
67
114
|
program.parseAsync().catch((err) => {
|
|
68
|
-
|
|
115
|
+
console.error(`\nError: ${err.message}`);
|
|
69
116
|
if (err.cause)
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
if (err.status)
|
|
74
|
-
detail.status = err.status;
|
|
75
|
-
if (err.stack)
|
|
76
|
-
detail.stack = err.stack;
|
|
77
|
-
console.error(JSON.stringify(detail));
|
|
117
|
+
console.error(`Cause: ${err.cause}`);
|
|
118
|
+
if (process.env.DEBUG)
|
|
119
|
+
console.error(err.stack);
|
|
78
120
|
process.exit(1);
|
|
79
121
|
});
|
|
80
122
|
//# sourceMappingURL=main.js.map
|
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,
|
|
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":"aws.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/aws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,QAAA,MAAM,GAAG,EAAE,oBAkCV,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const aws = {
|
|
2
|
+
id: "aws",
|
|
3
|
+
label: "AWS Credentials",
|
|
4
|
+
description: "AWS Access Key for managing AWS resources",
|
|
5
|
+
helpUrl: "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html",
|
|
6
|
+
fields: [
|
|
7
|
+
{ name: "access_key_id", label: "Access Key ID", description: "AWS Access Key ID", secret: false },
|
|
8
|
+
{ name: "secret_access_key", label: "Secret Access Key", description: "AWS Secret Access Key", secret: true },
|
|
9
|
+
{ name: "default_region", label: "Default Region", description: "AWS default region (optional)", secret: false },
|
|
10
|
+
],
|
|
11
|
+
envVars: {
|
|
12
|
+
access_key_id: "AWS_ACCESS_KEY_ID",
|
|
13
|
+
secret_access_key: "AWS_SECRET_ACCESS_KEY",
|
|
14
|
+
default_region: "AWS_DEFAULT_REGION"
|
|
15
|
+
},
|
|
16
|
+
agentContext: "`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION` — use `aws` CLI and AWS SDKs directly",
|
|
17
|
+
async validate(values) {
|
|
18
|
+
// Basic validation that required fields are present
|
|
19
|
+
if (!values.access_key_id || !values.secret_access_key) {
|
|
20
|
+
throw new Error("Access Key ID and Secret Access Key are required");
|
|
21
|
+
}
|
|
22
|
+
if (values.access_key_id.length < 16 || values.access_key_id.length > 128) {
|
|
23
|
+
throw new Error("AWS Access Key ID should be between 16 and 128 characters");
|
|
24
|
+
}
|
|
25
|
+
if (values.secret_access_key.length < 40) {
|
|
26
|
+
throw new Error("AWS Secret Access Key should be at least 40 characters");
|
|
27
|
+
}
|
|
28
|
+
// We could add a real AWS API validation here, but for now basic validation is sufficient
|
|
29
|
+
return true;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export default aws;
|
|
33
|
+
//# sourceMappingURL=aws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws.js","sourceRoot":"","sources":["../../../src/credentials/builtins/aws.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAyB;IAChC,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,kFAAkF;IAC3F,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE;QAClG,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,EAAE;QAC7G,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAE;KACjH;IACD,OAAO,EAAE;QACP,aAAa,EAAE,mBAAmB;QAClC,iBAAiB,EAAE,uBAAuB;QAC1C,cAAc,EAAE,oBAAoB;KACrC;IACD,YAAY,EAAE,0GAA0G;IAExH,KAAK,CAAC,QAAQ,CAAC,MAAM;QACnB,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,0FAA0F;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bugsnag-token.d.ts","sourceRoot":"","sources":["../../../src/credentials/builtins/bugsnag-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,QAAA,MAAM,YAAY,EAAE,oBAenB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { validateBugsnagToken } from "../../setup/validators.js";
|
|
2
|
+
const bugsnagToken = {
|
|
3
|
+
id: "bugsnag_token",
|
|
4
|
+
label: "Bugsnag Auth Token",
|
|
5
|
+
description: "For error monitoring and release management",
|
|
6
|
+
helpUrl: "https://app.bugsnag.com/settings/my-account/auth-tokens",
|
|
7
|
+
fields: [
|
|
8
|
+
{ name: "token", label: "Auth Token", description: "Bugsnag auth token", secret: true },
|
|
9
|
+
],
|
|
10
|
+
envVars: { token: "BUGSNAG_AUTH_TOKEN" },
|
|
11
|
+
agentContext: "`BUGSNAG_AUTH_TOKEN` — use for Bugsnag API requests",
|
|
12
|
+
async validate(values) {
|
|
13
|
+
await validateBugsnagToken(values.token);
|
|
14
|
+
return true;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export default bugsnagToken;
|
|
18
|
+
//# sourceMappingURL=bugsnag-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bugsnag-token.js","sourceRoot":"","sources":["../../../src/credentials/builtins/bugsnag-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,YAAY,GAAyB;IACzC,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,6CAA6C;IAC1D,OAAO,EAAE,yDAAyD;IAClE,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE;KACxF;IACD,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACxC,YAAY,EAAE,qDAAqD;IAEnE,KAAK,CAAC,QAAQ,CAAC,MAAM;QACnB,MAAM,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
const githubWebhookSecret = {
|
|
2
2
|
id: "github_webhook_secret",
|
|
3
3
|
label: "GitHub Webhook Secret",
|
|
4
|
-
description: "Shared secret for verifying GitHub webhook payloads",
|
|
4
|
+
description: "Shared secret for verifying GitHub webhook payloads. Generate any random string, then paste it here AND in your GitHub repo's webhook settings (Settings → Webhooks → Secret).",
|
|
5
|
+
helpUrl: "https://docs.github.com/en/webhooks/using-webhooks/validating-webhook-deliveries",
|
|
5
6
|
fields: [
|
|
6
7
|
{ name: "secret", label: "Webhook Secret", description: "Set this same value in your GitHub webhook settings", secret: true },
|
|
7
8
|
],
|
|
@@ -1 +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,
|
|
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,gLAAgL;IAC7L,OAAO,EAAE,kFAAkF;IAC3F,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"}
|
|
@@ -1 +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;
|
|
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;AAazD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAYnE,CAAC"}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import githubToken from "./github-token.js";
|
|
2
2
|
import anthropicKey from "./anthropic-key.js";
|
|
3
|
+
import openaiKey from "./openai-key.js";
|
|
3
4
|
import sentryToken from "./sentry-token.js";
|
|
4
5
|
import gitSsh from "./id-rsa.js";
|
|
5
6
|
import githubWebhookSecret from "./github-webhook-secret.js";
|
|
6
7
|
import sentryClientSecret from "./sentry-client-secret.js";
|
|
8
|
+
import netlifyToken from "./netlify-token.js";
|
|
9
|
+
import xTwitterApi from "./x-twitter-api.js";
|
|
10
|
+
import aws from "./aws.js";
|
|
11
|
+
import bugsnagToken from "./bugsnag-token.js";
|
|
7
12
|
export const builtinCredentials = {
|
|
8
13
|
"github_token": githubToken,
|
|
9
14
|
"anthropic_key": anthropicKey,
|
|
15
|
+
"openai_key": openaiKey,
|
|
10
16
|
"sentry_token": sentryToken,
|
|
11
17
|
"git_ssh": gitSsh,
|
|
12
18
|
"github_webhook_secret": githubWebhookSecret,
|
|
13
19
|
"sentry_client_secret": sentryClientSecret,
|
|
20
|
+
"netlify_token": netlifyToken,
|
|
21
|
+
"x_twitter_api": xTwitterApi,
|
|
22
|
+
"aws": aws,
|
|
23
|
+
"bugsnag_token": bugsnagToken,
|
|
14
24
|
};
|
|
15
25
|
//# sourceMappingURL=index.js.map
|