{"_id":"@alejandrocantero/agent-runner","_rev":"8-5c09b0beca34b0cf14ffdc9246ed564f","name":"@alejandrocantero/agent-runner","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@alejandrocantero/agent-runner","version":"0.1.0","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.1.0","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"74490bd9c8c42e159232ffe2222483e828f83f70","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.1.0.tgz","fileCount":39,"integrity":"sha512-bSsACL9iZK+yY5CnD+2gwr180G963HNdejIqHE0dWFBoubNio78nNOU9iAFaLlbwFvS0ykbOTYLpYazkTnre5Q==","signatures":[{"sig":"MEUCIQC7IqyXT1qq/JAdC14z/g1s3LdoVBokjcg9e5dUvTADLQIgTDozK0NY/cNJ8PtnZ5uCB+01fudyfEfqfVtVUrb0eVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51305},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"}},"gitHead":"01f04e21bddfab5852985f1bdbfc55bf59125171","imports":{"#src/*":{"types":"./dist/*.d.ts","default":"./dist/*.js"}},"scripts":{"dev":"tsx examples/basic.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.9.7","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.1.0_1777744547551_0.8922493044546662","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@alejandrocantero/agent-runner","version":"0.3.2","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.3.2","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"e5100e866cdf757bc73e421eb9ba93df37928a77","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.3.2.tgz","fileCount":35,"integrity":"sha512-WLgOCazqcoZiMFL6IqftO7aEzPXFidKmkaK5eNqqM3e7ckYKNRgv4XuzoBWuUkpGpHjYOjhBmlpSBY31Kpy7eA==","signatures":[{"sig":"MEYCIQDKCjAolyTnM7nzMcYXueh/9tb/LM+7AU3HoUFoFlXVewIhAOVlpzbMj9W9LXLKJLghkF3mfdPcAMLR2jBS6g2CFPOl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49170},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"}},"gitHead":"cee4115a34f72cc4f02601d6a51a51e0f8b9b265","scripts":{"dev":"tsx examples/basic.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.8.2","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.3.2_1777746985550_0.1336063986863063","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@alejandrocantero/agent-runner","version":"0.3.3","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.3.3","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"e10c4d00813405b271893f7b50e0e9118c1722aa","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.3.3.tgz","fileCount":35,"integrity":"sha512-fnuzqKhDSmA6fYTZq2IrT4xr4DwbOsfiqxzSkcSuxEI2B+tFg90XFPlli0ovh0Umi7ursLIEL5ySE5Mp3EW0IQ==","signatures":[{"sig":"MEUCIQDBgKJ6uhn64yIK32y8zKliur4xAO8QvDq2sH3wbbeTxwIgNRXkiFOCTj+ci6EiR3WLteNr/bFIbDUVv7/WjhOnFLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49170},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"}},"gitHead":"dd0c2e681edcac9f0b11db239175205ac9deb79d","scripts":{"dev":"tsx examples/basic.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.8.2","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.3.3_1777751252089_0.23155132591955518","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alejandrocantero/agent-runner","version":"0.4.0","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.4.0","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"5cd2d95189177a3266cd99ad6543e00d19853cf0","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.4.0.tgz","fileCount":35,"integrity":"sha512-iaKGx2XeSHBshcC/aW/0+me06ap7B2D0Z647C1pNdJnxGI8CwVwfhGC3klbaCmr4RpV4xGnzR4wJdmw/kE86NA==","signatures":[{"sig":"MEUCIFKE5Ig6/Ft1pLlv8zKqVLQkINrs5gIAIYMHzH/+bWT2AiEA3cb/wksiGnLz9nHcwZtKKeQYiuseb7Qtg9uS3xKWXU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62981},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"}},"gitHead":"1288b74dead415450004a026a1469bfb7b8925de","scripts":{"dev":"tsx examples/basic.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.8.2","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.4.0_1777796330033_0.9366689104616763","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@alejandrocantero/agent-runner","version":"0.4.1","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.4.1","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"ff8a422777aa37690af0a6ba3e1a45ac19c4bc30","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.4.1.tgz","fileCount":35,"integrity":"sha512-lv5L04B4rsGR1Kzkm8bGqPQdJDmB9llYOwPhQgdrkLYinoMI75/sjfqKy1ecoauU/x5bjmvS6yXvlMvdyzvSlA==","signatures":[{"sig":"MEQCIDKfu9CaISynE6E/Ulmpu3p27wx751hxpt8bIDnTCcF9AiBLfHbeZk9+37YdduT4BflMavIVwl0qSI8hpZY04kgXzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63033},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"}},"gitHead":"fe16eaa6769ba467b24d2649be8b517d32573b08","scripts":{"dev":"tsx examples/basic.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.8.2","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.4.1_1777796834378_0.9531301102853538","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alejandrocantero/agent-runner","version":"0.5.0","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.5.0","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"a572507592e6abdda3cf8fcefdbcfeeff466ce3b","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.5.0.tgz","fileCount":40,"integrity":"sha512-dhcneRAbDMD+ZoKTmSwTPix+KmCFitZJ1FkdKH4L97hYiCzm9lFi2XrGNo/HZ37TDDKAA3GY3Zim3zkUU71Erw==","signatures":[{"sig":"MEUCIBVcWzZXg7+bQs6inPKumSXVG7GdDv86MhZ4fh4sz4gsAiEAr4c7Y2q7OGbYMvgVFm8LAEIk4nFBUYLE+0tgAS4hEMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76605},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"},"./agents/opencode":{"types":"./dist/agents/opencode.d.ts","import":"./dist/agents/opencode.js"}},"gitHead":"a3acf2b9d9d48fad04bf1c9363c896bd1cfbcad0","scripts":{"dev":"tsx examples/opencode.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.8.2","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.5.0_1777823950186_0.1950803630290514","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alejandrocantero/agent-runner","version":"0.6.0","keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","_id":"@alejandrocantero/agent-runner@0.6.0","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"dist":{"shasum":"b67f840971f35d9d781226550312fa3a2d436723","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.6.0.tgz","fileCount":44,"integrity":"sha512-+aHbv+Yl6+O+gPLnjfj1eJYTXrdkAYcNJgl0szOoGSK72cDaqSU7LHTLYHGL2rXKgXDWpiV9MKAm5kjgMWkC4g==","signatures":[{"sig":"MEYCIQCWJFXSuLX6EEZaU10jbD15ZXvXm4iXZuLwqJJUyiVFJgIhALdY3dAFCmymhsg17TKnubzcEZGoqc6DNBofu6SlrnfO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79491},"main":"./dist/run.js","type":"module","types":"./dist/run.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"},"./agents/opencode":{"types":"./dist/agents/opencode.d.ts","import":"./dist/agents/opencode.js"}},"gitHead":"08aca15549cf3dfe79c52092f9c2f76d00ec8412","scripts":{"dev":"tsx examples/opencode.ts","lint":"biome check .","test":"vitest run","build":"tsc -p tsconfig.json","format":"biome format . --write","release":"tsx scripts/release.ts","lint:fix":"biome check . --write","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"_npmVersion":"10.8.2","description":"Run coding agents inside sandboxed worktrees.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"chalk":"^5.6.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^1.6.0","typescript":"^5.8.0","@types/node":"^22.0.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-runner_0.6.0_1777888163640_0.6673083155649819","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alejandrocantero/agent-runner","version":"0.7.0","description":"Run coding agents inside sandboxed worktrees.","type":"module","main":"./dist/run.js","types":"./dist/run.d.ts","exports":{".":{"types":"./dist/run.d.ts","import":"./dist/run.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./agents":{"types":"./dist/agents/claude.d.ts","import":"./dist/agents/claude.js"},"./agents/opencode":{"types":"./dist/agents/opencode.d.ts","import":"./dist/agents/opencode.js"},"./sandboxes":{"types":"./dist/sandboxes/docker.d.ts","import":"./dist/sandboxes/docker.js"}},"scripts":{"dev":"tsx examples/opencode.ts","build":"tsc -p tsconfig.json","format":"biome format . --write","lint":"biome check .","lint:fix":"biome check . --write","release":"tsx scripts/release.ts","test":"vitest run","typecheck":"tsc -p tsconfig.typecheck.json"},"keywords":["agent","sandbox","worktree","typescript"],"license":"MIT","dependencies":{"chalk":"^5.6.2"},"devDependencies":{"@biomejs/biome":"^1.9.4","@types/node":"^22.0.0","tsx":"^4.20.0","typescript":"^5.8.0","vitest":"^1.6.0"},"engines":{"node":">=20"},"_id":"@alejandrocantero/agent-runner@0.7.0","gitHead":"dd128cf5127b49ce7d0f144aca3d76e561f1d445","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3oLpEqKkyfvoLYhG7wj1+4DAA1wmauhlji0qwjMjOD77pUnA4UrgBzY3PhNMu0IhDgPDKdD98bN7jU86OYwTRQ==","shasum":"5bd1c56c31a48720eed867f5ac91b3916d868f49","tarball":"https://registry.npmjs.org/@alejandrocantero/agent-runner/-/agent-runner-0.7.0.tgz","fileCount":44,"unpackedSize":79491,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDZu2uFoFAygHUDsLe8vXtrZcDSP+5P0iK16Nuu7ebI6AiBkPug6S/A0972RvBZu0OHJqZlric/bLEGzE0r8rwer7A=="}]},"_npmUser":{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"},"directories":{},"maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-runner_0.7.0_1777888193034_0.15831414542256583"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-02T17:55:47.437Z","modified":"2026-05-04T09:49:53.300Z","0.1.0":"2026-05-02T17:55:47.706Z","0.3.2":"2026-05-02T18:36:25.687Z","0.3.3":"2026-05-02T19:47:32.230Z","0.4.0":"2026-05-03T08:18:50.187Z","0.4.1":"2026-05-03T08:27:14.517Z","0.5.0":"2026-05-03T15:59:10.326Z","0.6.0":"2026-05-04T09:49:23.823Z","0.7.0":"2026-05-04T09:49:53.165Z"},"license":"MIT","keywords":["agent","sandbox","worktree","typescript"],"description":"Run coding agents inside sandboxed worktrees.","maintainers":[{"name":"alejandrocanterouser","email":"alejandrotrust2@pm.me"}],"readme":"# Agent Runner\n\nA minimal TypeScript runner that executes coding agents inside a Docker sandbox against any local workspace directory.\n\n## Usage\n\n```ts\nimport { claudeCode } from \"@alejandrocantero/agent-runner/agents\"\nimport { commitAll, deleteWorktree, execInSandbox, runTask } from \"@alejandrocantero/agent-runner\"\nimport { dockerSandboxWithClaudeCode } from \"@alejandrocantero/agent-runner/sandboxes\"\nimport type { Agent, Sandbox } from \"@alejandrocantero/agent-runner/types\"\n\nconst agent: Agent = claudeCode(\"claude-sonnet-4-6\", {\n  effort: \"low\",\n})\nconst sandbox: Sandbox = dockerSandboxWithClaudeCode()\n\nconst result = await runTask({\n  agent,\n  sandbox,\n  prompt: \"Update the README\",\n  workspaceDir: \"/path/to/workspace\",\n  maxIterations: 3,\n  hooks: {\n    \"sandbox-create\": async ({ workspaceDir }) => {\n      console.log(`Preparing ${workspaceDir}`)\n    },\n    \"agent-start\": execInSandbox(\"npm install\"),\n    \"agent-finish\": commitAll({ message: \"Agent changes\" }),\n    \"sandbox-close\": async ({ status, workspaceDir }) => {\n      await deleteWorktree({ worktreeDir: workspaceDir, force: true })\n      console.log(`Task ended with ${status}`)\n    },\n  },\n  // Default: writes agent stdout/stderr to .agent-runner/logs/<agent>.log\n  // and tees the in-container output to your terminal.\n  // Use logging: { type: \"file\", tee: false } for quiet file-only logging.\n  // Use logging: { type: \"stdout\" } for terminal-only logging.\n})\n\nconsole.log(result)\n```\n\nOpenCode can be used with the same runner and Docker sandbox shape:\n\n```ts\nimport { openCode } from \"@alejandrocantero/agent-runner/agents/opencode\"\nimport { runTask } from \"@alejandrocantero/agent-runner\"\nimport { dockerSandboxWithOpenCode } from \"@alejandrocantero/agent-runner/sandboxes\"\n\nconst result = await runTask({\n  agent: openCode(\"anthropic/claude-sonnet-4-5\", {\n    agent: \"build\",\n  }),\n  sandbox: dockerSandboxWithOpenCode({\n    env: {\n      ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY ?? \"\",\n    },\n  }),\n  prompt: \"Update the README\",\n  workspaceDir: \"/path/to/workspace\",\n})\n```\n\n`result.logFilePath` contains the path to the log file when file logging is used.\n\nBy default, `runTask` appends a completion instruction to the prompt and waits for\n`<promise>COMPLETE</promise>` in the agent output. Set `completionSignal` to use a\ndifferent marker. Set `completionPrompt` to customize the appended instruction, or\nset `completionPrompt: false` to send the prompt exactly as provided.\n\nLifecycle hooks run in this order:\n\n1. `sandbox-create`: before Docker starts.\n2. `agent-start`: after Docker starts and before the first agent command.\n3. `agent-finish`: after completion, max iterations, or failure, before Docker exits.\n4. `sandbox-close`: after Docker closes.\n\nGit helpers such as `createWorktree`, `deleteWorktree`, `commitAll`, and `mergeBranchIntoHead` are optional utilities. `commitAll` and `mergeBranchIntoHead` are hook factories; `createWorktree` and `deleteWorktree` are direct async functions for preparing and removing worktrees.\n\nRun the included example:\n\n```bash\nnpm run dev\n```\n\n## Release\n\nReleases follow the same branch flow as `kanbamd`:\n\n```bash\nnpm run release -- <major|minor|patch|fix|premajor|preminor|prepatch|prerelease>\n```\n\nThe release script must run from `dev` with a clean working tree. It runs lint, typecheck, and tests, bumps `package.json`, builds, commits the version bump, pushes `dev`, fast-forwards `master`, and pushes `master`.\n\nPublishing is handled by GitHub Actions on pushes to `master`. Configure the repository secret `NPM_TOKEN` with an npm token that can publish `@alejandrocantero/agent-runner`.\n```\n","readmeFilename":"README.md"}