@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 +0,0 @@
1
- {"version":3,"file":"shutdown-handler.d.ts","sourceRoot":"","sources":["../../src/scheduler/shutdown-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,MAAM;IAI1B,QAAQ,CACN,QAAQ,EAAE,IAAI,EAAE,EAChB,OAAO,CAAC,EAAE,aAAa,EACvB,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAC5B,IAAI;YAYO,QAAQ;IAyBhB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvC"}
@@ -1,44 +0,0 @@
1
- export class ShutdownHandler {
2
- cronJobs = [];
3
- gateway;
4
- webhookQueue;
5
- logger;
6
- registered = false;
7
- constructor(logger) {
8
- this.logger = logger;
9
- }
10
- register(cronJobs, gateway, webhookQueue) {
11
- this.cronJobs = cronJobs;
12
- this.gateway = gateway;
13
- this.webhookQueue = webhookQueue;
14
- if (!this.registered) {
15
- process.on("SIGINT", this.shutdown.bind(this));
16
- process.on("SIGTERM", this.shutdown.bind(this));
17
- this.registered = true;
18
- }
19
- }
20
- async shutdown() {
21
- this.logger.info("Shutting down scheduler...");
22
- // Mark as shutting down and clear webhook queue
23
- if (this.webhookQueue) {
24
- this.webhookQueue.clearAll();
25
- }
26
- // Stop all cron jobs
27
- for (const job of this.cronJobs) {
28
- job.stop();
29
- }
30
- this.logger.info("All cron jobs stopped");
31
- // Close gateway server
32
- if (this.gateway) {
33
- await this.gateway.close();
34
- this.logger.info("Gateway server stopped");
35
- }
36
- this.logger.info("Shutdown complete");
37
- process.exit(0);
38
- }
39
- // Method to trigger shutdown programmatically (for testing or manual shutdown)
40
- async triggerShutdown() {
41
- await this.shutdown();
42
- }
43
- }
44
- //# sourceMappingURL=shutdown-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shutdown-handler.js","sourceRoot":"","sources":["../../src/scheduler/shutdown-handler.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAW,EAAE,CAAC;IACtB,OAAO,CAAiB;IACxB,YAAY,CAAkB;IAC9B,MAAM,CAAS;IACf,UAAU,GAAG,KAAK,CAAC;IAE3B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CACN,QAAgB,EAChB,OAAuB,EACvB,YAA6B;QAE7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAE/C,gDAAgD;QAChD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC;QAED,qBAAqB;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE1C,uBAAuB;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { AgentConfig } from "../shared/config.js";
2
- import type { SchedulerContext } from "./webhook-setup.js";
3
- export interface TriggerRequest {
4
- agent: string;
5
- context: string;
6
- }
7
- export declare class TriggerDispatcher {
8
- constructor();
9
- dispatchTriggers(triggers: TriggerRequest[], sourceAgent: string, depth: number, ctx: SchedulerContext, makeTriggeredPrompt: (agentConfig: AgentConfig, sourceAgent: string, context: string, ctx: SchedulerContext) => string): void;
10
- private runTriggered;
11
- }
12
- //# sourceMappingURL=trigger-dispatcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trigger-dispatcher.d.ts","sourceRoot":"","sources":["../../src/scheduler/trigger-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;;IAG5B,gBAAgB,CACd,QAAQ,EAAE,cAAc,EAAE,EAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,gBAAgB,EACrB,mBAAmB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,KAAK,MAAM,GACrH,IAAI;YAiCO,YAAY;CAoB3B"}
@@ -1,46 +0,0 @@
1
- export class TriggerDispatcher {
2
- constructor() { }
3
- dispatchTriggers(triggers, sourceAgent, depth, ctx, makeTriggeredPrompt) {
4
- for (const { agent, context } of triggers) {
5
- if (agent === sourceAgent) {
6
- ctx.logger.warn({ source: sourceAgent }, "agent cannot trigger itself, skipping");
7
- continue;
8
- }
9
- if (depth >= ctx.maxTriggerDepth) {
10
- ctx.logger.warn({ source: sourceAgent, target: agent, depth, maxTriggerDepth: ctx.maxTriggerDepth }, "trigger depth limit reached, skipping");
11
- continue;
12
- }
13
- const targetConfig = ctx.agentConfigs.find((a) => a.name === agent);
14
- if (!targetConfig) {
15
- ctx.logger.warn({ source: sourceAgent, target: agent }, "trigger target agent not found, skipping");
16
- continue;
17
- }
18
- const pool = ctx.runnerPools[agent];
19
- if (pool.size === 0) {
20
- ctx.logger.info({ source: sourceAgent, target: agent }, "agent is disabled (scale=0), skipping trigger");
21
- continue;
22
- }
23
- const availableRunner = pool.getAvailableRunner();
24
- if (!availableRunner) {
25
- ctx.logger.warn({ source: sourceAgent, target: agent, running: pool.runningJobCount, scale: pool.size }, "all agent runners busy, skipping trigger");
26
- continue;
27
- }
28
- ctx.logger.info({ source: sourceAgent, target: agent, depth, running: pool.runningJobCount, scale: pool.size }, "agent trigger firing");
29
- const prompt = makeTriggeredPrompt(targetConfig, sourceAgent, context, ctx);
30
- this.runTriggered(availableRunner, targetConfig, prompt, sourceAgent, depth + 1, ctx, makeTriggeredPrompt).catch((err) => {
31
- ctx.logger.error({ err, target: agent }, "triggered run failed");
32
- });
33
- }
34
- }
35
- async runTriggered(runner, agentConfig, prompt, sourceAgent, depth, ctx, makeTriggeredPrompt) {
36
- const { result, triggers } = await runner.run(prompt, { type: 'agent', source: sourceAgent });
37
- if (triggers.length > 0) {
38
- this.dispatchTriggers(triggers, agentConfig.name, depth, ctx, makeTriggeredPrompt);
39
- }
40
- // No reruns for triggered runs — they respond to a specific event
41
- if (result === "completed") {
42
- ctx.logger.info(`${agentConfig.name} triggered run completed`);
43
- }
44
- }
45
- }
46
- //# sourceMappingURL=trigger-dispatcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trigger-dispatcher.js","sourceRoot":"","sources":["../../src/scheduler/trigger-dispatcher.ts"],"names":[],"mappings":"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"}