@action-llama/action-llama 0.27.5 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/agents/credential-setup.d.ts +0 -1
  2. package/dist/agents/credential-setup.d.ts.map +1 -1
  3. package/dist/agents/credential-setup.js +2 -23
  4. package/dist/agents/credential-setup.js.map +1 -1
  5. package/dist/agents/prompt.js +1 -1
  6. package/dist/agents/prompt.js.map +1 -1
  7. package/dist/agents/scheduler-tools.d.ts +40 -0
  8. package/dist/agents/scheduler-tools.d.ts.map +1 -0
  9. package/dist/agents/scheduler-tools.js +178 -0
  10. package/dist/agents/scheduler-tools.js.map +1 -0
  11. package/dist/agents/transport-runner.d.ts +95 -0
  12. package/dist/agents/transport-runner.d.ts.map +1 -0
  13. package/dist/agents/transport-runner.js +653 -0
  14. package/dist/agents/transport-runner.js.map +1 -0
  15. package/dist/build-info.json +1 -1
  16. package/dist/cli/commands/add.d.ts +1 -0
  17. package/dist/cli/commands/add.d.ts.map +1 -1
  18. package/dist/cli/commands/add.js +24 -9
  19. package/dist/cli/commands/add.js.map +1 -1
  20. package/dist/cli/commands/agent.d.ts +0 -3
  21. package/dist/cli/commands/agent.d.ts.map +1 -1
  22. package/dist/cli/commands/agent.js +3 -67
  23. package/dist/cli/commands/agent.js.map +1 -1
  24. package/dist/cli/main.js +1 -30
  25. package/dist/cli/main.js.map +1 -1
  26. package/dist/control/routes/dashboard-api.js +1 -1
  27. package/dist/control/routes/dashboard-api.js.map +1 -1
  28. package/dist/control/routes/log-helpers.d.ts +4 -4
  29. package/dist/control/routes/log-helpers.d.ts.map +1 -1
  30. package/dist/control/routes/log-helpers.js +12 -7
  31. package/dist/control/routes/log-helpers.js.map +1 -1
  32. package/dist/control/routes/logs.d.ts.map +1 -1
  33. package/dist/control/routes/logs.js +10 -10
  34. package/dist/control/routes/logs.js.map +1 -1
  35. package/dist/docker/providers/index.d.ts +0 -4
  36. package/dist/docker/providers/index.d.ts.map +1 -1
  37. package/dist/docker/providers/index.js +0 -38
  38. package/dist/docker/providers/index.js.map +1 -1
  39. package/dist/execution/execution.d.ts +0 -1
  40. package/dist/execution/execution.d.ts.map +1 -1
  41. package/dist/execution/execution.js +5 -9
  42. package/dist/execution/execution.js.map +1 -1
  43. package/dist/execution/index.d.ts +1 -11
  44. package/dist/execution/index.d.ts.map +1 -1
  45. package/dist/execution/index.js +1 -8
  46. package/dist/execution/index.js.map +1 -1
  47. package/dist/execution/runner-setup.d.ts +6 -11
  48. package/dist/execution/runner-setup.d.ts.map +1 -1
  49. package/dist/execution/runner-setup.js +18 -14
  50. package/dist/execution/runner-setup.js.map +1 -1
  51. package/dist/execution/runtime-factory.d.ts +1 -15
  52. package/dist/execution/runtime-factory.d.ts.map +1 -1
  53. package/dist/execution/runtime-factory.js +1 -18
  54. package/dist/execution/runtime-factory.js.map +1 -1
  55. package/dist/gateway/index.d.ts +1 -1
  56. package/dist/gateway/index.d.ts.map +1 -1
  57. package/dist/gateway/index.js +6 -47
  58. package/dist/gateway/index.js.map +1 -1
  59. package/dist/gateway/routes/system.d.ts +1 -4
  60. package/dist/gateway/routes/system.d.ts.map +1 -1
  61. package/dist/gateway/routes/system.js +3 -8
  62. package/dist/gateway/routes/system.js.map +1 -1
  63. package/dist/gateway/stores.d.ts +0 -4
  64. package/dist/gateway/stores.d.ts.map +1 -1
  65. package/dist/gateway/stores.js +2 -10
  66. package/dist/gateway/stores.js.map +1 -1
  67. package/dist/gateway/types.d.ts +0 -13
  68. package/dist/gateway/types.d.ts.map +1 -1
  69. package/dist/mcp/server.d.ts.map +1 -1
  70. package/dist/mcp/server.js +11 -0
  71. package/dist/mcp/server.js.map +1 -1
  72. package/dist/scheduler/gateway-setup.d.ts +0 -2
  73. package/dist/scheduler/gateway-setup.d.ts.map +1 -1
  74. package/dist/scheduler/gateway-setup.js +2 -11
  75. package/dist/scheduler/gateway-setup.js.map +1 -1
  76. package/dist/scheduler/index.d.ts.map +1 -1
  77. package/dist/scheduler/index.js +95 -55
  78. package/dist/scheduler/index.js.map +1 -1
  79. package/dist/scheduler/validation.js +1 -1
  80. package/dist/scheduler/validation.js.map +1 -1
  81. package/dist/scheduler/watcher.d.ts +2 -8
  82. package/dist/scheduler/watcher.d.ts.map +1 -1
  83. package/dist/scheduler/watcher.js +7 -104
  84. package/dist/scheduler/watcher.js.map +1 -1
  85. package/dist/shared/config/load-agent.js +2 -2
  86. package/dist/shared/config/load-agent.js.map +1 -1
  87. package/dist/shared/config/load-project.js +2 -2
  88. package/dist/shared/config/load-project.js.map +1 -1
  89. package/dist/shared/config/types.d.ts +10 -2
  90. package/dist/shared/config/types.d.ts.map +1 -1
  91. package/dist/shared/constants.d.ts +1 -1
  92. package/dist/shared/constants.d.ts.map +1 -1
  93. package/dist/shared/constants.js +2 -2
  94. package/dist/shared/constants.js.map +1 -1
  95. package/dist/shared/credential-refs.js +1 -1
  96. package/dist/shared/credential-refs.js.map +1 -1
  97. package/dist/shared/paths.d.ts.map +1 -1
  98. package/dist/shared/paths.js +2 -2
  99. package/dist/shared/paths.js.map +1 -1
  100. package/dist/shared/validation.js +1 -1
  101. package/dist/shared/validation.js.map +1 -1
  102. package/dist/transport/docker-exec.d.ts +41 -0
  103. package/dist/transport/docker-exec.d.ts.map +1 -0
  104. package/dist/transport/docker-exec.js +331 -0
  105. package/dist/transport/docker-exec.js.map +1 -0
  106. package/dist/transport/host-user.d.ts +37 -0
  107. package/dist/transport/host-user.d.ts.map +1 -0
  108. package/dist/transport/host-user.js +232 -0
  109. package/dist/transport/host-user.js.map +1 -0
  110. package/dist/transport/index.d.ts +8 -0
  111. package/dist/transport/index.d.ts.map +1 -0
  112. package/dist/transport/index.js +7 -0
  113. package/dist/transport/index.js.map +1 -0
  114. package/dist/transport/memory.d.ts +35 -0
  115. package/dist/transport/memory.d.ts.map +1 -0
  116. package/dist/transport/memory.js +110 -0
  117. package/dist/transport/memory.js.map +1 -0
  118. package/dist/transport/operations.d.ts +68 -0
  119. package/dist/transport/operations.d.ts.map +1 -0
  120. package/dist/transport/operations.js +164 -0
  121. package/dist/transport/operations.js.map +1 -0
  122. package/dist/transport/ssh.d.ts +43 -0
  123. package/dist/transport/ssh.d.ts.map +1 -0
  124. package/dist/transport/ssh.js +225 -0
  125. package/dist/transport/ssh.js.map +1 -0
  126. package/dist/transport/transport.d.ts +59 -0
  127. package/dist/transport/transport.d.ts.map +1 -0
  128. package/dist/transport/transport.js +29 -0
  129. package/dist/transport/transport.js.map +1 -0
  130. package/package.json +1 -1
  131. package/dist/agents/container-entry.d.ts +0 -31
  132. package/dist/agents/container-entry.d.ts.map +0 -1
  133. package/dist/agents/container-entry.js +0 -302
  134. package/dist/agents/container-entry.js.map +0 -1
  135. package/dist/agents/container-runner.d.ts +0 -59
  136. package/dist/agents/container-runner.d.ts.map +0 -1
  137. package/dist/agents/container-runner.js +0 -472
  138. package/dist/agents/container-runner.js.map +0 -1
  139. package/dist/agents/harness/claude-cli-harness.d.ts +0 -15
  140. package/dist/agents/harness/claude-cli-harness.d.ts.map +0 -1
  141. package/dist/agents/harness/claude-cli-harness.js +0 -260
  142. package/dist/agents/harness/claude-cli-harness.js.map +0 -1
  143. package/dist/agents/harness/consumer.d.ts +0 -31
  144. package/dist/agents/harness/consumer.d.ts.map +0 -1
  145. package/dist/agents/harness/consumer.js +0 -165
  146. package/dist/agents/harness/consumer.js.map +0 -1
  147. package/dist/agents/harness/factory.d.ts +0 -9
  148. package/dist/agents/harness/factory.d.ts.map +0 -1
  149. package/dist/agents/harness/factory.js +0 -25
  150. package/dist/agents/harness/factory.js.map +0 -1
  151. package/dist/agents/harness/index.d.ts +0 -9
  152. package/dist/agents/harness/index.d.ts.map +0 -1
  153. package/dist/agents/harness/index.js +0 -5
  154. package/dist/agents/harness/index.js.map +0 -1
  155. package/dist/agents/harness/pi-harness.d.ts +0 -18
  156. package/dist/agents/harness/pi-harness.d.ts.map +0 -1
  157. package/dist/agents/harness/pi-harness.js +0 -278
  158. package/dist/agents/harness/pi-harness.js.map +0 -1
  159. package/dist/agents/harness/types.d.ts +0 -57
  160. package/dist/agents/harness/types.d.ts.map +0 -1
  161. package/dist/agents/harness/types.js +0 -2
  162. package/dist/agents/harness/types.js.map +0 -1
  163. package/dist/agents/session-loop.d.ts +0 -36
  164. package/dist/agents/session-loop.d.ts.map +0 -1
  165. package/dist/agents/session-loop.js +0 -216
  166. package/dist/agents/session-loop.js.map +0 -1
  167. package/dist/agents/signals.d.ts +0 -34
  168. package/dist/agents/signals.d.ts.map +0 -1
  169. package/dist/agents/signals.js +0 -122
  170. package/dist/agents/signals.js.map +0 -1
  171. package/dist/cli/commands/claude.d.ts +0 -4
  172. package/dist/cli/commands/claude.d.ts.map +0 -1
  173. package/dist/cli/commands/claude.js +0 -6
  174. package/dist/cli/commands/claude.js.map +0 -1
  175. package/dist/cli/commands/run-agent.d.ts +0 -14
  176. package/dist/cli/commands/run-agent.d.ts.map +0 -1
  177. package/dist/cli/commands/run-agent.js +0 -270
  178. package/dist/cli/commands/run-agent.js.map +0 -1
  179. package/dist/docker/cloud-run-runtime.d.ts +0 -48
  180. package/dist/docker/cloud-run-runtime.d.ts.map +0 -1
  181. package/dist/docker/cloud-run-runtime.js +0 -490
  182. package/dist/docker/cloud-run-runtime.js.map +0 -1
  183. package/dist/docker/image.d.ts +0 -19
  184. package/dist/docker/image.d.ts.map +0 -1
  185. package/dist/docker/image.js +0 -111
  186. package/dist/docker/image.js.map +0 -1
  187. package/dist/execution/call-dispatcher.d.ts +0 -11
  188. package/dist/execution/call-dispatcher.d.ts.map +0 -1
  189. package/dist/execution/call-dispatcher.js +0 -75
  190. package/dist/execution/call-dispatcher.js.map +0 -1
  191. package/dist/execution/container-registry.d.ts +0 -42
  192. package/dist/execution/container-registry.d.ts.map +0 -1
  193. package/dist/execution/container-registry.js +0 -76
  194. package/dist/execution/container-registry.js.map +0 -1
  195. package/dist/execution/image-builder.d.ts +0 -48
  196. package/dist/execution/image-builder.d.ts.map +0 -1
  197. package/dist/execution/image-builder.js +0 -155
  198. package/dist/execution/image-builder.js.map +0 -1
  199. package/dist/execution/routes/calls.d.ts +0 -18
  200. package/dist/execution/routes/calls.d.ts.map +0 -1
  201. package/dist/execution/routes/calls.js +0 -74
  202. package/dist/execution/routes/calls.js.map +0 -1
  203. package/dist/execution/routes/locks.d.ts +0 -10
  204. package/dist/execution/routes/locks.d.ts.map +0 -1
  205. package/dist/execution/routes/locks.js +0 -166
  206. package/dist/execution/routes/locks.js.map +0 -1
  207. package/dist/execution/routes/shutdown.d.ts +0 -5
  208. package/dist/execution/routes/shutdown.d.ts.map +0 -1
  209. package/dist/execution/routes/shutdown.js +0 -24
  210. package/dist/execution/routes/shutdown.js.map +0 -1
  211. package/dist/execution/routes/signals.d.ts +0 -12
  212. package/dist/execution/routes/signals.d.ts.map +0 -1
  213. package/dist/execution/routes/signals.js +0 -123
  214. package/dist/execution/routes/signals.js.map +0 -1
  215. package/dist/execution/types.d.ts +0 -23
  216. package/dist/execution/types.d.ts.map +0 -1
  217. package/dist/execution/types.js +0 -2
  218. package/dist/execution/types.js.map +0 -1
  219. package/dist/gateway/routes/execution.d.ts +0 -24
  220. package/dist/gateway/routes/execution.d.ts.map +0 -1
  221. package/dist/gateway/routes/execution.js +0 -13
  222. package/dist/gateway/routes/execution.js.map +0 -1
  223. package/dist/scheduler/orphan-recovery.d.ts +0 -25
  224. package/dist/scheduler/orphan-recovery.d.ts.map +0 -1
  225. package/dist/scheduler/orphan-recovery.js +0 -144
  226. package/dist/scheduler/orphan-recovery.js.map +0 -1
@@ -1,144 +0,0 @@
1
- // packages/action-llama/src/scheduler/orphan-recovery.ts
2
- import { drainQueues } from "../execution/execution.js";
3
- /**
4
- * Re-adopt orphan containers from a previous scheduler run, or clean up
5
- * stale container registry entries.
6
- *
7
- * This is a scheduler-startup concern that orchestrates across the execution
8
- * plane (runtime, runner pools) and the gateway (container registry, lock store).
9
- */
10
- export async function recoverOrphanContainers(opts) {
11
- const { runtime, gateway, runnerPools, activeAgentConfigs, schedulerState, logger } = opts;
12
- try {
13
- const ownAgentNames = new Set(activeAgentConfigs.map((a) => a.name));
14
- const orphans = (await runtime.listRunningAgents()).filter((o) => ownAgentNames.has(o.agentName));
15
- if (orphans.length > 0) {
16
- const registeredContainers = gateway.containerRegistry.listAll();
17
- const runningNames = new Set(orphans.map((o) => o.taskId));
18
- let adopted = 0;
19
- let killed = 0;
20
- for (const orphan of orphans) {
21
- const found = gateway.containerRegistry.findByContainerName(orphan.taskId);
22
- if (!found) {
23
- // Container exists but has no registry entry — unknown, kill it
24
- logger.warn({ agent: orphan.agentName, task: orphan.taskId }, "killing unregistered orphan container");
25
- try {
26
- await runtime.kill(orphan.taskId);
27
- await runtime.remove(orphan.taskId);
28
- }
29
- catch { }
30
- killed++;
31
- continue;
32
- }
33
- const { secret: oldSecret, reg } = found;
34
- const pool = runnerPools[orphan.agentName];
35
- if (!pool) {
36
- logger.warn({ agent: orphan.agentName, task: orphan.taskId }, "no runner pool for orphan, killing");
37
- try {
38
- await runtime.kill(orphan.taskId);
39
- await runtime.remove(orphan.taskId);
40
- }
41
- catch { }
42
- gateway.lockStore.releaseAll(reg.instanceId);
43
- await gateway.containerRegistry.unregister(oldSecret);
44
- killed++;
45
- continue;
46
- }
47
- // Get shutdown secret from container env vars
48
- let shutdownSecret;
49
- if (runtime.inspectContainer) {
50
- const info = await runtime.inspectContainer(orphan.taskId);
51
- shutdownSecret = info?.env?.SHUTDOWN_SECRET;
52
- }
53
- if (!shutdownSecret) {
54
- logger.warn({ agent: orphan.agentName, task: orphan.taskId }, "cannot read SHUTDOWN_SECRET from orphan, killing");
55
- try {
56
- await runtime.kill(orphan.taskId);
57
- await runtime.remove(orphan.taskId);
58
- }
59
- catch { }
60
- gateway.lockStore.releaseAll(reg.instanceId);
61
- await gateway.containerRegistry.unregister(oldSecret);
62
- killed++;
63
- continue;
64
- }
65
- const runner = pool.getAvailableRunner();
66
- if (!runner) {
67
- logger.warn({ agent: orphan.agentName, task: orphan.taskId }, "no available runner for orphan, killing");
68
- try {
69
- await runtime.kill(orphan.taskId);
70
- await runtime.remove(orphan.taskId);
71
- }
72
- catch { }
73
- gateway.lockStore.releaseAll(reg.instanceId);
74
- await gateway.containerRegistry.unregister(oldSecret);
75
- killed++;
76
- continue;
77
- }
78
- // Re-attach to the orphaned process so streamLogs/waitForExit work normally
79
- const reattach = runtime.reattach;
80
- if (typeof reattach === "function" && !reattach.call(runtime, orphan.taskId)) {
81
- logger.warn({ agent: orphan.agentName, task: orphan.taskId }, "failed to reattach orphan, killing");
82
- try {
83
- await runtime.kill(orphan.taskId);
84
- await runtime.remove(orphan.taskId);
85
- }
86
- catch { }
87
- gateway.lockStore.releaseAll(reg.instanceId);
88
- await gateway.containerRegistry.unregister(oldSecret);
89
- killed++;
90
- continue;
91
- }
92
- // Unregister old secret mapping — will be re-registered inside adoptContainer
93
- await gateway.containerRegistry.unregister(oldSecret);
94
- logger.info({ agent: orphan.agentName, task: orphan.taskId, instance: reg.instanceId }, "re-adopting orphan container");
95
- const containerRunner = runner;
96
- if (typeof containerRunner.adoptContainer === "function") {
97
- containerRunner
98
- .adoptContainer(orphan.taskId, shutdownSecret, reg.instanceId, { type: "schedule", source: "re-adopted" })
99
- .then(() => { if (schedulerState.schedulerCtx)
100
- drainQueues(schedulerState.schedulerCtx); })
101
- .catch((err) => logger.error({ err, agent: orphan.agentName }, "orphan re-adoption failed"));
102
- adopted++;
103
- }
104
- else {
105
- logger.warn({ agent: orphan.agentName }, "runner does not support adoption, killing orphan");
106
- try {
107
- await runtime.kill(orphan.taskId);
108
- await runtime.remove(orphan.taskId);
109
- }
110
- catch { }
111
- killed++;
112
- }
113
- }
114
- // Clean up registry entries for containers that exited while scheduler was down
115
- for (const reg of registeredContainers) {
116
- if (!runningNames.has(reg.containerName)) {
117
- const found = gateway.containerRegistry.findByContainerName(reg.containerName);
118
- if (found) {
119
- gateway.lockStore.releaseAll(reg.instanceId);
120
- await gateway.containerRegistry.unregister(found.secret);
121
- logger.info({ agent: reg.agentName, instance: reg.instanceId }, "cleaned up stale registration (container exited while scheduler was down)");
122
- }
123
- }
124
- }
125
- logger.info({ adopted, killed, total: orphans.length }, "orphan container handling complete");
126
- }
127
- else {
128
- // No running containers — clean up all stale registry entries
129
- const staleEntries = gateway.containerRegistry.listAll();
130
- if (staleEntries.length > 0) {
131
- let releasedLocks = 0;
132
- for (const entry of staleEntries) {
133
- releasedLocks += gateway.lockStore.releaseAll(entry.instanceId);
134
- }
135
- await gateway.containerRegistry.clear();
136
- logger.info({ releasedLocks, staleRegistrations: staleEntries.length }, "cleaned up stale registrations (no running containers)");
137
- }
138
- }
139
- }
140
- catch (err) {
141
- logger.debug({ err }, "orphan detection/re-adoption skipped (runtime does not support listing)");
142
- }
143
- }
144
- //# sourceMappingURL=orphan-recovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orphan-recovery.js","sourceRoot":"","sources":["../../src/scheduler/orphan-recovery.ts"],"names":[],"mappings":"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"}