@agentstep/agent-sdk 0.5.10 → 0.5.11

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 (112) hide show
  1. package/dist/backends/claude/index.js +2 -2
  2. package/dist/backends/claude/wrapper-script.js +1 -1
  3. package/dist/backends/codex/index.js +3 -3
  4. package/dist/backends/codex/setup.js +2 -2
  5. package/dist/backends/codex/wrapper-script.js +1 -1
  6. package/dist/backends/factory/index.js +3 -3
  7. package/dist/backends/factory/setup.js +2 -2
  8. package/dist/backends/factory/wrapper-script.js +1 -1
  9. package/dist/backends/gemini/index.js +3 -3
  10. package/dist/backends/gemini/setup.js +2 -2
  11. package/dist/backends/gemini/wrapper-script.js +1 -1
  12. package/dist/backends/opencode/index.js +3 -3
  13. package/dist/backends/opencode/setup.js +2 -2
  14. package/dist/backends/opencode/wrapper-script.js +1 -1
  15. package/dist/backends/pi/index.js +3 -3
  16. package/dist/backends/pi/setup.js +2 -2
  17. package/dist/backends/pi/wrapper-script.js +1 -1
  18. package/dist/backends/registry.js +18 -18
  19. package/dist/{chunk-BGNQXT4T.js → chunk-2U2KCTMF.js} +1 -1
  20. package/dist/{chunk-NL4EKSFA.js → chunk-2UDGQWRA.js} +1 -1
  21. package/dist/{chunk-T5P54I7S.js → chunk-4HFKDLD7.js} +2 -2
  22. package/dist/{chunk-GBGXSRZX.js → chunk-4N7WVJHB.js} +6 -6
  23. package/dist/{chunk-J3XIGC3L.js → chunk-4QRE6LZG.js} +1 -1
  24. package/dist/{chunk-2OFGWHZB.js → chunk-4UNMDYKD.js} +1 -1
  25. package/dist/{chunk-ZIMK4TPI.js → chunk-5KXAMBPI.js} +1 -1
  26. package/dist/{chunk-5LXMEHQX.js → chunk-5VL4L6BJ.js} +1 -1
  27. package/dist/{chunk-4QBWHZKQ.js → chunk-6FNPCZTL.js} +1 -1
  28. package/dist/{chunk-56KP3SAI.js → chunk-7NIUHK63.js} +1 -1
  29. package/dist/{chunk-37Y556D5.js → chunk-ALIJNBQY.js} +1 -1
  30. package/dist/{chunk-YSUPRYX2.js → chunk-AQHYCRTO.js} +1 -1
  31. package/dist/{chunk-KYDOZBD5.js → chunk-BJ3EPRZU.js} +3 -3
  32. package/dist/{chunk-QYSDP6V5.js → chunk-CMOU2OFW.js} +1 -1
  33. package/dist/{chunk-KJENLSJT.js → chunk-CR3UN3BC.js} +5 -5
  34. package/dist/{chunk-X3IXLDWQ.js → chunk-DVDNHXCM.js} +1 -1
  35. package/dist/{chunk-OWG6UV4S.js → chunk-G43CK3VC.js} +2 -2
  36. package/dist/{chunk-6BRG2NJL.js → chunk-GMIAU3CP.js} +1 -1
  37. package/dist/{chunk-PNJRIMKJ.js → chunk-GTHATO73.js} +2 -2
  38. package/dist/{chunk-MF3J7WTR.js → chunk-I7FLMXEF.js} +2 -2
  39. package/dist/{chunk-QBJOYOVF.js → chunk-J6T3W6RY.js} +15 -0
  40. package/dist/{chunk-PXOL34HI.js → chunk-JE5Z2GLG.js} +1 -1
  41. package/dist/{chunk-SKRIZPPF.js → chunk-KB4EKC5T.js} +1 -1
  42. package/dist/chunk-KJ2GJLPQ.js +39 -0
  43. package/dist/{chunk-IY3KO2BC.js → chunk-KRQRJEQY.js} +1 -1
  44. package/dist/{chunk-6TRWB7CE.js → chunk-KZGFT75I.js} +2 -2
  45. package/dist/{chunk-2PTWIZX6.js → chunk-LXSGQ2VF.js} +1 -1
  46. package/dist/{chunk-SAUR463Z.js → chunk-M2ZBXMYO.js} +2 -2
  47. package/dist/{chunk-WCLMAQR4.js → chunk-MMB7ZTAF.js} +1 -1
  48. package/dist/{chunk-75C3KFST.js → chunk-MPG77WHN.js} +1 -1
  49. package/dist/{chunk-M2LUXIXU.js → chunk-NMZMRH3E.js} +1 -1
  50. package/dist/chunk-OGA7KDQZ.js +37 -0
  51. package/dist/{chunk-SUFGP47L.js → chunk-OMI5CR4P.js} +3 -3
  52. package/dist/{chunk-XG4UIGDH.js → chunk-PAQ2JFVD.js} +1 -1
  53. package/dist/chunk-PZ5EGY64.js +37 -0
  54. package/dist/{chunk-ZV6Y5VOD.js → chunk-RJB7YG26.js} +3 -3
  55. package/dist/{chunk-LGVD2IGL.js → chunk-RTLMLG3A.js} +2 -2
  56. package/dist/{chunk-GUD3MOP7.js → chunk-RYVVSBST.js} +2 -2
  57. package/dist/{chunk-NFGCFN57.js → chunk-SAA6477U.js} +2 -2
  58. package/dist/{chunk-6T4DKZYW.js → chunk-T4IPZC4G.js} +2 -2
  59. package/dist/{chunk-CXDNTVCM.js → chunk-TCTAUIAQ.js} +1 -1
  60. package/dist/{chunk-RTZNJDEL.js → chunk-UHPS3XNG.js} +1 -1
  61. package/dist/{chunk-TARFRZ44.js → chunk-UMIIZKVX.js} +2 -2
  62. package/dist/{chunk-HV7M7UUY.js → chunk-UONJFSWM.js} +2 -2
  63. package/dist/{chunk-P7P2NWZD.js → chunk-URNG7ZX2.js} +1 -1
  64. package/dist/chunk-UY3VT3HQ.js +39 -0
  65. package/dist/{chunk-CZPWZ5A5.js → chunk-VFVLRR3Z.js} +1 -1
  66. package/dist/{chunk-DQ5VMD3Z.js → chunk-WL3VMUAI.js} +1 -1
  67. package/dist/{chunk-LVSQULRG.js → chunk-WUMBZMBF.js} +1 -1
  68. package/dist/{chunk-E4FQRMHV.js → chunk-XJYR5HE3.js} +18 -0
  69. package/dist/containers/lifecycle.js +20 -20
  70. package/dist/containers/setup.js +3 -3
  71. package/dist/handlers/agents.js +26 -26
  72. package/dist/handlers/api_keys.js +26 -26
  73. package/dist/handlers/audit.js +26 -26
  74. package/dist/handlers/batch.js +26 -26
  75. package/dist/handlers/credentials.js +27 -27
  76. package/dist/handlers/environments.js +27 -27
  77. package/dist/handlers/events.js +26 -26
  78. package/dist/handlers/files.js +26 -26
  79. package/dist/handlers/index.js +51 -51
  80. package/dist/handlers/license.js +26 -26
  81. package/dist/handlers/memory.js +26 -26
  82. package/dist/handlers/metrics.js +26 -26
  83. package/dist/handlers/models.js +26 -26
  84. package/dist/handlers/providers.js +26 -26
  85. package/dist/handlers/resources.js +26 -26
  86. package/dist/handlers/sessions.js +27 -27
  87. package/dist/handlers/settings.js +26 -26
  88. package/dist/handlers/skills-write.js +26 -26
  89. package/dist/handlers/skills.js +26 -26
  90. package/dist/handlers/stream.js +25 -25
  91. package/dist/handlers/tenants.js +26 -26
  92. package/dist/handlers/threads.js +26 -26
  93. package/dist/handlers/traces.js +26 -26
  94. package/dist/handlers/upstream_keys.js +26 -26
  95. package/dist/handlers/vaults.js +26 -26
  96. package/dist/handlers/whoami.js +26 -26
  97. package/dist/http.js +25 -25
  98. package/dist/index.js +26 -26
  99. package/dist/init.js +24 -24
  100. package/dist/providers/daytona.js +1 -1
  101. package/dist/providers/fly.js +2 -1
  102. package/dist/providers/registry.js +1 -1
  103. package/dist/sessions/driver.js +21 -21
  104. package/dist/sessions/sweeper.js +21 -21
  105. package/dist/sessions/threads.js +21 -21
  106. package/dist/shutdown.js +22 -22
  107. package/package.json +1 -1
  108. package/dist/chunk-3W6KEDQE.js +0 -20
  109. package/dist/chunk-JDBXIJKG.js +0 -20
  110. package/dist/chunk-QQDSHL27.js +0 -22
  111. package/dist/chunk-SWIP7JBQ.js +0 -22
  112. /package/dist/{chunk-A4BGGHRC.js → chunk-7KSQJK2V.js} +0 -0
@@ -0,0 +1,39 @@
1
+ // src/backends/factory/wrapper-script.ts
2
+ var FACTORY_WRAPPER_PATH = "/tmp/.factory-wrapper";
3
+ var SANDBOX_WRAPPER_SCRIPT = [
4
+ "#!/bin/bash",
5
+ "set -e",
6
+ 'while IFS= read -r line; do [ -z "$line" ] && break; export "$line"; done',
7
+ "PROMPT=$(cat)",
8
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
9
+ 'SPRITE_SOCK="/.sprite/api.sock"',
10
+ 'HEARTBEAT_PID=""',
11
+ 'if [ -S "$SPRITE_SOCK" ]; then',
12
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
13
+ " -X POST http://sprite/v1/tasks \\",
14
+ ' -H "Content-Type: application/json" \\',
15
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
16
+ " (while sleep 60; do",
17
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
18
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
19
+ ' -H "Content-Type: application/json" \\',
20
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
21
+ " done) &",
22
+ " HEARTBEAT_PID=$!",
23
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
24
+ "fi",
25
+ 'droid "$@" "$PROMPT"'
26
+ ].join("\n");
27
+ async function installFactoryWrapper(sandboxName, provider) {
28
+ const escaped = SANDBOX_WRAPPER_SCRIPT.replace(/'/g, "'\\''");
29
+ await provider.exec(sandboxName, [
30
+ "bash",
31
+ "-c",
32
+ `printf '%s' '${escaped}' > ${FACTORY_WRAPPER_PATH} && chmod +x ${FACTORY_WRAPPER_PATH}`
33
+ ]);
34
+ }
35
+
36
+ export {
37
+ FACTORY_WRAPPER_PATH,
38
+ installFactoryWrapper
39
+ };
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  jsonOk,
23
23
  routeWrap
24
- } from "./chunk-DQ5VMD3Z.js";
24
+ } from "./chunk-WL3VMUAI.js";
25
25
  import {
26
26
  badRequest,
27
27
  notFound
@@ -25,7 +25,7 @@ import {
25
25
  jsonOk,
26
26
  paginatedOk,
27
27
  routeWrap
28
- } from "./chunk-DQ5VMD3Z.js";
28
+ } from "./chunk-WL3VMUAI.js";
29
29
  import {
30
30
  forwardToAnthropic
31
31
  } from "./chunk-WKPUTJGD.js";
@@ -35,7 +35,7 @@ import {
35
35
  import {
36
36
  runTurn,
37
37
  writePermissionResponse
38
- } from "./chunk-KYDOZBD5.js";
38
+ } from "./chunk-BJ3EPRZU.js";
39
39
  import {
40
40
  getProxiedTenantId,
41
41
  isProxied
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-WKPUTJGD.js";
13
13
  import {
14
14
  ensureInitialized
15
- } from "./chunk-KJENLSJT.js";
15
+ } from "./chunk-CR3UN3BC.js";
16
16
  import {
17
17
  getProxiedTenantId,
18
18
  isProxied
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  resolveContainerProvider
3
- } from "./chunk-A4BGGHRC.js";
3
+ } from "./chunk-7KSQJK2V.js";
4
4
  import {
5
5
  getEnvironmentRow,
6
6
  updateEnvironmentState
7
7
  } from "./chunk-6BOOQV4Q.js";
8
8
  import {
9
9
  installClaudeWrapper
10
- } from "./chunk-QBJOYOVF.js";
10
+ } from "./chunk-J6T3W6RY.js";
11
11
  import {
12
12
  init_ids,
13
13
  newId
@@ -25,7 +25,7 @@ import {
25
25
  jsonOk,
26
26
  paginatedOk,
27
27
  routeWrap
28
- } from "./chunk-DQ5VMD3Z.js";
28
+ } from "./chunk-WL3VMUAI.js";
29
29
  import {
30
30
  getConfig
31
31
  } from "./chunk-3WZGFAV4.js";
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  jsonOk,
17
17
  routeWrap
18
- } from "./chunk-DQ5VMD3Z.js";
18
+ } from "./chunk-WL3VMUAI.js";
19
19
  import {
20
20
  createApiKey,
21
21
  getApiKeyById,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installCodexWrapper
3
- } from "./chunk-E4FQRMHV.js";
3
+ } from "./chunk-XJYR5HE3.js";
4
4
 
5
5
  // src/backends/codex/setup.ts
6
6
  var SENTINEL_NAME = ".claude-agents-codex-installed";
@@ -0,0 +1,37 @@
1
+ // src/backends/pi/wrapper-script.ts
2
+ var PI_WRAPPER_PATH = "/tmp/.pi-wrapper";
3
+ var SANDBOX_WRAPPER_SCRIPT = [
4
+ "#!/bin/bash",
5
+ 'while IFS= read -r line; do [ -z "$line" ] && break; export "$line"; done',
6
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
7
+ 'SPRITE_SOCK="/.sprite/api.sock"',
8
+ 'HEARTBEAT_PID=""',
9
+ 'if [ -S "$SPRITE_SOCK" ]; then',
10
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
11
+ " -X POST http://sprite/v1/tasks \\",
12
+ ' -H "Content-Type: application/json" \\',
13
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
14
+ " (while sleep 60; do",
15
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
16
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
17
+ ' -H "Content-Type: application/json" \\',
18
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
19
+ " done) &",
20
+ " HEARTBEAT_PID=$!",
21
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
22
+ "fi",
23
+ 'pi "$@"'
24
+ ].join("\n");
25
+ async function installPiWrapper(sandboxName, provider) {
26
+ const escaped = SANDBOX_WRAPPER_SCRIPT.replace(/'/g, "'\\''");
27
+ await provider.exec(sandboxName, [
28
+ "bash",
29
+ "-c",
30
+ `printf '%s' '${escaped}' > ${PI_WRAPPER_PATH} && chmod +x ${PI_WRAPPER_PATH}`
31
+ ]);
32
+ }
33
+
34
+ export {
35
+ PI_WRAPPER_PATH,
36
+ installPiWrapper
37
+ };
@@ -5,13 +5,13 @@ import {
5
5
  } from "./chunk-23UKWXJH.js";
6
6
  import {
7
7
  kickoffEnvironmentSetup
8
- } from "./chunk-SAUR463Z.js";
8
+ } from "./chunk-M2ZBXMYO.js";
9
9
  import {
10
10
  decodeCursor,
11
11
  jsonOk,
12
12
  paginatedOk,
13
13
  routeWrap
14
- } from "./chunk-DQ5VMD3Z.js";
14
+ } from "./chunk-WL3VMUAI.js";
15
15
  import {
16
16
  forwardToAnthropic
17
17
  } from "./chunk-WKPUTJGD.js";
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-EFSLGRY2.js";
24
24
  import {
25
25
  resolveContainerProvider
26
- } from "./chunk-A4BGGHRC.js";
26
+ } from "./chunk-7KSQJK2V.js";
27
27
  import {
28
28
  archiveEnvironment,
29
29
  createEnvironment,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installGeminiWrapper
3
- } from "./chunk-3W6KEDQE.js";
3
+ } from "./chunk-PZ5EGY64.js";
4
4
 
5
5
  // src/backends/gemini/setup.ts
6
6
  var SENTINEL_NAME = ".claude-agents-gemini-installed";
@@ -0,0 +1,37 @@
1
+ // src/backends/gemini/wrapper-script.ts
2
+ var GEMINI_WRAPPER_PATH = "/tmp/.gemini-wrapper";
3
+ var SANDBOX_WRAPPER_SCRIPT = [
4
+ "#!/bin/bash",
5
+ 'while IFS= read -r line; do [ -z "$line" ] && break; export "$line"; done',
6
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
7
+ 'SPRITE_SOCK="/.sprite/api.sock"',
8
+ 'HEARTBEAT_PID=""',
9
+ 'if [ -S "$SPRITE_SOCK" ]; then',
10
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
11
+ " -X POST http://sprite/v1/tasks \\",
12
+ ' -H "Content-Type: application/json" \\',
13
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
14
+ " (while sleep 60; do",
15
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
16
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
17
+ ' -H "Content-Type: application/json" \\',
18
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
19
+ " done) &",
20
+ " HEARTBEAT_PID=$!",
21
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
22
+ "fi",
23
+ 'gemini "$@"'
24
+ ].join("\n");
25
+ async function installGeminiWrapper(sandboxName, provider) {
26
+ const escaped = SANDBOX_WRAPPER_SCRIPT.replace(/'/g, "'\\''");
27
+ await provider.exec(sandboxName, [
28
+ "bash",
29
+ "-c",
30
+ `printf '%s' '${escaped}' > ${GEMINI_WRAPPER_PATH} && chmod +x ${GEMINI_WRAPPER_PATH}`
31
+ ]);
32
+ }
33
+
34
+ export {
35
+ GEMINI_WRAPPER_PATH,
36
+ installGeminiWrapper
37
+ };
@@ -17,13 +17,13 @@ import {
17
17
  } from "./chunk-YN2F26NN.js";
18
18
  import {
19
19
  kickoffEnvironmentSetup
20
- } from "./chunk-SAUR463Z.js";
20
+ } from "./chunk-M2ZBXMYO.js";
21
21
  import {
22
22
  decodeCursor,
23
23
  jsonOk,
24
24
  paginatedOk,
25
25
  routeWrap
26
- } from "./chunk-DQ5VMD3Z.js";
26
+ } from "./chunk-WL3VMUAI.js";
27
27
  import {
28
28
  forwardToAnthropic
29
29
  } from "./chunk-WKPUTJGD.js";
@@ -43,7 +43,7 @@ import {
43
43
  } from "./chunk-LAWTTG2E.js";
44
44
  import {
45
45
  releaseSession
46
- } from "./chunk-MF3J7WTR.js";
46
+ } from "./chunk-I7FLMXEF.js";
47
47
  import {
48
48
  appendEvent,
49
49
  dropEmitter
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  preparePiOnSandbox
3
- } from "./chunk-QYSDP6V5.js";
3
+ } from "./chunk-CMOU2OFW.js";
4
4
  import {
5
5
  createPiTranslator
6
6
  } from "./chunk-B6E6BVNK.js";
7
7
  import {
8
8
  PI_WRAPPER_PATH
9
- } from "./chunk-JDBXIJKG.js";
9
+ } from "./chunk-OGA7KDQZ.js";
10
10
  import {
11
11
  buildPiArgs
12
12
  } from "./chunk-6KWJASEO.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  prepareCodexOnSandbox
3
- } from "./chunk-M2LUXIXU.js";
3
+ } from "./chunk-NMZMRH3E.js";
4
4
  import {
5
5
  createCodexTranslator
6
6
  } from "./chunk-CULYZ3VA.js";
7
7
  import {
8
8
  CODEX_WRAPPER_PATH
9
- } from "./chunk-E4FQRMHV.js";
9
+ } from "./chunk-XJYR5HE3.js";
10
10
  import {
11
11
  buildCodexArgs
12
12
  } from "./chunk-PJYCPDV5.js";
@@ -7,13 +7,13 @@ import {
7
7
  } from "./chunk-NOG7ZJJA.js";
8
8
  import {
9
9
  prepareGeminiOnSandbox
10
- } from "./chunk-XG4UIGDH.js";
10
+ } from "./chunk-PAQ2JFVD.js";
11
11
  import {
12
12
  createGeminiTranslator
13
13
  } from "./chunk-S3JRZFF5.js";
14
14
  import {
15
15
  GEMINI_WRAPPER_PATH
16
- } from "./chunk-3W6KEDQE.js";
16
+ } from "./chunk-PZ5EGY64.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
19
  } from "./chunk-YE2RMJY7.js";
@@ -7,13 +7,13 @@ import {
7
7
  } from "./chunk-V5DH3OAC.js";
8
8
  import {
9
9
  prepareOpencodeOnSandbox
10
- } from "./chunk-P7P2NWZD.js";
10
+ } from "./chunk-URNG7ZX2.js";
11
11
  import {
12
12
  createOpencodeTranslator
13
13
  } from "./chunk-ETWGCBIQ.js";
14
14
  import {
15
15
  OPENCODE_WRAPPER_PATH
16
- } from "./chunk-SWIP7JBQ.js";
16
+ } from "./chunk-UY3VT3HQ.js";
17
17
  import {
18
18
  buildOpencodeArgs
19
19
  } from "./chunk-P56WU3UT.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-DQ5VMD3Z.js";
7
+ } from "./chunk-WL3VMUAI.js";
8
8
  import {
9
9
  getProxiedTenantId
10
10
  } from "./chunk-EFSLGRY2.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-DQ5VMD3Z.js";
7
+ } from "./chunk-WL3VMUAI.js";
8
8
  import {
9
9
  exportTrace
10
10
  } from "./chunk-4JPJ3ZIV.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-DQ5VMD3Z.js";
4
+ } from "./chunk-WL3VMUAI.js";
5
5
  import {
6
6
  resolveContainerProvider
7
- } from "./chunk-A4BGGHRC.js";
7
+ } from "./chunk-7KSQJK2V.js";
8
8
  import {
9
9
  getConfig
10
10
  } from "./chunk-3WZGFAV4.js";
@@ -8,7 +8,7 @@ import {
8
8
  jsonOk,
9
9
  paginatedOk,
10
10
  routeWrap
11
- } from "./chunk-DQ5VMD3Z.js";
11
+ } from "./chunk-WL3VMUAI.js";
12
12
  import {
13
13
  forwardToAnthropic,
14
14
  validateAnthropicProxy
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-EGN4TPN5.js";
30
30
  import {
31
31
  resolveBackend
32
- } from "./chunk-GBGXSRZX.js";
32
+ } from "./chunk-4N7WVJHB.js";
33
33
  import {
34
34
  getDb,
35
35
  init_client
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installOpencodeWrapper
3
- } from "./chunk-SWIP7JBQ.js";
3
+ } from "./chunk-UY3VT3HQ.js";
4
4
 
5
5
  // src/backends/opencode/setup.ts
6
6
  var SENTINEL_NAME = ".claude-agents-opencode-installed";
@@ -0,0 +1,39 @@
1
+ // src/backends/opencode/wrapper-script.ts
2
+ var OPENCODE_WRAPPER_PATH = "/tmp/.opencode-wrapper";
3
+ var SANDBOX_WRAPPER_SCRIPT = [
4
+ "#!/bin/bash",
5
+ "set -e",
6
+ 'while IFS= read -r line; do [ -z "$line" ] && break; export "$line"; done',
7
+ "PROMPT=$(cat)",
8
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
9
+ 'SPRITE_SOCK="/.sprite/api.sock"',
10
+ 'HEARTBEAT_PID=""',
11
+ 'if [ -S "$SPRITE_SOCK" ]; then',
12
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
13
+ " -X POST http://sprite/v1/tasks \\",
14
+ ' -H "Content-Type: application/json" \\',
15
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
16
+ " (while sleep 60; do",
17
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
18
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
19
+ ' -H "Content-Type: application/json" \\',
20
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
21
+ " done) &",
22
+ " HEARTBEAT_PID=$!",
23
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
24
+ "fi",
25
+ 'opencode "$@" "$PROMPT"'
26
+ ].join("\n");
27
+ async function installOpencodeWrapper(sandboxName, provider) {
28
+ const escaped = SANDBOX_WRAPPER_SCRIPT.replace(/'/g, "'\\''");
29
+ await provider.exec(sandboxName, [
30
+ "bash",
31
+ "-c",
32
+ `printf '%s' '${escaped}' > ${OPENCODE_WRAPPER_PATH} && chmod +x ${OPENCODE_WRAPPER_PATH}`
33
+ ]);
34
+ }
35
+
36
+ export {
37
+ OPENCODE_WRAPPER_PATH,
38
+ installOpencodeWrapper
39
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-DQ5VMD3Z.js";
4
+ } from "./chunk-WL3VMUAI.js";
5
5
 
6
6
  // src/handlers/whoami.ts
7
7
  function handleWhoami(request) {
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-HVUWXUUI.js";
11
11
  import {
12
12
  ensureInitialized
13
- } from "./chunk-KJENLSJT.js";
13
+ } from "./chunk-CR3UN3BC.js";
14
14
  import {
15
15
  captureException
16
16
  } from "./chunk-3MQ2FWXS.js";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  paginatedOk,
10
10
  routeWrap
11
- } from "./chunk-DQ5VMD3Z.js";
11
+ } from "./chunk-WL3VMUAI.js";
12
12
  import {
13
13
  badRequest
14
14
  } from "./chunk-EZYKRG4W.js";
@@ -8,6 +8,24 @@ var SANDBOX_WRAPPER_SCRIPT = [
8
8
  // issues when exec replaces the process, matching the claude wrapper pattern.
9
9
  "PROMPT_FILE=$(mktemp)",
10
10
  'cat > "$PROMPT_FILE"',
11
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
12
+ // Only activates if the sprites management socket exists (sprites containers only).
13
+ 'SPRITE_SOCK="/.sprite/api.sock"',
14
+ 'HEARTBEAT_PID=""',
15
+ 'if [ -S "$SPRITE_SOCK" ]; then',
16
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
17
+ " -X POST http://sprite/v1/tasks \\",
18
+ ' -H "Content-Type: application/json" \\',
19
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
20
+ " (while sleep 60; do",
21
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
22
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
23
+ ' -H "Content-Type: application/json" \\',
24
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
25
+ " done) &",
26
+ " HEARTBEAT_PID=$!",
27
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
28
+ "fi",
11
29
  // Set CWD to the first cloned repo if available, otherwise the user's home.
12
30
  // Without bwrap (--sandbox none), codex inherits the container exec CWD
13
31
  // which may be / or /root with no project context.
@@ -9,7 +9,7 @@ import {
9
9
  releaseSession,
10
10
  replenishWarmPool,
11
11
  wrapProviderWithSecrets
12
- } from "../chunk-MF3J7WTR.js";
12
+ } from "../chunk-I7FLMXEF.js";
13
13
  import "../chunk-6ERUVF2Y.js";
14
14
  import "../chunk-4XXQAVKE.js";
15
15
  import "../chunk-5ZFOKZGR.js";
@@ -22,45 +22,45 @@ import "../chunk-YPXI7Q2M.js";
22
22
  import "../chunk-N33MOUCH.js";
23
23
  import "../chunk-NVTDXBGV.js";
24
24
  import "../chunk-EFOIR7R3.js";
25
- import "../chunk-A4BGGHRC.js";
25
+ import "../chunk-7KSQJK2V.js";
26
26
  import "../chunk-6BOOQV4Q.js";
27
27
  import "../chunk-G7KUVNDY.js";
28
28
  import "../chunk-EGN4TPN5.js";
29
29
  import "../chunk-LSXVCZN7.js";
30
- import "../chunk-GBGXSRZX.js";
31
- import "../chunk-LGVD2IGL.js";
32
- import "../chunk-QYSDP6V5.js";
30
+ import "../chunk-4N7WVJHB.js";
31
+ import "../chunk-RTLMLG3A.js";
32
+ import "../chunk-CMOU2OFW.js";
33
33
  import "../chunk-B6E6BVNK.js";
34
- import "../chunk-JDBXIJKG.js";
35
- import "../chunk-6T4DKZYW.js";
34
+ import "../chunk-OGA7KDQZ.js";
35
+ import "../chunk-T4IPZC4G.js";
36
36
  import "../chunk-4IEDAORR.js";
37
37
  import "../chunk-V5DH3OAC.js";
38
- import "../chunk-P7P2NWZD.js";
38
+ import "../chunk-URNG7ZX2.js";
39
39
  import "../chunk-ETWGCBIQ.js";
40
- import "../chunk-SWIP7JBQ.js";
40
+ import "../chunk-UY3VT3HQ.js";
41
41
  import "../chunk-6KWJASEO.js";
42
42
  import "../chunk-ZEDULYKX.js";
43
- import "../chunk-NFGCFN57.js";
43
+ import "../chunk-SAA6477U.js";
44
44
  import "../chunk-IBYOMAZ3.js";
45
45
  import "../chunk-NOG7ZJJA.js";
46
- import "../chunk-XG4UIGDH.js";
46
+ import "../chunk-PAQ2JFVD.js";
47
47
  import "../chunk-S3JRZFF5.js";
48
- import "../chunk-3W6KEDQE.js";
48
+ import "../chunk-PZ5EGY64.js";
49
49
  import "../chunk-P56WU3UT.js";
50
- import "../chunk-OWG6UV4S.js";
50
+ import "../chunk-G43CK3VC.js";
51
51
  import "../chunk-TPMZO6S2.js";
52
52
  import "../chunk-WKMRBRJQ.js";
53
- import "../chunk-YSUPRYX2.js";
54
- import "../chunk-QQDSHL27.js";
53
+ import "../chunk-AQHYCRTO.js";
54
+ import "../chunk-KJ2GJLPQ.js";
55
55
  import "../chunk-7TSTCMII.js";
56
- import "../chunk-SKRIZPPF.js";
56
+ import "../chunk-KB4EKC5T.js";
57
57
  import "../chunk-CY6AWCC6.js";
58
58
  import "../chunk-SJ7WZEVY.js";
59
59
  import "../chunk-D6RQPBRG.js";
60
- import "../chunk-GUD3MOP7.js";
61
- import "../chunk-M2LUXIXU.js";
60
+ import "../chunk-RYVVSBST.js";
61
+ import "../chunk-NMZMRH3E.js";
62
62
  import "../chunk-CULYZ3VA.js";
63
- import "../chunk-E4FQRMHV.js";
63
+ import "../chunk-XJYR5HE3.js";
64
64
  import "../chunk-PJYCPDV5.js";
65
65
  import "../chunk-IBO36HUU.js";
66
66
  import "../chunk-SS5IC3XV.js";
@@ -68,7 +68,7 @@ import "../chunk-YE2RMJY7.js";
68
68
  import "../chunk-FX2AEKOV.js";
69
69
  import {
70
70
  installClaudeWrapper
71
- } from "../chunk-QBJOYOVF.js";
71
+ } from "../chunk-J6T3W6RY.js";
72
72
  import "../chunk-F4WUVOLE.js";
73
73
  import "../chunk-3WZGFAV4.js";
74
74
  import "../chunk-HFDLUBWN.js";
@@ -2,13 +2,13 @@ import {
2
2
  SENTINEL_DIR,
3
3
  kickoffEnvironmentSetup,
4
4
  prepareSprite
5
- } from "../chunk-SAUR463Z.js";
6
- import "../chunk-A4BGGHRC.js";
5
+ } from "../chunk-M2ZBXMYO.js";
6
+ import "../chunk-7KSQJK2V.js";
7
7
  import "../chunk-6BOOQV4Q.js";
8
8
  import "../chunk-LSXVCZN7.js";
9
9
  import {
10
10
  CLAUDE_WRAPPER_PATH
11
- } from "../chunk-QBJOYOVF.js";
11
+ } from "../chunk-J6T3W6RY.js";
12
12
  import "../chunk-F4WUVOLE.js";
13
13
  import "../chunk-HFDLUBWN.js";
14
14
  import "../chunk-T75UYYMI.js";