@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-user.js","sourceRoot":"","sources":["../../src/transport/host-user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type { Transport, ExecResult, ExecOptions } from "./transport.js";
2
+ export { readFile, writeFile } from "./transport.js";
3
+ export { DockerExecTransport, type DockerExecTransportOpts } from "./docker-exec.js";
4
+ export { SshTransport, type SshTransportOpts } from "./ssh.js";
5
+ export { HostUserTransport, type HostUserTransportOpts } from "./host-user.js";
6
+ export { MemoryTransport } from "./memory.js";
7
+ export { createTransportTools, createTransportBashOps, createTransportReadOps, createTransportWriteOps, createTransportEditOps, createTransportGrepOps, createTransportFindOps, createTransportLsOps, } from "./operations.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { readFile, writeFile } from "./transport.js";
2
+ export { DockerExecTransport } from "./docker-exec.js";
3
+ export { SshTransport } from "./ssh.js";
4
+ export { HostUserTransport } from "./host-user.js";
5
+ export { MemoryTransport } from "./memory.js";
6
+ export { createTransportTools, createTransportBashOps, createTransportReadOps, createTransportWriteOps, createTransportEditOps, createTransportGrepOps, createTransportFindOps, createTransportLsOps, } from "./operations.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAgC,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAyB,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAA8B,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * MemoryTransport — in-memory transport for testing.
3
+ *
4
+ * Simulates a filesystem and shell without any external dependencies.
5
+ * Use this to test upper layers (Pi tools, scheduler integration) without
6
+ * needing Docker or SSH.
7
+ */
8
+ import type { Transport, ExecResult, ExecOptions } from "./transport.js";
9
+ export interface MemoryExecHandler {
10
+ (command: string, options?: ExecOptions): ExecResult | Promise<ExecResult>;
11
+ }
12
+ export declare class MemoryTransport implements Transport {
13
+ /** In-memory filesystem: path → contents. */
14
+ files: Map<string, Buffer<ArrayBufferLike>>;
15
+ /** Log of all exec() calls for assertions. */
16
+ execLog: string[];
17
+ /** Current working directory (tracked for cwd state). */
18
+ cwd: string;
19
+ /** Custom handler for exec calls. When set, overrides default behavior. */
20
+ execHandler?: MemoryExecHandler;
21
+ /** Whether close() has been called. */
22
+ closed: boolean;
23
+ exec(command: string, options?: ExecOptions): Promise<ExecResult>;
24
+ private defaultExec;
25
+ readFiles(paths: string[]): Promise<Map<string, Buffer>>;
26
+ writeFiles(files: Map<string, Buffer>): Promise<void>;
27
+ close(): Promise<void>;
28
+ /** Add a file to the in-memory filesystem. */
29
+ addFile(path: string, content: string): void;
30
+ /** Get file content as string, or undefined if not found. */
31
+ getFile(path: string): string | undefined;
32
+ /** Reset state for a fresh test. */
33
+ reset(): void;
34
+ }
35
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/transport/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC5E;AAED,qBAAa,eAAgB,YAAW,SAAS;IAC/C,6CAA6C;IAC7C,KAAK,uCAA6B;IAElC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAM;IAEvB,yDAAyD;IACzD,GAAG,SAAO;IAEV,2EAA2E;IAC3E,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,uCAAuC;IACvC,MAAM,UAAS;IAET,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAWvE,OAAO,CAAC,WAAW;IAkDb,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAUxD,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5C,6DAA6D;IAC7D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzC,oCAAoC;IACpC,KAAK,IAAI,IAAI;CAOd"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * MemoryTransport — in-memory transport for testing.
3
+ *
4
+ * Simulates a filesystem and shell without any external dependencies.
5
+ * Use this to test upper layers (Pi tools, scheduler integration) without
6
+ * needing Docker or SSH.
7
+ */
8
+ export class MemoryTransport {
9
+ /** In-memory filesystem: path → contents. */
10
+ files = new Map();
11
+ /** Log of all exec() calls for assertions. */
12
+ execLog = [];
13
+ /** Current working directory (tracked for cwd state). */
14
+ cwd = "/";
15
+ /** Custom handler for exec calls. When set, overrides default behavior. */
16
+ execHandler;
17
+ /** Whether close() has been called. */
18
+ closed = false;
19
+ async exec(command, options) {
20
+ if (this.closed)
21
+ throw new Error("Transport is closed");
22
+ this.execLog.push(command);
23
+ if (this.execHandler) {
24
+ return this.execHandler(command, options);
25
+ }
26
+ return this.defaultExec(command);
27
+ }
28
+ defaultExec(command) {
29
+ // Simulate basic shell commands for testing
30
+ // test -r / test -e / test -w
31
+ const testMatch = command.match(/test -([rewxd]) '([^']+)'/);
32
+ if (testMatch) {
33
+ const [, flag, path] = testMatch;
34
+ if (flag === "d") {
35
+ const isDir = [...this.files.keys()].some(k => k.startsWith(path + "/"));
36
+ return { stdout: "", stderr: "", exitCode: isDir ? 0 : 1 };
37
+ }
38
+ const exists = this.files.has(path);
39
+ return { stdout: "", stderr: "", exitCode: exists ? 0 : 1 };
40
+ }
41
+ // Combined test: test -r <path> && test -w <path>
42
+ const combinedTest = command.match(/test -r '([^']+)' && test -w '([^']+)'/);
43
+ if (combinedTest) {
44
+ const exists = this.files.has(combinedTest[1]);
45
+ return { stdout: "", stderr: "", exitCode: exists ? 0 : 1 };
46
+ }
47
+ // mkdir -p
48
+ if (command.includes("mkdir -p")) {
49
+ return { stdout: "", stderr: "", exitCode: 0 };
50
+ }
51
+ // ls -1
52
+ const lsMatch = command.match(/ls -1 '([^']+)'/);
53
+ if (lsMatch) {
54
+ const dir = lsMatch[1];
55
+ const entries = [...this.files.keys()]
56
+ .filter(k => k.startsWith(dir + "/"))
57
+ .map(k => k.slice(dir.length + 1).split("/")[0])
58
+ .filter((v, i, a) => a.indexOf(v) === i);
59
+ if (entries.length === 0) {
60
+ return { stdout: "", stderr: "No such file or directory", exitCode: 1 };
61
+ }
62
+ return { stdout: entries.join("\n"), stderr: "", exitCode: 0 };
63
+ }
64
+ // echo
65
+ const echoMatch = command.match(/^echo (.+)$/);
66
+ if (echoMatch) {
67
+ return { stdout: echoMatch[1], stderr: "", exitCode: 0 };
68
+ }
69
+ return { stdout: "", stderr: "", exitCode: 0 };
70
+ }
71
+ async readFiles(paths) {
72
+ if (this.closed)
73
+ throw new Error("Transport is closed");
74
+ const result = new Map();
75
+ for (const path of paths) {
76
+ const content = this.files.get(path);
77
+ if (content)
78
+ result.set(path, content);
79
+ }
80
+ return result;
81
+ }
82
+ async writeFiles(files) {
83
+ if (this.closed)
84
+ throw new Error("Transport is closed");
85
+ for (const [path, content] of files) {
86
+ this.files.set(path, content);
87
+ }
88
+ }
89
+ async close() {
90
+ this.closed = true;
91
+ }
92
+ // ── Test helpers ────────────────────────────────────────────
93
+ /** Add a file to the in-memory filesystem. */
94
+ addFile(path, content) {
95
+ this.files.set(path, Buffer.from(content, "utf-8"));
96
+ }
97
+ /** Get file content as string, or undefined if not found. */
98
+ getFile(path) {
99
+ return this.files.get(path)?.toString("utf-8");
100
+ }
101
+ /** Reset state for a fresh test. */
102
+ reset() {
103
+ this.files.clear();
104
+ this.execLog = [];
105
+ this.cwd = "/";
106
+ this.execHandler = undefined;
107
+ this.closed = false;
108
+ }
109
+ }
110
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/transport/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Transport operations — adapts a Transport into Pi's pluggable operations interfaces.
3
+ *
4
+ * Each Pi tool (bash, read, write, edit, grep, find, ls) accepts a custom operations
5
+ * object that replaces the default local filesystem/shell behavior. This module creates
6
+ * those operations objects backed by a Transport, so tools execute remotely.
7
+ *
8
+ * Usage:
9
+ * const transport = new DockerExecTransport({ container: "my-container" });
10
+ * await transport.connect();
11
+ * const tools = createTransportTools(transport, "/workspace");
12
+ */
13
+ import { type BashOperations, type ReadOperations, type WriteOperations, type EditOperations, type GrepOperations, type FindOperations, type LsOperations } from "@mariozechner/pi-coding-agent";
14
+ import type { Transport } from "./transport.js";
15
+ /**
16
+ * Create BashOperations that execute commands via the transport.
17
+ * The transport maintains a persistent shell, so cwd and env persist across calls.
18
+ */
19
+ export declare function createTransportBashOps(transport: Transport): BashOperations;
20
+ /** Create ReadOperations that read files via the transport. */
21
+ export declare function createTransportReadOps(transport: Transport): ReadOperations;
22
+ /** Create WriteOperations that write files via the transport. */
23
+ export declare function createTransportWriteOps(transport: Transport): WriteOperations;
24
+ /** Create EditOperations that edit files via the transport (read + write). */
25
+ export declare function createTransportEditOps(transport: Transport): EditOperations;
26
+ /** Create GrepOperations that check paths and read files via the transport. */
27
+ export declare function createTransportGrepOps(transport: Transport): GrepOperations;
28
+ /** Create FindOperations that search for files via the transport. */
29
+ export declare function createTransportFindOps(transport: Transport): FindOperations;
30
+ /** Create LsOperations that list directories via the transport. */
31
+ export declare function createTransportLsOps(transport: Transport): LsOperations;
32
+ /**
33
+ * Create all Pi coding tools backed by a transport.
34
+ * These tools have the same interface as local tools but execute remotely.
35
+ */
36
+ export declare function createTransportTools(transport: Transport, cwd: string): (import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
37
+ path: import("@sinclair/typebox").TString;
38
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
39
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
40
+ }>, any> | import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
41
+ command: import("@sinclair/typebox").TString;
42
+ timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
43
+ }>, any> | import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
44
+ path: import("@sinclair/typebox").TString;
45
+ edits: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
46
+ oldText: import("@sinclair/typebox").TString;
47
+ newText: import("@sinclair/typebox").TString;
48
+ }>>;
49
+ }>, any> | import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
50
+ path: import("@sinclair/typebox").TString;
51
+ content: import("@sinclair/typebox").TString;
52
+ }>, any> | import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
53
+ pattern: import("@sinclair/typebox").TString;
54
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
55
+ glob: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
56
+ ignoreCase: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
57
+ literal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
58
+ context: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
59
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
60
+ }>, any> | import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
61
+ pattern: import("@sinclair/typebox").TString;
62
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
63
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
64
+ }>, any> | import("@mariozechner/pi-agent-core").AgentTool<import("@sinclair/typebox").TObject<{
65
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
66
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
67
+ }>, any>)[];
68
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/transport/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAiB3E;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAc3E;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAY7E;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAmB3E;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAY3E;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAqB3E;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAqBvE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkBrE"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Transport operations — adapts a Transport into Pi's pluggable operations interfaces.
3
+ *
4
+ * Each Pi tool (bash, read, write, edit, grep, find, ls) accepts a custom operations
5
+ * object that replaces the default local filesystem/shell behavior. This module creates
6
+ * those operations objects backed by a Transport, so tools execute remotely.
7
+ *
8
+ * Usage:
9
+ * const transport = new DockerExecTransport({ container: "my-container" });
10
+ * await transport.connect();
11
+ * const tools = createTransportTools(transport, "/workspace");
12
+ */
13
+ import { createBashTool, createReadTool, createWriteTool, createEditTool, createGrepTool, createFindTool, createLsTool, } from "@mariozechner/pi-coding-agent";
14
+ import { readFile } from "./transport.js";
15
+ /**
16
+ * Create BashOperations that execute commands via the transport.
17
+ * The transport maintains a persistent shell, so cwd and env persist across calls.
18
+ */
19
+ export function createTransportBashOps(transport) {
20
+ return {
21
+ async exec(command, cwd, options) {
22
+ // Pi's bash tool passes the cwd for each invocation. Since our transport
23
+ // shell is persistent, we cd to the requested cwd before running the command.
24
+ // We wrap in a subshell-like approach: cd first, then run.
25
+ const fullCommand = `cd ${shellQuote(cwd)} && ${command}`;
26
+ const result = await transport.exec(fullCommand, {
27
+ onData: options.onData,
28
+ signal: options.signal,
29
+ timeout: options.timeout,
30
+ });
31
+ return { exitCode: result.exitCode };
32
+ },
33
+ };
34
+ }
35
+ /** Create ReadOperations that read files via the transport. */
36
+ export function createTransportReadOps(transport) {
37
+ return {
38
+ async readFile(absolutePath) {
39
+ return readFile(transport, absolutePath);
40
+ },
41
+ async access(absolutePath) {
42
+ // Check if the file exists and is readable by running a test command
43
+ const result = await transport.exec(`test -r ${shellQuote(absolutePath)}`);
44
+ if (result.exitCode !== 0) {
45
+ throw new Error(`ENOENT: no such file or directory, access '${absolutePath}'`);
46
+ }
47
+ },
48
+ };
49
+ }
50
+ /** Create WriteOperations that write files via the transport. */
51
+ export function createTransportWriteOps(transport) {
52
+ return {
53
+ async writeFile(absolutePath, content) {
54
+ const files = new Map();
55
+ files.set(absolutePath, Buffer.from(content, "utf-8"));
56
+ await transport.writeFiles(files);
57
+ },
58
+ async mkdir(dir) {
59
+ await transport.exec(`mkdir -p ${shellQuote(dir)}`);
60
+ },
61
+ };
62
+ }
63
+ /** Create EditOperations that edit files via the transport (read + write). */
64
+ export function createTransportEditOps(transport) {
65
+ return {
66
+ async readFile(absolutePath) {
67
+ return readFile(transport, absolutePath);
68
+ },
69
+ async writeFile(absolutePath, content) {
70
+ const files = new Map();
71
+ files.set(absolutePath, Buffer.from(content, "utf-8"));
72
+ await transport.writeFiles(files);
73
+ },
74
+ async access(absolutePath) {
75
+ const result = await transport.exec(`test -r ${shellQuote(absolutePath)} && test -w ${shellQuote(absolutePath)}`);
76
+ if (result.exitCode !== 0) {
77
+ throw new Error(`EACCES: permission denied, access '${absolutePath}'`);
78
+ }
79
+ },
80
+ };
81
+ }
82
+ /** Create GrepOperations that check paths and read files via the transport. */
83
+ export function createTransportGrepOps(transport) {
84
+ return {
85
+ async isDirectory(absolutePath) {
86
+ const result = await transport.exec(`test -d ${shellQuote(absolutePath)}`);
87
+ return result.exitCode === 0;
88
+ },
89
+ async readFile(absolutePath) {
90
+ const content = await readFile(transport, absolutePath);
91
+ return content.toString("utf-8");
92
+ },
93
+ };
94
+ }
95
+ /** Create FindOperations that search for files via the transport. */
96
+ export function createTransportFindOps(transport) {
97
+ return {
98
+ async exists(absolutePath) {
99
+ const result = await transport.exec(`test -e ${shellQuote(absolutePath)}`);
100
+ return result.exitCode === 0;
101
+ },
102
+ async glob(pattern, cwd, options) {
103
+ // Use find with -name for glob matching, or fd if available
104
+ // The Pi find tool will handle the glob pattern translation
105
+ const ignoreArgs = options.ignore
106
+ .map(p => `-not -path ${shellQuote(p)}`)
107
+ .join(" ");
108
+ const cmd = `cd ${shellQuote(cwd)} && find . -name ${shellQuote(pattern)} ${ignoreArgs} -type f 2>/dev/null | head -n ${options.limit}`;
109
+ const result = await transport.exec(cmd);
110
+ if (result.exitCode !== 0 || !result.stdout.trim()) {
111
+ return [];
112
+ }
113
+ return result.stdout.trim().split("\n").filter(Boolean);
114
+ },
115
+ };
116
+ }
117
+ /** Create LsOperations that list directories via the transport. */
118
+ export function createTransportLsOps(transport) {
119
+ return {
120
+ async exists(absolutePath) {
121
+ const result = await transport.exec(`test -e ${shellQuote(absolutePath)}`);
122
+ return result.exitCode === 0;
123
+ },
124
+ async stat(absolutePath) {
125
+ const result = await transport.exec(`test -d ${shellQuote(absolutePath)}`);
126
+ const isDir = result.exitCode === 0;
127
+ return { isDirectory: () => isDir };
128
+ },
129
+ async readdir(absolutePath) {
130
+ const result = await transport.exec(`ls -1 ${shellQuote(absolutePath)}`);
131
+ if (result.exitCode !== 0) {
132
+ throw new Error(`ENOENT: no such file or directory, readdir '${absolutePath}'`);
133
+ }
134
+ return result.stdout.trim().split("\n").filter(Boolean);
135
+ },
136
+ };
137
+ }
138
+ /**
139
+ * Create all Pi coding tools backed by a transport.
140
+ * These tools have the same interface as local tools but execute remotely.
141
+ */
142
+ export function createTransportTools(transport, cwd) {
143
+ const bashOps = createTransportBashOps(transport);
144
+ const readOps = createTransportReadOps(transport);
145
+ const writeOps = createTransportWriteOps(transport);
146
+ const editOps = createTransportEditOps(transport);
147
+ const grepOps = createTransportGrepOps(transport);
148
+ const findOps = createTransportFindOps(transport);
149
+ const lsOps = createTransportLsOps(transport);
150
+ return [
151
+ createReadTool(cwd, { operations: readOps }),
152
+ createBashTool(cwd, { operations: bashOps }),
153
+ createEditTool(cwd, { operations: editOps }),
154
+ createWriteTool(cwd, { operations: writeOps }),
155
+ createGrepTool(cwd, { operations: grepOps }),
156
+ createFindTool(cwd, { operations: findOps }),
157
+ createLsTool(cwd, { operations: lsOps }),
158
+ ];
159
+ }
160
+ /** Escape a string for use in a shell command. */
161
+ function shellQuote(s) {
162
+ return `'${s.replace(/'/g, "'\\''")}'`;
163
+ }
164
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/transport/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * SshTransport — executes commands on a remote host via a persistent SSH
3
+ * connection. Shell state (cwd, env vars) persists across exec() calls.
4
+ *
5
+ * File I/O uses the same SSH connection's stdin/stdout with base64 encoding
6
+ * to avoid opening additional connections.
7
+ */
8
+ import type { Transport, ExecResult, ExecOptions } from "./transport.js";
9
+ export interface SshTransportOpts {
10
+ /** SSH hostname or IP address. */
11
+ host: string;
12
+ /** SSH port. Default: 22. */
13
+ port?: number;
14
+ /** SSH user. */
15
+ user?: string;
16
+ /** Path to SSH private key. */
17
+ keyPath?: string;
18
+ /** Initial working directory on the remote. Default: "~". */
19
+ cwd?: string;
20
+ /** Additional SSH options (e.g. StrictHostKeyChecking). */
21
+ sshOptions?: Record<string, string>;
22
+ /** Timeout for the initial shell ready probe (ms). Default: 15000. */
23
+ connectTimeoutMs?: number;
24
+ }
25
+ export declare class SshTransport implements Transport {
26
+ private opts;
27
+ private shell;
28
+ private ready;
29
+ private buffer;
30
+ constructor(opts: SshTransportOpts);
31
+ /** Establish the persistent SSH shell session. Must be called before exec(). */
32
+ connect(): Promise<void>;
33
+ /**
34
+ * Wait for a delimiter to appear in the stdout buffer.
35
+ * Returns the output before the delimiter and the exit code.
36
+ */
37
+ private waitForDelimiter;
38
+ exec(command: string, options?: ExecOptions): Promise<ExecResult>;
39
+ readFiles(paths: string[]): Promise<Map<string, Buffer>>;
40
+ writeFiles(files: Map<string, Buffer>): Promise<void>;
41
+ close(): Promise<void>;
42
+ }
43
+ //# sourceMappingURL=ssh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/transport/ssh.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYzE,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,YAAa,YAAW,SAAS;IAKhC,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAM;gBAEA,IAAI,EAAE,gBAAgB;IAE1C,gFAAgF;IAC1E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgClB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAqEjE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyBxD,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}