@action-llama/action-llama 0.10.1 → 0.11.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/AGENTS.md +17 -6
- package/README.md +8 -4
- package/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +37 -0
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/container-runner.d.ts +4 -0
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +82 -5
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/agents/execution-engine.d.ts +2 -0
- package/dist/agents/execution-engine.d.ts.map +1 -1
- package/dist/agents/execution-engine.js +7 -16
- package/dist/agents/execution-engine.js.map +1 -1
- package/dist/agents/runner.d.ts +3 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +47 -17
- package/dist/agents/runner.js.map +1 -1
- package/dist/cli/commands/chat.d.ts +5 -2
- package/dist/cli/commands/chat.d.ts.map +1 -1
- package/dist/cli/commands/chat.js +240 -23
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/cloud-deploy.d.ts.map +1 -1
- package/dist/cli/commands/cloud-deploy.js +5 -47
- package/dist/cli/commands/cloud-deploy.js.map +1 -1
- package/dist/cli/commands/cloud-setup.d.ts.map +1 -1
- package/dist/cli/commands/cloud-setup.js +20 -858
- package/dist/cli/commands/cloud-setup.js.map +1 -1
- package/dist/cli/commands/cloud-teardown.d.ts.map +1 -1
- package/dist/cli/commands/cloud-teardown.js +6 -126
- package/dist/cli/commands/cloud-teardown.js.map +1 -1
- package/dist/cli/commands/creds.d.ts.map +1 -1
- package/dist/cli/commands/creds.js +2 -4
- package/dist/cli/commands/creds.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +0 -3
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +76 -646
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/kill.d.ts +1 -1
- package/dist/cli/commands/kill.d.ts.map +1 -1
- package/dist/cli/commands/kill.js +26 -18
- package/dist/cli/commands/kill.js.map +1 -1
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +104 -58
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/pause.d.ts +1 -1
- package/dist/cli/commands/pause.d.ts.map +1 -1
- package/dist/cli/commands/pause.js +19 -19
- package/dist/cli/commands/pause.js.map +1 -1
- package/dist/cli/commands/resume.d.ts +1 -1
- package/dist/cli/commands/resume.d.ts.map +1 -1
- package/dist/cli/commands/resume.js +19 -19
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +12 -54
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +22 -39
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/gateway-client.d.ts +12 -0
- package/dist/cli/gateway-client.d.ts.map +1 -0
- package/dist/cli/gateway-client.js +27 -0
- package/dist/cli/gateway-client.js.map +1 -0
- package/dist/cli/main.js +79 -42
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/with-command.d.ts +13 -0
- package/dist/cli/with-command.d.ts.map +1 -0
- package/dist/cli/with-command.js +45 -0
- package/dist/cli/with-command.js.map +1 -0
- package/dist/{shared/aws-constants.d.ts → cloud/aws/constants.d.ts} +3 -34
- package/dist/cloud/aws/constants.d.ts.map +1 -0
- package/dist/{shared/aws-constants.js → cloud/aws/constants.js} +3 -34
- package/dist/cloud/aws/constants.js.map +1 -0
- package/dist/cloud/{deploy-apprunner.d.ts → aws/deploy.d.ts} +6 -6
- package/dist/cloud/aws/deploy.d.ts.map +1 -0
- package/dist/cloud/{deploy-apprunner.js → aws/deploy.js} +2 -2
- package/dist/cloud/aws/deploy.js.map +1 -0
- package/dist/cloud/aws/iam.d.ts +37 -0
- package/dist/cloud/aws/iam.d.ts.map +1 -0
- package/dist/cloud/aws/iam.js +442 -0
- package/dist/cloud/aws/iam.js.map +1 -0
- package/dist/cloud/aws/provider.d.ts +69 -0
- package/dist/cloud/aws/provider.d.ts.map +1 -0
- package/dist/cloud/aws/provider.js +173 -0
- package/dist/cloud/aws/provider.js.map +1 -0
- package/dist/cloud/aws/provision.d.ts +9 -0
- package/dist/cloud/aws/provision.d.ts.map +1 -0
- package/dist/cloud/aws/provision.js +698 -0
- package/dist/cloud/aws/provision.js.map +1 -0
- package/dist/cloud/aws/teardown.d.ts +15 -0
- package/dist/cloud/aws/teardown.d.ts.map +1 -0
- package/dist/cloud/aws/teardown.js +74 -0
- package/dist/cloud/aws/teardown.js.map +1 -0
- package/dist/cloud/gcp/constants.d.ts +16 -0
- package/dist/cloud/gcp/constants.d.ts.map +1 -0
- package/dist/cloud/gcp/constants.js +16 -0
- package/dist/cloud/gcp/constants.js.map +1 -0
- package/dist/cloud/{deploy-cloudrun.d.ts → gcp/deploy.d.ts} +6 -6
- package/dist/cloud/gcp/deploy.d.ts.map +1 -0
- package/dist/cloud/{deploy-cloudrun.js → gcp/deploy.js} +7 -7
- package/dist/cloud/gcp/deploy.js.map +1 -0
- package/dist/cloud/gcp/iam.d.ts +20 -0
- package/dist/cloud/gcp/iam.d.ts.map +1 -0
- package/dist/cloud/gcp/iam.js +179 -0
- package/dist/cloud/gcp/iam.js.map +1 -0
- package/dist/cloud/gcp/provider.d.ts +28 -0
- package/dist/cloud/gcp/provider.d.ts.map +1 -0
- package/dist/cloud/gcp/provider.js +84 -0
- package/dist/cloud/gcp/provider.js.map +1 -0
- package/dist/cloud/gcp/provision.d.ts +14 -0
- package/dist/cloud/gcp/provision.d.ts.map +1 -0
- package/dist/cloud/gcp/provision.js +37 -0
- package/dist/cloud/gcp/provision.js.map +1 -0
- package/dist/cloud/gcp/teardown.d.ts +12 -0
- package/dist/cloud/gcp/teardown.d.ts.map +1 -0
- package/dist/cloud/gcp/teardown.js +67 -0
- package/dist/cloud/gcp/teardown.js.map +1 -0
- package/dist/cloud/image-builder.d.ts.map +1 -1
- package/dist/cloud/image-builder.js +115 -18
- package/dist/cloud/image-builder.js.map +1 -1
- package/dist/cloud/provider.d.ts +57 -0
- package/dist/cloud/provider.d.ts.map +1 -0
- package/dist/cloud/provider.js +21 -0
- package/dist/cloud/provider.js.map +1 -0
- package/dist/cloud/scheduler-image.d.ts.map +1 -1
- package/dist/cloud/scheduler-image.js +16 -3
- package/dist/cloud/scheduler-image.js.map +1 -1
- package/dist/cloud/state.d.ts +17 -0
- package/dist/cloud/state.d.ts.map +1 -0
- package/dist/cloud/state.js +48 -0
- package/dist/cloud/state.js.map +1 -0
- package/dist/docker/aws-shared.d.ts +6 -4
- package/dist/docker/aws-shared.d.ts.map +1 -1
- package/dist/docker/aws-shared.js +405 -23
- package/dist/docker/aws-shared.js.map +1 -1
- package/dist/docker/cloud-run-runtime.d.ts.map +1 -1
- package/dist/docker/cloud-run-runtime.js +10 -9
- package/dist/docker/cloud-run-runtime.js.map +1 -1
- package/dist/docker/ecs-runtime.d.ts +3 -1
- package/dist/docker/ecs-runtime.d.ts.map +1 -1
- package/dist/docker/ecs-runtime.js +78 -29
- package/dist/docker/ecs-runtime.js.map +1 -1
- package/dist/docker/image.d.ts +7 -0
- package/dist/docker/image.d.ts.map +1 -1
- package/dist/docker/image.js +31 -4
- package/dist/docker/image.js.map +1 -1
- package/dist/docker/lambda-runtime.js +1 -1
- package/dist/docker/lambda-runtime.js.map +1 -1
- package/dist/docker/local-runtime.js +4 -4
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/network.d.ts.map +1 -1
- package/dist/docker/network.js +2 -2
- package/dist/docker/network.js.map +1 -1
- package/dist/docker/runtime.d.ts +23 -0
- package/dist/docker/runtime.d.ts.map +1 -1
- package/dist/gateway/api-key.d.ts +10 -0
- package/dist/gateway/api-key.d.ts.map +1 -0
- package/dist/gateway/api-key.js +19 -0
- package/dist/gateway/api-key.js.map +1 -0
- package/dist/gateway/auth.d.ts +16 -0
- package/dist/gateway/auth.d.ts.map +1 -0
- package/dist/gateway/auth.js +60 -0
- package/dist/gateway/auth.js.map +1 -0
- package/dist/gateway/index.d.ts +2 -0
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +38 -4
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/rate-limiter.d.ts +16 -0
- package/dist/gateway/rate-limiter.d.ts.map +1 -0
- package/dist/gateway/rate-limiter.js +38 -0
- package/dist/gateway/rate-limiter.js.map +1 -0
- package/dist/gateway/routes/control.d.ts +6 -0
- package/dist/gateway/routes/control.d.ts.map +1 -1
- package/dist/gateway/routes/control.js +117 -0
- package/dist/gateway/routes/control.js.map +1 -1
- package/dist/gateway/routes/dashboard.d.ts +1 -1
- package/dist/gateway/routes/dashboard.d.ts.map +1 -1
- package/dist/gateway/routes/dashboard.js +148 -49
- package/dist/gateway/routes/dashboard.js.map +1 -1
- package/dist/gateway/routes/locks.d.ts +3 -1
- package/dist/gateway/routes/locks.d.ts.map +1 -1
- package/dist/gateway/routes/locks.js +18 -13
- package/dist/gateway/routes/locks.js.map +1 -1
- package/dist/gateway/routes/webhooks.d.ts.map +1 -1
- package/dist/gateway/routes/webhooks.js +14 -0
- package/dist/gateway/routes/webhooks.js.map +1 -1
- package/dist/gateway/views/dashboard-page.d.ts.map +1 -1
- package/dist/gateway/views/dashboard-page.js +93 -20
- package/dist/gateway/views/dashboard-page.js.map +1 -1
- package/dist/gateway/views/login-page.d.ts +2 -0
- package/dist/gateway/views/login-page.d.ts.map +1 -0
- package/dist/gateway/views/login-page.js +54 -0
- package/dist/gateway/views/login-page.js.map +1 -0
- package/dist/scheduler/index.d.ts +1 -2
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +176 -216
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/runner-pool.d.ts +5 -0
- package/dist/scheduler/runner-pool.d.ts.map +1 -1
- package/dist/scheduler/runner-pool.js +14 -0
- package/dist/scheduler/runner-pool.js.map +1 -1
- package/dist/scheduler/runtime-factory.d.ts +26 -4
- package/dist/scheduler/runtime-factory.d.ts.map +1 -1
- package/dist/scheduler/runtime-factory.js +43 -77
- package/dist/scheduler/runtime-factory.js.map +1 -1
- package/dist/scheduler/webhook-setup.d.ts +11 -20
- package/dist/scheduler/webhook-setup.d.ts.map +1 -1
- package/dist/scheduler/webhook-setup.js +22 -68
- package/dist/scheduler/webhook-setup.js.map +1 -1
- package/dist/setup/scaffold.d.ts.map +1 -1
- package/dist/setup/scaffold.js +25 -0
- package/dist/setup/scaffold.js.map +1 -1
- package/dist/shared/asm-backend.d.ts.map +1 -1
- package/dist/shared/asm-backend.js +2 -2
- package/dist/shared/asm-backend.js.map +1 -1
- package/dist/shared/config.d.ts +29 -13
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +53 -6
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/constants.d.ts +34 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +34 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/credential-backend.d.ts +1 -1
- package/dist/shared/credentials.d.ts.map +1 -1
- package/dist/shared/credentials.js +2 -1
- package/dist/shared/credentials.js.map +1 -1
- package/dist/shared/errors.d.ts +34 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +47 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/filesystem-backend.d.ts +1 -1
- package/dist/shared/filesystem-backend.js +1 -1
- package/dist/shared/git.d.ts.map +1 -1
- package/dist/shared/git.js +3 -2
- package/dist/shared/git.js.map +1 -1
- package/dist/shared/gsm-backend.d.ts.map +1 -1
- package/dist/shared/gsm-backend.js +2 -2
- package/dist/shared/gsm-backend.js.map +1 -1
- package/dist/shared/paths.d.ts +2 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +3 -1
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/remote.d.ts +1 -0
- package/dist/shared/remote.d.ts.map +1 -1
- package/dist/shared/remote.js +4 -16
- package/dist/shared/remote.js.map +1 -1
- package/dist/shared/usage.d.ts +22 -0
- package/dist/shared/usage.d.ts.map +1 -0
- package/dist/shared/usage.js +43 -0
- package/dist/shared/usage.js.map +1 -0
- package/dist/telemetry/index.d.ts +57 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +189 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/providers/otel.d.ts +15 -0
- package/dist/telemetry/providers/otel.d.ts.map +1 -0
- package/dist/telemetry/providers/otel.js +77 -0
- package/dist/telemetry/providers/otel.js.map +1 -0
- package/dist/telemetry/providers/xray.d.ts +13 -0
- package/dist/telemetry/providers/xray.d.ts.map +1 -0
- package/dist/telemetry/providers/xray.js +33 -0
- package/dist/telemetry/providers/xray.js.map +1 -0
- package/dist/telemetry/types.d.ts +59 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +2 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +2 -0
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/plain-logger.d.ts.map +1 -1
- package/dist/tui/plain-logger.js +8 -2
- package/dist/tui/plain-logger.js.map +1 -1
- package/dist/tui/status-tracker.d.ts +4 -1
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js +11 -1
- package/dist/tui/status-tracker.js.map +1 -1
- package/dist/webhooks/providers/github.d.ts.map +1 -1
- package/dist/webhooks/providers/github.js +2 -21
- package/dist/webhooks/providers/github.js.map +1 -1
- package/dist/webhooks/providers/linear.d.ts.map +1 -1
- package/dist/webhooks/providers/linear.js +2 -21
- package/dist/webhooks/providers/linear.js.map +1 -1
- package/dist/webhooks/providers/sentry.d.ts.map +1 -1
- package/dist/webhooks/providers/sentry.js +2 -20
- package/dist/webhooks/providers/sentry.js.map +1 -1
- package/dist/webhooks/validation.d.ts +17 -0
- package/dist/webhooks/validation.d.ts.map +1 -0
- package/dist/webhooks/validation.js +37 -0
- package/dist/webhooks/validation.js.map +1 -0
- package/docker/adot-collector-config.yaml +57 -0
- package/package.json +9 -1
- package/dist/cloud/deploy-apprunner.d.ts.map +0 -1
- package/dist/cloud/deploy-apprunner.js.map +0 -1
- package/dist/cloud/deploy-cloudrun.d.ts.map +0 -1
- package/dist/cloud/deploy-cloudrun.js.map +0 -1
- package/dist/scheduler/config-validator.d.ts +0 -18
- package/dist/scheduler/config-validator.d.ts.map +0 -1
- package/dist/scheduler/config-validator.js +0 -53
- package/dist/scheduler/config-validator.js.map +0 -1
- package/dist/scheduler/cron-manager.d.ts +0 -14
- package/dist/scheduler/cron-manager.d.ts.map +0 -1
- package/dist/scheduler/cron-manager.js +0 -75
- package/dist/scheduler/cron-manager.js.map +0 -1
- package/dist/scheduler/shutdown-handler.d.ts +0 -16
- package/dist/scheduler/shutdown-handler.d.ts.map +0 -1
- package/dist/scheduler/shutdown-handler.js +0 -44
- package/dist/scheduler/shutdown-handler.js.map +0 -1
- package/dist/scheduler/trigger-dispatcher.d.ts +0 -12
- package/dist/scheduler/trigger-dispatcher.d.ts.map +0 -1
- package/dist/scheduler/trigger-dispatcher.js +0 -46
- package/dist/scheduler/trigger-dispatcher.js.map +0 -1
- package/dist/shared/aws-constants.d.ts.map +0 -1
- package/dist/shared/aws-constants.js.map +0 -1
package/dist/cli/commands/run.js
CHANGED
|
@@ -3,7 +3,7 @@ import { existsSync } from "fs";
|
|
|
3
3
|
import { loadGlobalConfig, loadAgentConfig, discoverAgents } from "../../shared/config.js";
|
|
4
4
|
import { requireCredentialRef } from "../../shared/credentials.js";
|
|
5
5
|
import { createLogger } from "../../shared/logger.js";
|
|
6
|
-
import {
|
|
6
|
+
import { CONSTANTS } from "../../shared/constants.js";
|
|
7
7
|
import { buildManualPrompt } from "../../agents/prompt.js";
|
|
8
8
|
import { execute as runDoctor } from "./doctor.js";
|
|
9
9
|
export async function execute(agent, opts) {
|
|
@@ -27,72 +27,29 @@ export async function execute(agent, opts) {
|
|
|
27
27
|
for (const credRef of agentConfig.credentials) {
|
|
28
28
|
await requireCredentialRef(credRef);
|
|
29
29
|
}
|
|
30
|
-
const dockerEnabled = true;
|
|
31
30
|
const cloudMode = opts.cloud === true;
|
|
32
31
|
const logger = createLogger(projectPath, agent);
|
|
33
32
|
if (cloudMode) {
|
|
34
|
-
// Cloud mode: use cloud runtime
|
|
33
|
+
// Cloud mode: use cloud runtime via provider
|
|
35
34
|
const cloud = globalConfig.cloud;
|
|
36
35
|
if (!cloud) {
|
|
37
36
|
throw new Error("No [cloud] section found in config.toml. Run 'al cloud setup' first.");
|
|
38
37
|
}
|
|
38
|
+
const { createCloudProvider } = await import("../../cloud/provider.js");
|
|
39
|
+
const provider = await createCloudProvider(cloud);
|
|
39
40
|
const { setDefaultBackend } = await import("../../shared/credentials.js");
|
|
40
|
-
const
|
|
41
|
-
const backend = await createBackendFromCloudConfig(cloud);
|
|
41
|
+
const backend = await provider.createCredentialBackend();
|
|
42
42
|
setDefaultBackend(backend);
|
|
43
|
-
|
|
44
|
-
if (cloud.provider === "cloud-run") {
|
|
45
|
-
const { CloudRunJobRuntime } = await import("../../docker/cloud-run-runtime.js");
|
|
46
|
-
const { gcpProject, region, artifactRegistry, serviceAccount, secretPrefix } = cloud;
|
|
47
|
-
if (!gcpProject || !region || !artifactRegistry || !serviceAccount) {
|
|
48
|
-
throw new Error("Cloud Run requires cloud.gcpProject, cloud.region, " +
|
|
49
|
-
"cloud.artifactRegistry, and cloud.serviceAccount in config.toml");
|
|
50
|
-
}
|
|
51
|
-
runtime = new CloudRunJobRuntime({ gcpProject, region, artifactRegistry, serviceAccount, secretPrefix });
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// ECS provider: route to Lambda for short-timeout agents, ECS for long ones
|
|
55
|
-
const effectiveTimeout = agentConfig.timeout ?? globalConfig.local?.timeout ?? 900;
|
|
56
|
-
if (effectiveTimeout <= AWS_CONSTANTS.LAMBDA_MAX_TIMEOUT) {
|
|
57
|
-
const { LambdaRuntime } = await import("../../docker/lambda-runtime.js");
|
|
58
|
-
runtime = new LambdaRuntime({
|
|
59
|
-
awsRegion: cloud.awsRegion,
|
|
60
|
-
ecrRepository: cloud.ecrRepository,
|
|
61
|
-
secretPrefix: cloud.awsSecretPrefix,
|
|
62
|
-
buildBucket: cloud.buildBucket,
|
|
63
|
-
lambdaRoleArn: cloud.lambdaRoleArn,
|
|
64
|
-
lambdaSubnets: cloud.lambdaSubnets,
|
|
65
|
-
lambdaSecurityGroups: cloud.lambdaSecurityGroups,
|
|
66
|
-
});
|
|
67
|
-
console.log(`Agent "${agent}" has timeout ${effectiveTimeout}s — routing to Lambda`);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const { ECSFargateRuntime } = await import("../../docker/ecs-runtime.js");
|
|
71
|
-
if (!cloud.awsRegion || !cloud.ecsCluster || !cloud.ecrRepository || !cloud.executionRoleArn || !cloud.taskRoleArn || !cloud.subnets?.length) {
|
|
72
|
-
throw new Error("ECS requires cloud.awsRegion, cloud.ecsCluster, cloud.ecrRepository, " +
|
|
73
|
-
"cloud.executionRoleArn, cloud.taskRoleArn, and cloud.subnets in config.toml");
|
|
74
|
-
}
|
|
75
|
-
runtime = new ECSFargateRuntime({
|
|
76
|
-
awsRegion: cloud.awsRegion,
|
|
77
|
-
ecsCluster: cloud.ecsCluster,
|
|
78
|
-
ecrRepository: cloud.ecrRepository,
|
|
79
|
-
executionRoleArn: cloud.executionRoleArn,
|
|
80
|
-
taskRoleArn: cloud.taskRoleArn,
|
|
81
|
-
subnets: cloud.subnets,
|
|
82
|
-
securityGroups: cloud.securityGroups,
|
|
83
|
-
secretPrefix: cloud.awsSecretPrefix,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
43
|
+
const runtime = provider.createAgentRuntime(agentConfig, globalConfig);
|
|
87
44
|
const { ContainerAgentRunner } = await import("../../agents/container-runner.js");
|
|
88
|
-
const baseImage = globalConfig.local?.image ||
|
|
45
|
+
const baseImage = globalConfig.local?.image || CONSTANTS.DEFAULT_IMAGE;
|
|
89
46
|
const image = await runtime.buildImage({ tag: baseImage, dockerfile: "docker/Dockerfile", contextDir: resolve(import.meta.dirname || ".", "../..") });
|
|
90
47
|
const runner = new ContainerAgentRunner(runtime, globalConfig, agentConfig, logger, () => { }, () => { }, "", projectPath, image);
|
|
91
48
|
const prompt = buildManualPrompt(agentConfig);
|
|
92
49
|
console.log(`Running agent "${agent}" in cloud (${cloud.provider})...`);
|
|
93
50
|
await runner.run(prompt);
|
|
94
51
|
}
|
|
95
|
-
else
|
|
52
|
+
else {
|
|
96
53
|
// Docker mode: validate and run in container
|
|
97
54
|
if (agentConfig.model.authType === "pi_auth") {
|
|
98
55
|
throw new Error(`Agent "${agent}" uses pi_auth which is not supported in container mode. ` +
|
|
@@ -107,13 +64,14 @@ export async function execute(agent, opts) {
|
|
|
107
64
|
}
|
|
108
65
|
const { LocalDockerRuntime } = await import("../../docker/local-runtime.js");
|
|
109
66
|
const { ensureNetwork } = await import("../../docker/network.js");
|
|
110
|
-
const { ensureImage, ensureAgentImage } = await import("../../docker/image.js");
|
|
67
|
+
const { ensureImage, ensureAgentImage, ensureProjectBaseImage } = await import("../../docker/image.js");
|
|
111
68
|
const { ContainerAgentRunner } = await import("../../agents/container-runner.js");
|
|
112
69
|
const runtime = new LocalDockerRuntime();
|
|
113
70
|
ensureNetwork();
|
|
114
|
-
const baseImage = globalConfig.local?.image ||
|
|
71
|
+
const baseImage = globalConfig.local?.image || CONSTANTS.DEFAULT_IMAGE;
|
|
115
72
|
ensureImage(baseImage);
|
|
116
|
-
const
|
|
73
|
+
const effectiveBaseImage = ensureProjectBaseImage(projectPath, baseImage);
|
|
74
|
+
const image = ensureAgentImage(agent, projectPath, effectiveBaseImage);
|
|
117
75
|
const runner = new ContainerAgentRunner(runtime, globalConfig, agentConfig, logger, () => { }, // no gateway to register with
|
|
118
76
|
() => { }, // no gateway to unregister from
|
|
119
77
|
"", // no gateway URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,IAA8D;IACzG,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE1C,yEAAyE;IACzE,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAC5G,MAAM,IAAI,KAAK,CACb,IAAI,WAAW,4DAA4D;YAC3E,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC5G,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,gBAAgB,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,iCAAiC;IACjC,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAExF,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAExD,uBAAuB;IACvB,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAEhD,IAAI,SAAS,EAAE,CAAC;QACd,6CAA6C;QAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACzD,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEvE,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAElF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,aAAa,CAAC;QACvE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtJ,MAAM,MAAM,GAAG,IAAI,oBAAoB,CACrC,OAAO,EACP,YAAY,EACZ,WAAW,EACX,MAAM,EACN,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,EACR,EAAE,EACF,WAAW,EACX,KAAK,CACN,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,eAAe,KAAK,CAAC,QAAQ,MAAM,CAAC,CAAC;QACxE,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,2DAA2D;gBAC1E,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC7E,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACxG,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAElF,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACzC,aAAa,EAAE,CAAC;QAEhB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,aAAa,CAAC;QACvE,WAAW,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,IAAI,oBAAoB,CACrC,OAAO,EACP,YAAY,EACZ,WAAW,EACX,MAAM,EACN,GAAG,EAAE,GAAE,CAAC,EAAW,8BAA8B;QACjD,GAAG,EAAE,GAAE,CAAC,EAAW,gCAAgC;QACnD,EAAE,EAAiB,iBAAiB;QACpC,WAAW,EACX,KAAK,CACN,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,gBAAgB,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -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":"AAMA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqJvF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { discoverAgents, loadAgentConfig, loadGlobalConfig } from "../../shared/config.js";
|
|
3
|
+
import { gatewayFetch } from "../gateway-client.js";
|
|
3
4
|
export async function execute(opts) {
|
|
4
5
|
const projectPath = resolve(opts.project);
|
|
5
6
|
if (opts.cloud) {
|
|
@@ -8,44 +9,24 @@ export async function execute(opts) {
|
|
|
8
9
|
if (!cloud) {
|
|
9
10
|
throw new Error("No [cloud] section found in config.toml. Run 'al cloud setup' first.");
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
const { createCloudProvider } = await import("../../cloud/provider.js");
|
|
13
|
+
const provider = await createCloudProvider(cloud);
|
|
12
14
|
// Show scheduler service status
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
console.log(`
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
console.log("Scheduler: not deployed");
|
|
23
|
-
}
|
|
24
|
-
console.log("");
|
|
25
|
-
const { CloudRunJobRuntime } = await import("../../docker/cloud-run-runtime.js");
|
|
26
|
-
const runtime = new CloudRunJobRuntime(cloud);
|
|
27
|
-
console.log(`Cloud Run Jobs status (project: ${cloud.gcpProject}):\n`);
|
|
28
|
-
agents = await runtime.listRunningAgents();
|
|
15
|
+
const svc = await provider.getSchedulerStatus();
|
|
16
|
+
if (svc) {
|
|
17
|
+
console.log(`Scheduler (${cloud.provider}):`);
|
|
18
|
+
console.log(` URL: ${svc.serviceUrl}`);
|
|
19
|
+
console.log(` Status: ${svc.status}`);
|
|
20
|
+
if (svc.createdAt)
|
|
21
|
+
console.log(` Created: ${svc.createdAt.toISOString()}`);
|
|
29
22
|
}
|
|
30
23
|
else {
|
|
31
|
-
|
|
32
|
-
const svc = await getAppRunnerStatus(cloud);
|
|
33
|
-
if (svc) {
|
|
34
|
-
console.log("Scheduler (App Runner):");
|
|
35
|
-
console.log(` URL: ${svc.serviceUrl}`);
|
|
36
|
-
console.log(` Status: ${svc.status}`);
|
|
37
|
-
if (svc.createdAt)
|
|
38
|
-
console.log(` Created: ${svc.createdAt.toISOString()}`);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
console.log("Scheduler: not deployed");
|
|
42
|
-
}
|
|
43
|
-
console.log("");
|
|
44
|
-
const { ECSFargateRuntime } = await import("../../docker/ecs-runtime.js");
|
|
45
|
-
const runtime = new ECSFargateRuntime(cloud);
|
|
46
|
-
console.log(`ECS tasks status (cluster: ${cloud.ecsCluster}):\n`);
|
|
47
|
-
agents = await runtime.listRunningAgents();
|
|
24
|
+
console.log("Scheduler: not deployed");
|
|
48
25
|
}
|
|
26
|
+
console.log("");
|
|
27
|
+
// List running agents
|
|
28
|
+
const runtime = provider.createRuntime();
|
|
29
|
+
const agents = await runtime.listRunningAgents();
|
|
49
30
|
if (agents.length === 0) {
|
|
50
31
|
console.log("No running agents.");
|
|
51
32
|
}
|
|
@@ -68,16 +49,16 @@ export async function execute(opts) {
|
|
|
68
49
|
const agentNames = discoverAgents(projectPath);
|
|
69
50
|
console.log(`AL Status — ${projectPath}\n`);
|
|
70
51
|
// Try to get running instances from gateway if available
|
|
71
|
-
const globalConfig = loadGlobalConfig(projectPath);
|
|
72
|
-
const gatewayPort = globalConfig.gateway?.port || 8080;
|
|
73
52
|
let schedulerInfo = null;
|
|
74
53
|
let instances = [];
|
|
54
|
+
let agentStatuses = [];
|
|
75
55
|
try {
|
|
76
|
-
const response = await
|
|
56
|
+
const response = await gatewayFetch({ project: projectPath, path: "/control/status" });
|
|
77
57
|
if (response.ok) {
|
|
78
58
|
const data = await response.json();
|
|
79
59
|
schedulerInfo = data.scheduler;
|
|
80
60
|
instances = data.instances || [];
|
|
61
|
+
agentStatuses = data.agents || [];
|
|
81
62
|
}
|
|
82
63
|
}
|
|
83
64
|
catch (error) {
|
|
@@ -123,14 +104,16 @@ export async function execute(opts) {
|
|
|
123
104
|
// Show agent configuration
|
|
124
105
|
for (const name of agentNames) {
|
|
125
106
|
const agentConfig = loadAgentConfig(projectPath, name);
|
|
126
|
-
|
|
107
|
+
const agentStatus = agentStatuses.find(a => a.name === name);
|
|
108
|
+
const pausedSuffix = agentStatus && !agentStatus.enabled ? " (PAUSED)" : "";
|
|
109
|
+
console.log(`${name}:${pausedSuffix}`);
|
|
127
110
|
console.log(` Schedule: ${agentConfig.schedule || "(none)"}`);
|
|
128
111
|
console.log("");
|
|
129
112
|
}
|
|
130
113
|
console.log(`Agents: ${agentNames.join(", ")}`);
|
|
131
114
|
// Fetch and display lock information (local mode only)
|
|
132
115
|
try {
|
|
133
|
-
const response = await
|
|
116
|
+
const response = await gatewayFetch({ project: projectPath, path: "/locks/status" });
|
|
134
117
|
if (response.ok) {
|
|
135
118
|
const data = await response.json();
|
|
136
119
|
if (data.locks && data.locks.length > 0) {
|
|
@@ -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,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
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,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAA0C;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAElD,gCAAgC;QAChC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACvC,IAAI,GAAG,CAAC,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,sBAAsB;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,MAAM,GAAmB,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAEjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC5B,YAAY,CACb,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAE7E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC5B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAChD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,IAAI,CAAC,CAAC;IAE5C,yDAAyD;IACzD,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,IAAI,SAAS,GAAoB,EAAE,CAAC;IACpC,IAAI,aAAa,GAA8C,EAAE,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACvF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACjC,aAAa,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kEAAkE;IACpE,CAAC;IAED,oCAAoC;IACpC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,WAAW,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,+BAA+B,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC/E,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,SAAS,CACV,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhG,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC/C,MAAM,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE/C,OAAO,CAAC,GAAG,CACT,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpF,CAAC,QAAQ,CAAC,OAAO,IAAI,GAAG,CAAC,CAC1B,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QACvC,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;IAEhD,uDAAuD;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QACrF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;oBACjE,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC;oBAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,cAAc,OAAO,GAAG,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;QACH,CAAC;QACD,qDAAqD;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface GatewayFetchOpts {
|
|
2
|
+
project: string;
|
|
3
|
+
path: string;
|
|
4
|
+
method?: string;
|
|
5
|
+
body?: unknown;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Make an authenticated request to the local gateway.
|
|
9
|
+
* Reads the port from config.toml and the API key from the credential store.
|
|
10
|
+
*/
|
|
11
|
+
export declare function gatewayFetch(opts: GatewayFetchOpts): Promise<Response>;
|
|
12
|
+
//# sourceMappingURL=gateway-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-client.d.ts","sourceRoot":"","sources":["../../src/cli/gateway-client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuB5E"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { resolve } from "path";
|
|
2
|
+
import { loadGlobalConfig } from "../shared/config.js";
|
|
3
|
+
import { loadCredentialField } from "../shared/credentials.js";
|
|
4
|
+
/**
|
|
5
|
+
* Make an authenticated request to the local gateway.
|
|
6
|
+
* Reads the port from config.toml and the API key from the credential store.
|
|
7
|
+
*/
|
|
8
|
+
export async function gatewayFetch(opts) {
|
|
9
|
+
const projectPath = resolve(opts.project);
|
|
10
|
+
const globalConfig = loadGlobalConfig(projectPath);
|
|
11
|
+
const gatewayPort = globalConfig.gateway?.port || 8080;
|
|
12
|
+
const headers = {};
|
|
13
|
+
const apiKey = await loadCredentialField("gateway_api_key", "default", "key");
|
|
14
|
+
if (apiKey) {
|
|
15
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
16
|
+
}
|
|
17
|
+
const init = {
|
|
18
|
+
method: opts.method || "GET",
|
|
19
|
+
headers,
|
|
20
|
+
};
|
|
21
|
+
if (opts.body !== undefined) {
|
|
22
|
+
headers["Content-Type"] = "application/json";
|
|
23
|
+
init.body = JSON.stringify(opts.body);
|
|
24
|
+
}
|
|
25
|
+
return fetch(`http://localhost:${gatewayPort}${opts.path}`, init);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=gateway-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/cli/gateway-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAS/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IAEvD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9E,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAgB;QACxB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;QAC5B,OAAO;KACR,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,oBAAoB,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/cli/main.js
CHANGED
|
@@ -3,6 +3,9 @@ import { Command } from "commander";
|
|
|
3
3
|
import { readFileSync } from "fs";
|
|
4
4
|
import { dirname, resolve } from "path";
|
|
5
5
|
import { fileURLToPath } from "url";
|
|
6
|
+
import { withCommand } from "./with-command.js";
|
|
7
|
+
import { initTelemetry } from "../telemetry/index.js";
|
|
8
|
+
import { loadGlobalConfig } from "../shared/config.js";
|
|
6
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
10
|
const pkg = JSON.parse(readFileSync(resolve(__dirname, "../../package.json"), "utf-8"));
|
|
8
11
|
const program = new Command();
|
|
@@ -10,15 +13,43 @@ program
|
|
|
10
13
|
.name("al")
|
|
11
14
|
.description("Action Llama — automated development agents")
|
|
12
15
|
.version(pkg.version);
|
|
16
|
+
// Initialize telemetry based on project config if available
|
|
17
|
+
function initializeTelemetryForProject(projectPath = ".") {
|
|
18
|
+
try {
|
|
19
|
+
const globalConfig = loadGlobalConfig(projectPath);
|
|
20
|
+
if (globalConfig.telemetry?.enabled) {
|
|
21
|
+
const telemetry = initTelemetry(globalConfig.telemetry);
|
|
22
|
+
telemetry.init().catch((error) => {
|
|
23
|
+
// Silent fail to avoid disrupting CLI operation
|
|
24
|
+
console.debug("Failed to initialize telemetry:", error);
|
|
25
|
+
});
|
|
26
|
+
// Ensure telemetry shutdown on process exit
|
|
27
|
+
const gracefulShutdown = async () => {
|
|
28
|
+
try {
|
|
29
|
+
await telemetry.shutdown();
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.debug("Error during telemetry shutdown:", error);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
process.on("SIGINT", gracefulShutdown);
|
|
36
|
+
process.on("SIGTERM", gracefulShutdown);
|
|
37
|
+
process.on("beforeExit", gracefulShutdown);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
// Ignore config loading errors - may not be in a project directory
|
|
42
|
+
}
|
|
43
|
+
}
|
|
13
44
|
// --- User-facing commands ---
|
|
14
45
|
program
|
|
15
46
|
.command("new")
|
|
16
47
|
.description("Interactive setup, creates project dir + credentials")
|
|
17
48
|
.argument("<name>", "project name")
|
|
18
|
-
.action(async (name) => {
|
|
49
|
+
.action(withCommand(async (name) => {
|
|
19
50
|
const { execute } = await import("./commands/new.js");
|
|
20
51
|
await execute(name);
|
|
21
|
-
});
|
|
52
|
+
}));
|
|
22
53
|
program
|
|
23
54
|
.command("run")
|
|
24
55
|
.description("Manually run a single agent")
|
|
@@ -26,10 +57,10 @@ program
|
|
|
26
57
|
.option("-p, --project <dir>", "project directory", ".")
|
|
27
58
|
.option("-c, --cloud", "run on cloud infrastructure")
|
|
28
59
|
.option("-H, --headless", "non-interactive mode (no credential prompts, for CI/deploy environments)")
|
|
29
|
-
.action(async (agent, opts) => {
|
|
60
|
+
.action(withCommand(async (agent, opts) => {
|
|
30
61
|
const { execute } = await import("./commands/run.js");
|
|
31
62
|
await execute(agent, opts);
|
|
32
|
-
});
|
|
63
|
+
}));
|
|
33
64
|
program
|
|
34
65
|
.command("start")
|
|
35
66
|
.description("Start cron scheduler")
|
|
@@ -38,19 +69,20 @@ program
|
|
|
38
69
|
.option("-H, --headless", "non-interactive mode (no TUI, no credential prompts, for CI/deploy environments)")
|
|
39
70
|
.option("-g, --gateway", "enable the HTTP gateway server (required for webhooks, locks, and web UI)")
|
|
40
71
|
.option("-w, --web-ui", "enable web dashboard at http://localhost:<port>/dashboard (requires -g)")
|
|
41
|
-
.action(async (opts) => {
|
|
72
|
+
.action(withCommand(async (opts) => {
|
|
73
|
+
initializeTelemetryForProject(opts.project);
|
|
42
74
|
const { execute } = await import("./commands/start.js");
|
|
43
75
|
await execute(opts);
|
|
44
|
-
});
|
|
76
|
+
}));
|
|
45
77
|
program
|
|
46
78
|
.command("doctor")
|
|
47
79
|
.description("Check agents, credentials, webhooks, and config — prompt to fix")
|
|
48
80
|
.option("-p, --project <dir>", "project directory", ".")
|
|
49
81
|
.option("-c, --cloud", "also push credentials to cloud and reconcile IAM")
|
|
50
|
-
.action(async (opts) => {
|
|
82
|
+
.action(withCommand(async (opts) => {
|
|
51
83
|
const { execute } = await import("./commands/doctor.js");
|
|
52
84
|
await execute(opts);
|
|
53
|
-
});
|
|
85
|
+
}));
|
|
54
86
|
program
|
|
55
87
|
.command("logs")
|
|
56
88
|
.description("View agent log files (defaults to scheduler logs)")
|
|
@@ -62,52 +94,56 @@ program
|
|
|
62
94
|
.option("-r, --raw", "show raw JSON log entries instead of conversation view")
|
|
63
95
|
.option("-c, --cloud", "view cloud logs")
|
|
64
96
|
.option("-i, --instance <N>", "instance number (for agents with scale > 1)")
|
|
65
|
-
.action(async (agent, opts) => {
|
|
97
|
+
.action(withCommand(async (agent, opts) => {
|
|
66
98
|
const { execute } = await import("./commands/logs.js");
|
|
67
99
|
await execute(agent, opts);
|
|
68
|
-
});
|
|
100
|
+
}));
|
|
69
101
|
program
|
|
70
|
-
.command("
|
|
102
|
+
.command("stat")
|
|
71
103
|
.description("Show agent status")
|
|
72
104
|
.option("-p, --project <dir>", "project directory", ".")
|
|
73
105
|
.option("-c, --cloud", "show cloud status")
|
|
74
|
-
.action(async (opts) => {
|
|
106
|
+
.action(withCommand(async (opts) => {
|
|
75
107
|
const { execute } = await import("./commands/status.js");
|
|
76
108
|
await execute(opts);
|
|
77
|
-
});
|
|
109
|
+
}));
|
|
78
110
|
program
|
|
79
111
|
.command("kill")
|
|
80
|
-
.description("Kill a
|
|
81
|
-
.argument("<
|
|
112
|
+
.description("Kill an agent (all instances) or a single instance by ID")
|
|
113
|
+
.argument("<target>", "agent name or instance ID")
|
|
82
114
|
.option("-p, --project <dir>", "project directory", ".")
|
|
83
|
-
.action(async (
|
|
115
|
+
.action(withCommand(async (target, opts) => {
|
|
84
116
|
const { execute } = await import("./commands/kill.js");
|
|
85
|
-
await execute(
|
|
86
|
-
});
|
|
117
|
+
await execute(target, opts);
|
|
118
|
+
}));
|
|
87
119
|
program
|
|
88
120
|
.command("pause")
|
|
89
|
-
.description("Pause the scheduler")
|
|
121
|
+
.description("Pause the scheduler, or a single agent by name")
|
|
122
|
+
.argument("[name]", "agent name (omit to pause the entire scheduler)")
|
|
90
123
|
.option("-p, --project <dir>", "project directory", ".")
|
|
91
|
-
.action(async (opts) => {
|
|
124
|
+
.action(withCommand(async (name, opts) => {
|
|
92
125
|
const { execute } = await import("./commands/pause.js");
|
|
93
|
-
await execute(opts);
|
|
94
|
-
});
|
|
126
|
+
await execute(name, opts);
|
|
127
|
+
}));
|
|
95
128
|
program
|
|
96
129
|
.command("resume")
|
|
97
|
-
.description("Resume the scheduler")
|
|
130
|
+
.description("Resume the scheduler, or a single agent by name")
|
|
131
|
+
.argument("[name]", "agent name (omit to resume the entire scheduler)")
|
|
98
132
|
.option("-p, --project <dir>", "project directory", ".")
|
|
99
|
-
.action(async (opts) => {
|
|
133
|
+
.action(withCommand(async (name, opts) => {
|
|
100
134
|
const { execute } = await import("./commands/resume.js");
|
|
101
|
-
await execute(opts);
|
|
102
|
-
});
|
|
135
|
+
await execute(name, opts);
|
|
136
|
+
}));
|
|
103
137
|
program
|
|
104
138
|
.command("chat")
|
|
105
|
-
.description("Open an interactive
|
|
139
|
+
.description("Open an interactive console (optionally scoped to an agent's environment)")
|
|
140
|
+
.argument("[agent]", "agent name — loads its credentials and environment")
|
|
106
141
|
.option("-p, --project <dir>", "project directory", ".")
|
|
107
|
-
.
|
|
142
|
+
.option("-c, --cloud", "load credentials from cloud secrets manager")
|
|
143
|
+
.action(withCommand(async (agent, opts) => {
|
|
108
144
|
const { execute } = await import("./commands/chat.js");
|
|
109
|
-
await execute(opts);
|
|
110
|
-
});
|
|
145
|
+
await execute({ ...opts, agent });
|
|
146
|
+
}));
|
|
111
147
|
// --- Credential management ---
|
|
112
148
|
const credsCmd = program
|
|
113
149
|
.command("creds")
|
|
@@ -115,24 +151,24 @@ const credsCmd = program
|
|
|
115
151
|
credsCmd
|
|
116
152
|
.command("ls")
|
|
117
153
|
.description("List stored credentials grouped by type (no secrets)")
|
|
118
|
-
.action(async () => {
|
|
154
|
+
.action(withCommand(async () => {
|
|
119
155
|
const { list } = await import("./commands/creds.js");
|
|
120
156
|
await list();
|
|
121
|
-
});
|
|
157
|
+
}));
|
|
122
158
|
credsCmd
|
|
123
159
|
.command("add <ref>")
|
|
124
160
|
.description("Add or update a credential (e.g. github_token:default)")
|
|
125
|
-
.action(async (ref) => {
|
|
161
|
+
.action(withCommand(async (ref) => {
|
|
126
162
|
const { add } = await import("./commands/creds.js");
|
|
127
163
|
await add(ref);
|
|
128
|
-
});
|
|
164
|
+
}));
|
|
129
165
|
credsCmd
|
|
130
166
|
.command("rm <ref>")
|
|
131
167
|
.description("Remove a credential (e.g. github_token:default)")
|
|
132
|
-
.action(async (ref) => {
|
|
168
|
+
.action(withCommand(async (ref) => {
|
|
133
169
|
const { rm } = await import("./commands/creds.js");
|
|
134
170
|
await rm(ref);
|
|
135
|
-
});
|
|
171
|
+
}));
|
|
136
172
|
// --- Cloud management ---
|
|
137
173
|
const cloudCmd = program
|
|
138
174
|
.command("cloud")
|
|
@@ -141,27 +177,28 @@ cloudCmd
|
|
|
141
177
|
.command("setup")
|
|
142
178
|
.description("Interactive wizard: pick provider, configure, push creds, provision IAM")
|
|
143
179
|
.option("-p, --project <dir>", "project directory", ".")
|
|
144
|
-
.action(async (opts) => {
|
|
180
|
+
.action(withCommand(async (opts) => {
|
|
145
181
|
const { execute } = await import("./commands/cloud-setup.js");
|
|
146
182
|
await execute(opts);
|
|
147
|
-
});
|
|
183
|
+
}));
|
|
148
184
|
cloudCmd
|
|
149
185
|
.command("deploy")
|
|
150
186
|
.description("Build and deploy scheduler + agents to the cloud")
|
|
151
187
|
.option("-p, --project <dir>", "project directory", ".")
|
|
152
|
-
.action(async (opts) => {
|
|
188
|
+
.action(withCommand(async (opts) => {
|
|
153
189
|
const { execute } = await import("./commands/cloud-deploy.js");
|
|
154
190
|
await execute(opts);
|
|
155
|
-
});
|
|
191
|
+
}));
|
|
156
192
|
cloudCmd
|
|
157
193
|
.command("teardown")
|
|
158
194
|
.description("Delete per-agent IAM resources and remove [cloud] config")
|
|
159
195
|
.option("-p, --project <dir>", "project directory", ".")
|
|
160
|
-
.action(async (opts) => {
|
|
196
|
+
.action(withCommand(async (opts) => {
|
|
161
197
|
const { execute } = await import("./commands/cloud-teardown.js");
|
|
162
198
|
await execute(opts);
|
|
163
|
-
});
|
|
199
|
+
}));
|
|
164
200
|
program.parseAsync().catch((err) => {
|
|
201
|
+
// Fallback for errors that escape command handlers (e.g. Commander parse errors)
|
|
165
202
|
console.error(`\nError: ${err.message}`);
|
|
166
203
|
if (err.cause)
|
|
167
204
|
console.error(`Cause: ${err.cause}`);
|
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;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps a CLI command handler with consistent error handling.
|
|
3
|
+
*
|
|
4
|
+
* - Catches errors and prints context-aware messages
|
|
5
|
+
* - Shows recovery hints for known error types
|
|
6
|
+
* - Shows stack traces when DEBUG is set
|
|
7
|
+
* - Calls process.exit(1) on failure
|
|
8
|
+
*
|
|
9
|
+
* This replaces the ad-hoc try/catch + process.exit(1) pattern
|
|
10
|
+
* that was duplicated across every command.
|
|
11
|
+
*/
|
|
12
|
+
export declare function withCommand<T extends (...args: any[]) => Promise<void>>(fn: T): T;
|
|
13
|
+
//# sourceMappingURL=with-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-command.d.ts","sourceRoot":"","sources":["../../src/cli/with-command.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CA0BjF"}
|