@action-llama/action-llama 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/agents/container-entry.d.ts +31 -0
  2. package/dist/agents/container-entry.d.ts.map +1 -1
  3. package/dist/agents/container-entry.js +67 -108
  4. package/dist/agents/container-entry.js.map +1 -1
  5. package/dist/agents/execution-engine.d.ts.map +1 -1
  6. package/dist/agents/execution-engine.js +2 -15
  7. package/dist/agents/execution-engine.js.map +1 -1
  8. package/dist/agents/lambda-handler.d.ts +2 -5
  9. package/dist/agents/lambda-handler.d.ts.map +1 -1
  10. package/dist/agents/lambda-handler.js +8 -9
  11. package/dist/agents/lambda-handler.js.map +1 -1
  12. package/dist/agents/runner.d.ts.map +1 -1
  13. package/dist/agents/runner.js +2 -15
  14. package/dist/agents/runner.js.map +1 -1
  15. package/dist/agents/signals.d.ts +9 -0
  16. package/dist/agents/signals.d.ts.map +1 -1
  17. package/dist/agents/signals.js +11 -0
  18. package/dist/agents/signals.js.map +1 -1
  19. package/dist/cli/commands/cloud-iam.d.ts +17 -0
  20. package/dist/cli/commands/cloud-iam.d.ts.map +1 -0
  21. package/dist/cli/commands/cloud-iam.js +591 -0
  22. package/dist/cli/commands/cloud-iam.js.map +1 -0
  23. package/dist/cli/commands/cloud-setup-ecs.d.ts +9 -0
  24. package/dist/cli/commands/cloud-setup-ecs.d.ts.map +1 -0
  25. package/dist/cli/commands/cloud-setup-ecs.js +697 -0
  26. package/dist/cli/commands/cloud-setup-ecs.js.map +1 -0
  27. package/dist/cli/commands/cloud-setup.d.ts.map +1 -1
  28. package/dist/cli/commands/cloud-setup.js +2 -827
  29. package/dist/cli/commands/cloud-setup.js.map +1 -1
  30. package/dist/cli/commands/creds.d.ts.map +1 -1
  31. package/dist/cli/commands/creds.js +2 -4
  32. package/dist/cli/commands/creds.js.map +1 -1
  33. package/dist/cli/commands/doctor.d.ts +1 -3
  34. package/dist/cli/commands/doctor.d.ts.map +1 -1
  35. package/dist/cli/commands/doctor.js +60 -635
  36. package/dist/cli/commands/doctor.js.map +1 -1
  37. package/dist/cli/commands/kill.d.ts.map +1 -1
  38. package/dist/cli/commands/kill.js +11 -14
  39. package/dist/cli/commands/kill.js.map +1 -1
  40. package/dist/cli/commands/pause.d.ts.map +1 -1
  41. package/dist/cli/commands/pause.js +11 -14
  42. package/dist/cli/commands/pause.js.map +1 -1
  43. package/dist/cli/commands/resume.d.ts.map +1 -1
  44. package/dist/cli/commands/resume.js +11 -14
  45. package/dist/cli/commands/resume.js.map +1 -1
  46. package/dist/cli/main.js +36 -34
  47. package/dist/cli/main.js.map +1 -1
  48. package/dist/cli/with-command.d.ts +13 -0
  49. package/dist/cli/with-command.d.ts.map +1 -0
  50. package/dist/cli/with-command.js +45 -0
  51. package/dist/cli/with-command.js.map +1 -0
  52. package/dist/cloud/scheduler-image.d.ts.map +1 -1
  53. package/dist/cloud/scheduler-image.js +9 -3
  54. package/dist/cloud/scheduler-image.js.map +1 -1
  55. package/dist/docker/aws-shared.d.ts.map +1 -1
  56. package/dist/docker/aws-shared.js +42 -19
  57. package/dist/docker/aws-shared.js.map +1 -1
  58. package/dist/docker/lambda-runtime.d.ts +2 -0
  59. package/dist/docker/lambda-runtime.d.ts.map +1 -1
  60. package/dist/docker/lambda-runtime.js +28 -10
  61. package/dist/docker/lambda-runtime.js.map +1 -1
  62. package/dist/gateway/index.d.ts +1 -0
  63. package/dist/gateway/index.d.ts.map +1 -1
  64. package/dist/gateway/index.js +5 -2
  65. package/dist/gateway/index.js.map +1 -1
  66. package/dist/gateway/rate-limiter.d.ts +16 -0
  67. package/dist/gateway/rate-limiter.d.ts.map +1 -0
  68. package/dist/gateway/rate-limiter.js +38 -0
  69. package/dist/gateway/rate-limiter.js.map +1 -0
  70. package/dist/gateway/routes/dashboard.d.ts.map +1 -1
  71. package/dist/gateway/routes/dashboard.js +8 -0
  72. package/dist/gateway/routes/dashboard.js.map +1 -1
  73. package/dist/gateway/routes/locks.d.ts +3 -1
  74. package/dist/gateway/routes/locks.d.ts.map +1 -1
  75. package/dist/gateway/routes/locks.js +18 -13
  76. package/dist/gateway/routes/locks.js.map +1 -1
  77. package/dist/gateway/routes/webhooks.d.ts.map +1 -1
  78. package/dist/gateway/routes/webhooks.js +14 -0
  79. package/dist/gateway/routes/webhooks.js.map +1 -1
  80. package/dist/scheduler/index.d.ts +1 -2
  81. package/dist/scheduler/index.d.ts.map +1 -1
  82. package/dist/scheduler/index.js +22 -180
  83. package/dist/scheduler/index.js.map +1 -1
  84. package/dist/scheduler/runtime-factory.d.ts +24 -4
  85. package/dist/scheduler/runtime-factory.d.ts.map +1 -1
  86. package/dist/scheduler/runtime-factory.js +60 -64
  87. package/dist/scheduler/runtime-factory.js.map +1 -1
  88. package/dist/scheduler/webhook-setup.d.ts +11 -20
  89. package/dist/scheduler/webhook-setup.d.ts.map +1 -1
  90. package/dist/scheduler/webhook-setup.js +22 -68
  91. package/dist/scheduler/webhook-setup.js.map +1 -1
  92. package/dist/shared/config.d.ts +1 -0
  93. package/dist/shared/config.d.ts.map +1 -1
  94. package/dist/shared/config.js +13 -2
  95. package/dist/shared/config.js.map +1 -1
  96. package/dist/shared/credentials.d.ts.map +1 -1
  97. package/dist/shared/credentials.js +2 -1
  98. package/dist/shared/credentials.js.map +1 -1
  99. package/dist/shared/errors.d.ts +34 -0
  100. package/dist/shared/errors.d.ts.map +1 -0
  101. package/dist/shared/errors.js +47 -0
  102. package/dist/shared/errors.js.map +1 -0
  103. package/dist/shared/git.d.ts.map +1 -1
  104. package/dist/shared/git.js +3 -2
  105. package/dist/shared/git.js.map +1 -1
  106. package/dist/webhooks/providers/github.d.ts.map +1 -1
  107. package/dist/webhooks/providers/github.js +2 -21
  108. package/dist/webhooks/providers/github.js.map +1 -1
  109. package/dist/webhooks/providers/linear.d.ts.map +1 -1
  110. package/dist/webhooks/providers/linear.js +2 -21
  111. package/dist/webhooks/providers/linear.js.map +1 -1
  112. package/dist/webhooks/providers/sentry.d.ts.map +1 -1
  113. package/dist/webhooks/providers/sentry.js +2 -20
  114. package/dist/webhooks/providers/sentry.js.map +1 -1
  115. package/dist/webhooks/validation.d.ts +17 -0
  116. package/dist/webhooks/validation.d.ts.map +1 -0
  117. package/dist/webhooks/validation.js +37 -0
  118. package/dist/webhooks/validation.js.map +1 -0
  119. package/docker/Dockerfile +6 -9
  120. package/docker/bin/al-call +8 -0
  121. package/docker/bin/al-check +4 -0
  122. package/docker/bin/al-exit +4 -0
  123. package/docker/bin/al-rerun +8 -0
  124. package/docker/bin/al-return +14 -0
  125. package/docker/bin/al-shutdown +5 -0
  126. package/docker/bin/al-status +9 -0
  127. package/docker/bin/al-wait +29 -0
  128. package/docker/bin/rlock +5 -0
  129. package/docker/bin/rlock-heartbeat +5 -0
  130. package/docker/bin/runlock +5 -0
  131. package/package.json +1 -1
  132. package/dist/scheduler/config-validator.d.ts +0 -18
  133. package/dist/scheduler/config-validator.d.ts.map +0 -1
  134. package/dist/scheduler/config-validator.js +0 -53
  135. package/dist/scheduler/config-validator.js.map +0 -1
  136. package/dist/scheduler/cron-manager.d.ts +0 -14
  137. package/dist/scheduler/cron-manager.d.ts.map +0 -1
  138. package/dist/scheduler/cron-manager.js +0 -75
  139. package/dist/scheduler/cron-manager.js.map +0 -1
  140. package/dist/scheduler/shutdown-handler.d.ts +0 -16
  141. package/dist/scheduler/shutdown-handler.d.ts.map +0 -1
  142. package/dist/scheduler/shutdown-handler.js +0 -44
  143. package/dist/scheduler/shutdown-handler.js.map +0 -1
  144. package/dist/scheduler/trigger-dispatcher.d.ts +0 -12
  145. package/dist/scheduler/trigger-dispatcher.d.ts.map +0 -1
  146. package/dist/scheduler/trigger-dispatcher.js +0 -46
  147. package/dist/scheduler/trigger-dispatcher.js.map +0 -1
@@ -1,29 +1,35 @@
1
- import { execFileSync } from "child_process";
1
+ /**
2
+ * Container runtime factory.
3
+ *
4
+ * Creates the appropriate ContainerRuntime (local Docker, Cloud Run, ECS/Lambda)
5
+ * based on the project's global config and cloud mode flag.
6
+ */
7
+ import { ConfigError, AgentError } from "../shared/errors.js";
8
+ import { AWS_CONSTANTS } from "../shared/aws-constants.js";
2
9
  import { buildAllImages } from "../cloud/image-builder.js";
3
- import { ensureNetwork } from "../docker/network.js";
4
- export async function createRuntime(globalConfig, cloudMode, logger) {
10
+ export async function createContainerRuntime(globalConfig, activeAgentConfigs, cloudMode, logger) {
5
11
  const useCloudRuntime = cloudMode && globalConfig.cloud;
6
12
  const runtimeType = useCloudRuntime ? globalConfig.cloud.provider : "local";
7
- logger.info({ runtime: runtimeType }, "Docker mode enabled — initializing infrastructure");
13
+ let runtime;
14
+ const agentRuntimeOverrides = {};
8
15
  if (useCloudRuntime && globalConfig.cloud.provider === "cloud-run") {
9
16
  const { CloudRunJobRuntime } = await import("../docker/cloud-run-runtime.js");
10
17
  const { gcpProject, region, artifactRegistry, serviceAccount, secretPrefix } = globalConfig.cloud;
11
18
  if (!gcpProject || !region || !artifactRegistry || !serviceAccount) {
12
- throw new Error("Cloud Run runtime requires cloud.gcpProject, cloud.region, " +
19
+ throw new ConfigError("Cloud Run runtime requires cloud.gcpProject, cloud.region, " +
13
20
  "cloud.artifactRegistry, and cloud.serviceAccount in config.toml");
14
21
  }
15
- const runtime = new CloudRunJobRuntime({ gcpProject, region, artifactRegistry, serviceAccount, secretPrefix });
22
+ runtime = new CloudRunJobRuntime({ gcpProject, region, artifactRegistry, serviceAccount, secretPrefix });
16
23
  logger.info({ gcpProject, region }, "Using Cloud Run Jobs runtime");
17
- return runtime;
18
24
  }
19
- if (useCloudRuntime && globalConfig.cloud.provider === "ecs") {
25
+ else if (useCloudRuntime && globalConfig.cloud.provider === "ecs") {
20
26
  const { ECSFargateRuntime } = await import("../docker/ecs-runtime.js");
21
27
  const cc = globalConfig.cloud;
22
28
  if (!cc.awsRegion || !cc.ecsCluster || !cc.ecrRepository || !cc.executionRoleArn || !cc.taskRoleArn || !cc.subnets?.length) {
23
- throw new Error("ECS runtime requires cloud.awsRegion, cloud.ecsCluster, cloud.ecrRepository, " +
29
+ throw new ConfigError("ECS runtime requires cloud.awsRegion, cloud.ecsCluster, cloud.ecrRepository, " +
24
30
  "cloud.executionRoleArn, cloud.taskRoleArn, and cloud.subnets in config.toml");
25
31
  }
26
- const runtime = new ECSFargateRuntime({
32
+ runtime = new ECSFargateRuntime({
27
33
  awsRegion: cc.awsRegion,
28
34
  ecsCluster: cc.ecsCluster,
29
35
  ecrRepository: cc.ecrRepository,
@@ -34,65 +40,55 @@ export async function createRuntime(globalConfig, cloudMode, logger) {
34
40
  secretPrefix: cc.awsSecretPrefix,
35
41
  buildBucket: cc.buildBucket,
36
42
  });
43
+ // Create Lambda runtime for short-running agents (timeout <= 900s)
44
+ const { LambdaRuntime } = await import("../docker/lambda-runtime.js");
45
+ const lambdaRuntime = new LambdaRuntime({
46
+ awsRegion: cc.awsRegion,
47
+ ecrRepository: cc.ecrRepository,
48
+ secretPrefix: cc.awsSecretPrefix,
49
+ buildBucket: cc.buildBucket,
50
+ lambdaRoleArn: cc.lambdaRoleArn,
51
+ lambdaSubnets: cc.lambdaSubnets,
52
+ lambdaSecurityGroups: cc.lambdaSecurityGroups,
53
+ });
54
+ for (const ac of activeAgentConfigs) {
55
+ const effectiveTimeout = ac.timeout ?? globalConfig.local?.timeout ?? 900;
56
+ if (effectiveTimeout <= AWS_CONSTANTS.LAMBDA_MAX_TIMEOUT) {
57
+ agentRuntimeOverrides[ac.name] = lambdaRuntime;
58
+ logger.info({ agent: ac.name, timeout: effectiveTimeout }, "Routing to Lambda (timeout <= 900s)");
59
+ }
60
+ }
37
61
  logger.info({ region: cc.awsRegion, cluster: cc.ecsCluster }, "Using ECS Fargate runtime");
38
- return runtime;
39
- }
40
- // Local runtime needs Docker running
41
- try {
42
- execFileSync("docker", ["info"], { stdio: "pipe", timeout: 10000 });
43
62
  }
44
- catch {
45
- throw new Error("Docker is not running. Start Docker Desktop (or the Docker daemon) and try again.");
63
+ else {
64
+ // Local runtime needs Docker running
65
+ const { execFileSync } = await import("child_process");
66
+ try {
67
+ execFileSync("docker", ["info"], { stdio: "pipe", timeout: 10000 });
68
+ }
69
+ catch {
70
+ throw new AgentError("Docker is not running. Start Docker Desktop (or the Docker daemon) and try again.");
71
+ }
72
+ const { LocalDockerRuntime } = await import("../docker/local-runtime.js");
73
+ runtime = new LocalDockerRuntime();
74
+ // Local-only: ensure Docker network
75
+ logger.info("Ensuring Docker network...");
76
+ const { ensureNetwork } = await import("../docker/network.js");
77
+ ensureNetwork();
46
78
  }
47
- const { LocalDockerRuntime } = await import("../docker/local-runtime.js");
48
- const runtime = new LocalDockerRuntime();
49
- // Local-only: ensure Docker network
50
- logger.info("Ensuring Docker network...");
51
- ensureNetwork();
52
- return runtime;
79
+ return { runtime: runtime, agentRuntimeOverrides, runtimeType };
53
80
  }
54
- export async function buildAgentImages(runtime, projectPath, globalConfig, activeAgentConfigs, cloudMode, statusTracker, logger) {
55
- const useCloudRuntime = cloudMode && globalConfig.cloud;
56
- const runtimeType = useCloudRuntime ? globalConfig.cloud.provider : "local";
57
- // Build base + per-agent images via shared image builder
58
- const buildSkills = { locking: true };
81
+ export async function buildAgentImages(opts) {
59
82
  const buildResult = await buildAllImages({
60
- projectPath,
61
- globalConfig,
62
- activeAgentConfigs,
63
- runtime,
64
- runtimeType,
65
- statusTracker,
66
- logger: logger, // We'll ensure it's provided when called
67
- skills: buildSkills,
83
+ projectPath: opts.projectPath,
84
+ globalConfig: opts.globalConfig,
85
+ activeAgentConfigs: opts.activeAgentConfigs,
86
+ runtime: opts.runtime,
87
+ runtimeType: opts.runtimeType,
88
+ statusTracker: opts.statusTracker,
89
+ logger: opts.logger,
90
+ skills: opts.skills,
68
91
  });
69
- return {
70
- baseImage: buildResult.baseImage,
71
- agentImages: buildResult.agentImages
72
- };
73
- }
74
- export function selectAgentRuntimes(globalConfig, activeAgentConfigs, runtime, cloudMode, logger) {
75
- const agentRuntimeOverrides = {};
76
- // Only for ECS cloud mode - create Lambda runtime for short-running agents
77
- if (cloudMode && globalConfig.cloud?.provider === "ecs") {
78
- const cc = globalConfig.cloud;
79
- // Import and create Lambda runtime (async import handled by caller)
80
- const createLambdaRuntime = async () => {
81
- const { LambdaRuntime } = await import("../docker/lambda-runtime.js");
82
- return new LambdaRuntime({
83
- awsRegion: cc.awsRegion,
84
- ecrRepository: cc.ecrRepository,
85
- secretPrefix: cc.awsSecretPrefix,
86
- buildBucket: cc.buildBucket,
87
- lambdaRoleArn: cc.lambdaRoleArn,
88
- lambdaSubnets: cc.lambdaSubnets,
89
- lambdaSecurityGroups: cc.lambdaSecurityGroups,
90
- });
91
- };
92
- // This function can't be async, so we'll return a promise to be handled by caller
93
- // For now, return empty overrides and handle Lambda runtime setup in scheduler
94
- return {};
95
- }
96
- return agentRuntimeOverrides;
92
+ return { baseImage: buildResult.baseImage, agentImages: buildResult.agentImages };
97
93
  }
98
94
  //# sourceMappingURL=runtime-factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-factory.js","sourceRoot":"","sources":["../../src/scheduler/runtime-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-factory.js","sourceRoot":"","sources":["../../src/scheduler/runtime-factory.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,19 @@
1
- import type { GlobalConfig, AgentConfig, WebhookSourceConfig } from "../shared/config.js";
1
+ /**
2
+ * Webhook registry setup and helper functions.
3
+ *
4
+ * Extracted from scheduler/index.ts to keep webhook-specific logic separate
5
+ * from the main scheduling orchestrator.
6
+ */
7
+ import type { GlobalConfig, WebhookSourceConfig } from "../shared/config.js";
2
8
  import type { Logger } from "../shared/logger.js";
3
9
  import { WebhookRegistry } from "../webhooks/registry.js";
4
- import type { WebhookContext, WebhookFilter, WebhookTrigger } from "../webhooks/types.js";
5
- import type { RunnerPool } from "./runner-pool.js";
10
+ import type { WebhookFilter, WebhookTrigger } from "../webhooks/types.js";
11
+ export declare const PROVIDER_TO_CREDENTIAL: Record<string, string>;
6
12
  export declare function resolveWebhookSource(sourceName: string, agentName: string, webhookSources: Record<string, WebhookSourceConfig>): WebhookSourceConfig;
7
13
  export declare function buildFilterFromTrigger(trigger: WebhookTrigger, providerType: string): WebhookFilter | undefined;
8
- export declare function setupWebhookRegistry(globalConfig: GlobalConfig, activeAgentConfigs: AgentConfig[], logger: Logger): Promise<{
14
+ export interface WebhookSetupResult {
9
15
  registry?: WebhookRegistry;
10
16
  secrets: Record<string, Record<string, string>>;
11
- }>;
12
- export interface SchedulerContext {
13
- runnerPools: Record<string, RunnerPool>;
14
- agentConfigs: AgentConfig[];
15
- maxReruns: number;
16
- maxTriggerDepth: number;
17
- logger: Logger;
18
- webhookQueue: any;
19
- shuttingDown: boolean;
20
- skills?: any;
21
- useBakedImages: boolean;
22
- triggerDispatcher: any;
23
17
  }
24
- export declare function bindWebhooksToAgents(registry: WebhookRegistry, agentConfigs: AgentConfig[], runnerPools: Record<string, RunnerPool>, webhookSources: Record<string, WebhookSourceConfig>, ctx: SchedulerContext, makeWebhookPrompt: (agentConfig: AgentConfig, context: WebhookContext, ctx: SchedulerContext) => string, dispatchTriggers: (triggers: Array<{
25
- agent: string;
26
- context: string;
27
- }>, sourceAgent: string, depth: number, ctx: SchedulerContext) => void, drainWebhookQueue: (agentConfig: AgentConfig, ctx: SchedulerContext) => Promise<void>, statusTracker?: any): void;
18
+ export declare function setupWebhookRegistry(globalConfig: GlobalConfig, logger: Logger): Promise<WebhookSetupResult>;
28
19
  //# sourceMappingURL=webhook-setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/webhook-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAiE,MAAM,sBAAsB,CAAC;AACzJ,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAClD,mBAAmB,CAUrB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CA4B/G;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,WAAW,EAAE,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAC,CAAC,CAsCxF;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,GAAG,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,WAAW,EAAE,EAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACnD,GAAG,EAAE,gBAAgB,EACrB,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,gBAAgB,KAAK,MAAM,EACvG,gBAAgB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,KAAK,IAAI,EAC1I,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,EACrF,aAAa,CAAC,EAAE,GAAG,GAClB,IAAI,CA4DN"}
1
+ {"version":3,"file":"webhook-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/webhook-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAiE,MAAM,sBAAsB,CAAC;AAGzI,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIzD,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAClD,mBAAmB,CAUrB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CA4B/G;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAiC7B"}
@@ -1,10 +1,16 @@
1
+ /**
2
+ * Webhook registry setup and helper functions.
3
+ *
4
+ * Extracted from scheduler/index.ts to keep webhook-specific logic separate
5
+ * from the main scheduling orchestrator.
6
+ */
1
7
  import { listCredentialInstances, loadCredentialField } from "../shared/credentials.js";
2
8
  import { WebhookRegistry } from "../webhooks/registry.js";
3
9
  import { GitHubWebhookProvider } from "../webhooks/providers/github.js";
4
10
  import { SentryWebhookProvider } from "../webhooks/providers/sentry.js";
5
11
  import { LinearWebhookProvider } from "../webhooks/providers/linear.js";
6
12
  // Provider type → credential type for loading secrets
7
- const PROVIDER_TO_CREDENTIAL = {
13
+ export const PROVIDER_TO_CREDENTIAL = {
8
14
  github: "github_webhook_secret",
9
15
  sentry: "sentry_client_secret",
10
16
  linear: "linear_webhook_secret",
@@ -61,86 +67,34 @@ export function buildFilterFromTrigger(trigger, providerType) {
61
67
  }
62
68
  return undefined;
63
69
  }
64
- export async function setupWebhookRegistry(globalConfig, activeAgentConfigs, logger) {
65
- const anyWebhooks = activeAgentConfigs.some((a) => a.webhooks?.length);
66
- if (!anyWebhooks) {
70
+ export async function setupWebhookRegistry(globalConfig, logger) {
71
+ const webhookSources = globalConfig.webhooks ?? {};
72
+ const providerTypes = new Set(Object.values(webhookSources).map(s => s.type));
73
+ if (providerTypes.size === 0) {
67
74
  return { secrets: {} };
68
75
  }
69
- const webhookRegistry = new WebhookRegistry(logger);
70
- // Register providers
71
- webhookRegistry.registerProvider(new GitHubWebhookProvider());
72
- webhookRegistry.registerProvider(new SentryWebhookProvider());
73
- webhookRegistry.registerProvider(new LinearWebhookProvider());
74
- // Resolve webhook sources from global config
75
- const webhookSources = globalConfig.webhooks ?? {};
76
+ const registry = new WebhookRegistry(logger);
77
+ registry.registerProvider(new GitHubWebhookProvider());
78
+ registry.registerProvider(new SentryWebhookProvider());
79
+ registry.registerProvider(new LinearWebhookProvider());
76
80
  // Load secrets for each provider type referenced by webhook sources
77
- const providerTypes = new Set(Object.values(webhookSources).map(s => s.type));
78
- const webhookSecrets = {};
81
+ const secrets = {};
79
82
  for (const providerType of providerTypes) {
80
83
  const credType = PROVIDER_TO_CREDENTIAL[providerType];
81
84
  if (!credType)
82
85
  continue;
83
86
  const instances = await listCredentialInstances(credType);
84
- const secrets = {};
87
+ const providerSecrets = {};
85
88
  for (const inst of instances) {
86
89
  const secret = await loadCredentialField(credType, inst, "secret");
87
90
  if (secret)
88
- secrets[inst] = secret;
91
+ providerSecrets[inst] = secret;
89
92
  }
90
- if (Object.keys(secrets).length > 0) {
91
- webhookSecrets[providerType] = secrets;
92
- logger.info({ providerType, count: Object.keys(secrets).length }, "loaded webhook secrets");
93
- }
94
- }
95
- return { registry: webhookRegistry, secrets: webhookSecrets };
96
- }
97
- export function bindWebhooksToAgents(registry, agentConfigs, runnerPools, webhookSources, ctx, makeWebhookPrompt, dispatchTriggers, drainWebhookQueue, statusTracker // StatusTracker
98
- ) {
99
- const activeAgentConfigs = agentConfigs.filter((a) => (a.scale ?? 1) > 0);
100
- for (const agentConfig of activeAgentConfigs) {
101
- if (!agentConfig.webhooks?.length)
102
- continue;
103
- const pool = runnerPools[agentConfig.name];
104
- for (const trigger of agentConfig.webhooks) {
105
- const sourceConfig = resolveWebhookSource(trigger.source, agentConfig.name, webhookSources);
106
- const providerType = sourceConfig.type;
107
- const filter = buildFilterFromTrigger(trigger, providerType);
108
- registry.addBinding({
109
- agentName: agentConfig.name,
110
- source: sourceConfig.credential,
111
- type: providerType,
112
- filter,
113
- trigger: (context) => {
114
- // Skip if agent is disabled
115
- if (statusTracker && !statusTracker.isAgentEnabled(agentConfig.name)) {
116
- ctx.logger.info({ agent: agentConfig.name, event: context.event }, "agent is disabled, ignoring webhook event");
117
- return;
118
- }
119
- const availableRunner = pool.getAvailableRunner();
120
- if (!availableRunner) {
121
- const { accepted, dropped } = ctx.webhookQueue.enqueue(agentConfig.name, context);
122
- if (accepted) {
123
- ctx.logger.info({ agent: agentConfig.name, event: context.event, queueSize: ctx.webhookQueue.size(agentConfig.name), running: pool.runningJobCount, scale: pool.size }, "all agent runners busy, webhook event queued");
124
- }
125
- if (dropped) {
126
- ctx.logger.warn({ agent: agentConfig.name, droppedEvent: dropped.context.event }, "webhook queue full, oldest event dropped");
127
- }
128
- return;
129
- }
130
- ctx.logger.info({ agent: agentConfig.name, event: context.event, action: context.action, running: pool.runningJobCount, scale: pool.size }, "webhook triggering agent");
131
- const prompt = makeWebhookPrompt(agentConfig, context, ctx);
132
- availableRunner.run(prompt, { type: 'webhook', source: context.event }).then(({ triggers }) => {
133
- if (triggers.length > 0) {
134
- dispatchTriggers(triggers, agentConfig.name, 0, ctx);
135
- }
136
- // Drain any events that queued while this webhook run was executing
137
- return drainWebhookQueue(agentConfig, ctx);
138
- }).catch((err) => {
139
- ctx.logger.error({ err }, `${agentConfig.name} webhook run failed`);
140
- });
141
- },
142
- });
93
+ if (Object.keys(providerSecrets).length > 0) {
94
+ secrets[providerType] = providerSecrets;
95
+ logger.info({ providerType, count: Object.keys(providerSecrets).length }, "loaded webhook secrets");
143
96
  }
144
97
  }
98
+ return { registry, secrets };
145
99
  }
146
100
  //# sourceMappingURL=webhook-setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-setup.js","sourceRoot":"","sources":["../../src/scheduler/webhook-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-setup.js","sourceRoot":"","sources":["../../src/scheduler/webhook-setup.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,7 @@ export interface AgentConfig {
71
71
  }
72
72
  export declare function loadGlobalConfig(projectPath: string): GlobalConfig;
73
73
  export declare function loadAgentConfig(projectPath: string, agentName: string): AgentConfig;
74
+ export declare function validateAgentName(name: string): void;
74
75
  export declare function validateAgentConfig(config: AgentConfig): void;
75
76
  export declare function discoverAgents(projectPath: string): string[];
76
77
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { readFileSync, existsSync, readdirSync, statSync } from "fs";
2
2
  import { resolve } from "path";
3
3
  import { parse as parseTOML } from "smol-toml";
4
+ import { ConfigError } from "./errors.js";
4
5
  // --- Loaders ---
5
6
  export function loadGlobalConfig(projectPath) {
6
7
  const configPath = resolve(projectPath, "config.toml");
@@ -14,7 +15,7 @@ export function loadAgentConfig(projectPath, agentName) {
14
15
  const agentDir = resolve(projectPath, agentName);
15
16
  const tomlPath = resolve(agentDir, "agent-config.toml");
16
17
  if (!existsSync(tomlPath)) {
17
- throw new Error(`Agent config not found at ${tomlPath}.`);
18
+ throw new ConfigError(`Agent config not found at ${tomlPath}.`);
18
19
  }
19
20
  const raw = readFileSync(tomlPath, "utf-8");
20
21
  const parsed = parseTOML(raw);
@@ -28,12 +29,22 @@ export function loadAgentConfig(projectPath, agentName) {
28
29
  }
29
30
  return parsed;
30
31
  }
32
+ const AGENT_NAME_PATTERN = /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/;
33
+ export function validateAgentName(name) {
34
+ if (!name || name.length > 63) {
35
+ throw new ConfigError(`Agent name "${name}" is invalid: must be 1-63 characters.`);
36
+ }
37
+ if (!AGENT_NAME_PATTERN.test(name)) {
38
+ throw new ConfigError(`Agent name "${name}" is invalid: must contain only lowercase letters, numbers, and hyphens (cannot start or end with a hyphen).`);
39
+ }
40
+ }
31
41
  export function validateAgentConfig(config) {
42
+ validateAgentName(config.name);
32
43
  // scale = 0 disables the agent — skip schedule/webhook requirement
33
44
  if (config.scale === 0)
34
45
  return;
35
46
  if (!config.schedule && (!config.webhooks || config.webhooks.length === 0)) {
36
- throw new Error(`Agent "${config.name}" must have a schedule, webhooks, or both.`);
47
+ throw new ConfigError(`Agent "${config.name}" must have a schedule, webhooks, or both.`);
37
48
  }
38
49
  }
39
50
  export function discoverAgents(projectPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAyF/C,kBAAkB;AAElB,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC,GAAG,CAA4B,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,SAAiB;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAA2B,CAAC;IACxD,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAExB,8DAA8D;IAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,mEAAmE;IACnE,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO;IAE/B,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,IAAI,4CAA4C,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAClC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAAE,SAAS;QACjD,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/shared/credentials.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMjE;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAErD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAIlF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAKD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEpH;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAEtH;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtH;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzH;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE7E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIzD"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/shared/credentials.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAOjE;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAErD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAIlF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAKD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEpH;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAEtH;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtH;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzH;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE7E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIzD"}
@@ -1,6 +1,7 @@
1
1
  import { resolve } from "path";
2
2
  import { CREDENTIALS_DIR } from "./paths.js";
3
3
  import { FilesystemBackend } from "./filesystem-backend.js";
4
+ import { CredentialError } from "./errors.js";
4
5
  // Default backend instance (local filesystem)
5
6
  let _defaultBackend = new FilesystemBackend();
6
7
  /**
@@ -84,7 +85,7 @@ export async function requireCredentialRef(ref) {
84
85
  const { type, instance } = parseCredentialRef(ref);
85
86
  const exists = await _defaultBackend.exists(type, instance);
86
87
  if (!exists) {
87
- throw new Error(`Credential "${ref}" not found. Run 'al doctor' to configure it.`);
88
+ throw new CredentialError(`Credential "${ref}" not found. Run 'al doctor' to configure it.`);
88
89
  }
89
90
  }
90
91
  // --- Env-var-safe encoding for credential parts ---
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/shared/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/shared/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Custom error classes for Action Llama.
3
+ *
4
+ * Using typed errors instead of generic Error enables the CLI wrapper
5
+ * to provide context-aware error messages and recovery hints.
6
+ */
7
+ export declare class ConfigError extends Error {
8
+ name: string;
9
+ constructor(message: string, options?: {
10
+ cause?: unknown;
11
+ });
12
+ }
13
+ export declare class CredentialError extends Error {
14
+ name: string;
15
+ constructor(message: string, options?: {
16
+ cause?: unknown;
17
+ });
18
+ }
19
+ export declare class CloudProviderError extends Error {
20
+ name: string;
21
+ constructor(message: string, options?: {
22
+ cause?: unknown;
23
+ });
24
+ }
25
+ export declare class AgentError extends Error {
26
+ name: string;
27
+ constructor(message: string, options?: {
28
+ cause?: unknown;
29
+ });
30
+ }
31
+ export declare const UNRECOVERABLE_PATTERNS: string[];
32
+ export declare function isUnrecoverableError(text: string): boolean;
33
+ export declare const UNRECOVERABLE_THRESHOLD = 3;
34
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAa,WAAY,SAAQ,KAAK;IAC3B,IAAI,SAAiB;gBAElB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAG3D;AAED,qBAAa,eAAgB,SAAQ,KAAK;IAC/B,IAAI,SAAqB;gBAEtB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAG3D;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAClC,IAAI,SAAwB;gBAEzB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAG3D;AAED,qBAAa,UAAW,SAAQ,KAAK;IAC1B,IAAI,SAAgB;gBAEjB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAG3D;AAKD,eAAO,MAAM,sBAAsB,UAQlC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,eAAO,MAAM,uBAAuB,IAAI,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Custom error classes for Action Llama.
3
+ *
4
+ * Using typed errors instead of generic Error enables the CLI wrapper
5
+ * to provide context-aware error messages and recovery hints.
6
+ */
7
+ export class ConfigError extends Error {
8
+ name = "ConfigError";
9
+ constructor(message, options) {
10
+ super(message, options);
11
+ }
12
+ }
13
+ export class CredentialError extends Error {
14
+ name = "CredentialError";
15
+ constructor(message, options) {
16
+ super(message, options);
17
+ }
18
+ }
19
+ export class CloudProviderError extends Error {
20
+ name = "CloudProviderError";
21
+ constructor(message, options) {
22
+ super(message, options);
23
+ }
24
+ }
25
+ export class AgentError extends Error {
26
+ name = "AgentError";
27
+ constructor(message, options) {
28
+ super(message, options);
29
+ }
30
+ }
31
+ // --- Unrecoverable error detection ---
32
+ // Consolidated from agents/runner.ts and agents/execution-engine.ts.
33
+ export const UNRECOVERABLE_PATTERNS = [
34
+ "permission denied",
35
+ "could not read from remote repository",
36
+ "resource not accessible by personal access token",
37
+ "bad credentials",
38
+ "authentication failed",
39
+ "the requested url returned error: 403",
40
+ "denied to ",
41
+ ];
42
+ export function isUnrecoverableError(text) {
43
+ const lower = text.toLowerCase();
44
+ return UNRECOVERABLE_PATTERNS.some((p) => lower.includes(p));
45
+ }
46
+ export const UNRECOVERABLE_THRESHOLD = 3;
47
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,GAAG,aAAa,CAAC;IAE9B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IAElC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,oBAAoB,CAAC;IAErC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,GAAG,YAAY,CAAC;IAE7B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,wCAAwC;AACxC,qEAAqE;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,mBAAmB;IACnB,uCAAuC;IACvC,kDAAkD;IAClD,iBAAiB;IACjB,uBAAuB;IACvB,uCAAuC;IACvC,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/shared/git.ts"],"names":[],"mappings":"AAOA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAOzD"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/shared/git.ts"],"names":[],"mappings":"AAOA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzD"}
@@ -1,4 +1,4 @@
1
- import { execSync } from "child_process";
1
+ import { execFileSync } from "child_process";
2
2
  import { existsSync } from "fs";
3
3
  import { resolve } from "path";
4
4
  import { CREDENTIALS_DIR } from "./paths.js";
@@ -14,7 +14,8 @@ function gitSshEnv() {
14
14
  return env;
15
15
  }
16
16
  export function gitExec(cmd, cwd) {
17
- return execSync(cmd, {
17
+ const args = cmd.split(/\s+/);
18
+ return execFileSync(args[0], args.slice(1), {
18
19
  cwd,
19
20
  encoding: "utf-8",
20
21
  timeout: 120000,