agent-bundle 0.1.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.
- package/LICENSE +21 -0
- package/README.md +161 -0
- package/dist/agent/agent.d.ts +32 -0
- package/dist/agent/agent.js +241 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/agent.test-helpers.d.ts +63 -0
- package/dist/agent/agent.test-helpers.js +170 -0
- package/dist/agent/agent.test-helpers.js.map +1 -0
- package/dist/agent/define-agent.d.ts +2 -0
- package/dist/agent/define-agent.js +18 -0
- package/dist/agent/define-agent.js.map +1 -0
- package/dist/agent/dependencies.d.ts +15 -0
- package/dist/agent/dependencies.js +14 -0
- package/dist/agent/dependencies.js.map +1 -0
- package/dist/agent/index.d.ts +4 -0
- package/dist/agent/index.js +5 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/internals.d.ts +28 -0
- package/dist/agent/internals.js +160 -0
- package/dist/agent/internals.js.map +1 -0
- package/dist/agent/session.d.ts +4 -0
- package/dist/agent/session.js +2 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/types.d.ts +52 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent-loop/agent-loop.d.ts +27 -0
- package/dist/agent-loop/agent-loop.js +2 -0
- package/dist/agent-loop/agent-loop.js.map +1 -0
- package/dist/agent-loop/index.d.ts +4 -0
- package/dist/agent-loop/index.js +5 -0
- package/dist/agent-loop/index.js.map +1 -0
- package/dist/agent-loop/pi-mono/events.d.ts +3 -0
- package/dist/agent-loop/pi-mono/events.js +73 -0
- package/dist/agent-loop/pi-mono/events.js.map +1 -0
- package/dist/agent-loop/pi-mono/index.d.ts +1 -0
- package/dist/agent-loop/pi-mono/index.js +2 -0
- package/dist/agent-loop/pi-mono/index.js.map +1 -0
- package/dist/agent-loop/pi-mono/input.d.ts +6 -0
- package/dist/agent-loop/pi-mono/input.js +120 -0
- package/dist/agent-loop/pi-mono/input.js.map +1 -0
- package/dist/agent-loop/pi-mono/model.d.ts +7 -0
- package/dist/agent-loop/pi-mono/model.js +72 -0
- package/dist/agent-loop/pi-mono/model.js.map +1 -0
- package/dist/agent-loop/pi-mono/pi-mono-loop.d.ts +11 -0
- package/dist/agent-loop/pi-mono/pi-mono-loop.js +167 -0
- package/dist/agent-loop/pi-mono/pi-mono-loop.js.map +1 -0
- package/dist/agent-loop/pi-mono/pi-mono-loop.test-helpers.d.ts +28 -0
- package/dist/agent-loop/pi-mono/pi-mono-loop.test-helpers.js +76 -0
- package/dist/agent-loop/pi-mono/pi-mono-loop.test-helpers.js.map +1 -0
- package/dist/agent-loop/pi-mono/queue.d.ts +9 -0
- package/dist/agent-loop/pi-mono/queue.js +37 -0
- package/dist/agent-loop/pi-mono/queue.js.map +1 -0
- package/dist/agent-loop/pi-mono/tools.d.ts +4 -0
- package/dist/agent-loop/pi-mono/tools.js +164 -0
- package/dist/agent-loop/pi-mono/tools.js.map +1 -0
- package/dist/agent-loop/pi-mono/utils.d.ts +14 -0
- package/dist/agent-loop/pi-mono/utils.js +83 -0
- package/dist/agent-loop/pi-mono/utils.js.map +1 -0
- package/dist/agent-loop/system-prompt/fill.d.ts +1 -0
- package/dist/agent-loop/system-prompt/fill.js +19 -0
- package/dist/agent-loop/system-prompt/fill.js.map +1 -0
- package/dist/agent-loop/system-prompt/generate.d.ts +11 -0
- package/dist/agent-loop/system-prompt/generate.js +21 -0
- package/dist/agent-loop/system-prompt/generate.js.map +1 -0
- package/dist/agent-loop/system-prompt/index.d.ts +2 -0
- package/dist/agent-loop/system-prompt/index.js +3 -0
- package/dist/agent-loop/system-prompt/index.js.map +1 -0
- package/dist/agent-loop/types.d.ts +77 -0
- package/dist/agent-loop/types.js +2 -0
- package/dist/agent-loop/types.js.map +1 -0
- package/dist/cli/build/build.d.ts +35 -0
- package/dist/cli/build/build.js +174 -0
- package/dist/cli/build/build.js.map +1 -0
- package/dist/cli/build/build.test-helpers.d.ts +9 -0
- package/dist/cli/build/build.test-helpers.js +50 -0
- package/dist/cli/build/build.test-helpers.js.map +1 -0
- package/dist/cli/build/codegen-commands.d.ts +16 -0
- package/dist/cli/build/codegen-commands.js +81 -0
- package/dist/cli/build/codegen-commands.js.map +1 -0
- package/dist/cli/build/codegen.d.ts +55 -0
- package/dist/cli/build/codegen.js +212 -0
- package/dist/cli/build/codegen.js.map +1 -0
- package/dist/cli/build/e2b-template.d.ts +38 -0
- package/dist/cli/build/e2b-template.js +210 -0
- package/dist/cli/build/e2b-template.js.map +1 -0
- package/dist/cli/build/e2b-template.test-helpers.d.ts +19 -0
- package/dist/cli/build/e2b-template.test-helpers.js +80 -0
- package/dist/cli/build/e2b-template.test-helpers.js.map +1 -0
- package/dist/cli/build/sandbox-image.d.ts +35 -0
- package/dist/cli/build/sandbox-image.js +57 -0
- package/dist/cli/build/sandbox-image.js.map +1 -0
- package/dist/cli/build-codegen.d.ts +41 -0
- package/dist/cli/build-codegen.js +168 -0
- package/dist/cli/build-codegen.js.map +1 -0
- package/dist/cli/build-e2b-template.d.ts +38 -0
- package/dist/cli/build-e2b-template.js +223 -0
- package/dist/cli/build-e2b-template.js.map +1 -0
- package/dist/cli/build-e2b-template.test-helpers.d.ts +19 -0
- package/dist/cli/build-e2b-template.test-helpers.js +80 -0
- package/dist/cli/build-e2b-template.test-helpers.js.map +1 -0
- package/dist/cli/build-sandbox-image.d.ts +35 -0
- package/dist/cli/build-sandbox-image.js +57 -0
- package/dist/cli/build-sandbox-image.js.map +1 -0
- package/dist/cli/build.d.ts +30 -0
- package/dist/cli/build.js +151 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/build.test-helpers.d.ts +9 -0
- package/dist/cli/build.test-helpers.js +50 -0
- package/dist/cli/build.test-helpers.js.map +1 -0
- package/dist/cli/config/load-bundle-config.d.ts +2 -0
- package/dist/cli/config/load-bundle-config.js +20 -0
- package/dist/cli/config/load-bundle-config.js.map +1 -0
- package/dist/cli/config/resolve-project-root.d.ts +1 -0
- package/dist/cli/config/resolve-project-root.js +19 -0
- package/dist/cli/config/resolve-project-root.js.map +1 -0
- package/dist/cli/deploy/aws-cli.d.ts +42 -0
- package/dist/cli/deploy/aws-cli.js +95 -0
- package/dist/cli/deploy/aws-cli.js.map +1 -0
- package/dist/cli/deploy/aws-ecr.d.ts +20 -0
- package/dist/cli/deploy/aws-ecr.js +97 -0
- package/dist/cli/deploy/aws-ecr.js.map +1 -0
- package/dist/cli/deploy/aws-ecs-infra.d.ts +39 -0
- package/dist/cli/deploy/aws-ecs-infra.js +169 -0
- package/dist/cli/deploy/aws-ecs-infra.js.map +1 -0
- package/dist/cli/deploy/aws-ecs-role.d.ts +9 -0
- package/dist/cli/deploy/aws-ecs-role.js +114 -0
- package/dist/cli/deploy/aws-ecs-role.js.map +1 -0
- package/dist/cli/deploy/aws-ecs-service.d.ts +37 -0
- package/dist/cli/deploy/aws-ecs-service.js +207 -0
- package/dist/cli/deploy/aws-ecs-service.js.map +1 -0
- package/dist/cli/deploy/aws-ecs-shared.d.ts +59 -0
- package/dist/cli/deploy/aws-ecs-shared.js +30 -0
- package/dist/cli/deploy/aws-ecs-shared.js.map +1 -0
- package/dist/cli/deploy/aws-ecs.d.ts +3 -0
- package/dist/cli/deploy/aws-ecs.js +141 -0
- package/dist/cli/deploy/aws-ecs.js.map +1 -0
- package/dist/cli/deploy/aws-prerequisites.d.ts +16 -0
- package/dist/cli/deploy/aws-prerequisites.js +28 -0
- package/dist/cli/deploy/aws-prerequisites.js.map +1 -0
- package/dist/cli/deploy/aws-teardown.d.ts +13 -0
- package/dist/cli/deploy/aws-teardown.js +204 -0
- package/dist/cli/deploy/aws-teardown.js.map +1 -0
- package/dist/cli/deploy/deploy.d.ts +36 -0
- package/dist/cli/deploy/deploy.js +209 -0
- package/dist/cli/deploy/deploy.js.map +1 -0
- package/dist/cli/error.d.ts +1 -0
- package/dist/cli/error.js +4 -0
- package/dist/cli/error.js.map +1 -0
- package/dist/cli/generate/generate.d.ts +37 -0
- package/dist/cli/generate/generate.js +121 -0
- package/dist/cli/generate/generate.js.map +1 -0
- package/dist/cli/generate.d.ts +32 -0
- package/dist/cli/generate.js +102 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +182 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/load-bundle-config.d.ts +2 -0
- package/dist/cli/load-bundle-config.js +20 -0
- package/dist/cli/load-bundle-config.js.map +1 -0
- package/dist/cli/resolve-project-root.d.ts +1 -0
- package/dist/cli/resolve-project-root.js +19 -0
- package/dist/cli/resolve-project-root.js.map +1 -0
- package/dist/cli/serve/dev.d.ts +6 -0
- package/dist/cli/serve/dev.js +73 -0
- package/dist/cli/serve/dev.js.map +1 -0
- package/dist/cli/serve/http.d.ts +12 -0
- package/dist/cli/serve/http.js +123 -0
- package/dist/cli/serve/http.js.map +1 -0
- package/dist/cli/serve/init.d.ts +42 -0
- package/dist/cli/serve/init.js +110 -0
- package/dist/cli/serve/init.js.map +1 -0
- package/dist/cli/serve/runtime.d.ts +25 -0
- package/dist/cli/serve/runtime.js +142 -0
- package/dist/cli/serve/runtime.js.map +1 -0
- package/dist/cli/serve/serve.d.ts +7 -0
- package/dist/cli/serve/serve.js +63 -0
- package/dist/cli/serve/serve.js.map +1 -0
- package/dist/cli/serve/serve.test-helpers.d.ts +36 -0
- package/dist/cli/serve/serve.test-helpers.js +205 -0
- package/dist/cli/serve/serve.test-helpers.js.map +1 -0
- package/dist/cli/serve/worktree-port.d.ts +36 -0
- package/dist/cli/serve/worktree-port.js +124 -0
- package/dist/cli/serve/worktree-port.js.map +1 -0
- package/dist/cli/serve-http.d.ts +12 -0
- package/dist/cli/serve-http.js +112 -0
- package/dist/cli/serve-http.js.map +1 -0
- package/dist/cli/serve-runtime.d.ts +16 -0
- package/dist/cli/serve-runtime.js +122 -0
- package/dist/cli/serve-runtime.js.map +1 -0
- package/dist/cli/serve.d.ts +33 -0
- package/dist/cli/serve.js +150 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/serve.test-helpers.d.ts +30 -0
- package/dist/cli/serve.test-helpers.js +145 -0
- package/dist/cli/serve.test-helpers.js.map +1 -0
- package/dist/code-formatter/bundle.json +41 -0
- package/dist/code-formatter/index.ts +26 -0
- package/dist/code-formatter/package.json +10 -0
- package/dist/code-formatter/types.ts +2 -0
- package/dist/code-formatter-e2b/bundle.json +40 -0
- package/dist/code-formatter-e2b/index.ts +25 -0
- package/dist/code-formatter-e2b/package.json +10 -0
- package/dist/code-formatter-e2b/types.ts +2 -0
- package/dist/coding-assistant-ollama/bundle.json +43 -0
- package/dist/coding-assistant-ollama/index.ts +28 -0
- package/dist/coding-assistant-ollama/package.json +10 -0
- package/dist/coding-assistant-ollama/types.ts +2 -0
- package/dist/commands/find.d.ts +8 -0
- package/dist/commands/find.js +11 -0
- package/dist/commands/find.js.map +1 -0
- package/dist/commands/loader.d.ts +13 -0
- package/dist/commands/loader.js +163 -0
- package/dist/commands/loader.js.map +1 -0
- package/dist/commands/types.d.ts +7 -0
- package/dist/commands/types.js +2 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/with-commands.d.ts +6 -0
- package/dist/commands/with-commands.js +19 -0
- package/dist/commands/with-commands.js.map +1 -0
- package/dist/data-analyst/bundle.json +40 -0
- package/dist/data-analyst/index.ts +25 -0
- package/dist/data-analyst/package.json +10 -0
- package/dist/data-analyst/types.ts +2 -0
- package/dist/financial-analyst/bundle.json +40 -0
- package/dist/financial-analyst/index.ts +25 -0
- package/dist/financial-analyst/package.json +10 -0
- package/dist/financial-analyst/types.ts +2 -0
- package/dist/mcp/client-manager.d.ts +26 -0
- package/dist/mcp/client-manager.js +101 -0
- package/dist/mcp/client-manager.js.map +1 -0
- package/dist/mcp/connect-server.d.ts +21 -0
- package/dist/mcp/connect-server.js +170 -0
- package/dist/mcp/connect-server.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/sandbox-stdio-transport.d.ts +32 -0
- package/dist/mcp/sandbox-stdio-transport.js +199 -0
- package/dist/mcp/sandbox-stdio-transport.js.map +1 -0
- package/dist/observability/hooks.d.ts +10 -0
- package/dist/observability/hooks.js +97 -0
- package/dist/observability/hooks.js.map +1 -0
- package/dist/observability/index.d.ts +6 -0
- package/dist/observability/index.js +7 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +31 -0
- package/dist/observability/metrics.js +61 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/middleware.d.ts +12 -0
- package/dist/observability/middleware.js +45 -0
- package/dist/observability/middleware.js.map +1 -0
- package/dist/observability/otel-harness.test-util.d.ts +37 -0
- package/dist/observability/otel-harness.test-util.js +96 -0
- package/dist/observability/otel-harness.test-util.js.map +1 -0
- package/dist/observability/provider.d.ts +8 -0
- package/dist/observability/provider.js +19 -0
- package/dist/observability/provider.js.map +1 -0
- package/dist/observability/tracing.d.ts +14 -0
- package/dist/observability/tracing.js +40 -0
- package/dist/observability/tracing.js.map +1 -0
- package/dist/observability/types.d.ts +39 -0
- package/dist/observability/types.js +31 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/personalized-recommend/bundle.json +64 -0
- package/dist/personalized-recommend/index.ts +41 -0
- package/dist/personalized-recommend/package.json +10 -0
- package/dist/personalized-recommend/types.ts +2 -0
- package/dist/plugins/loader.d.ts +11 -0
- package/dist/plugins/loader.js +100 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/merge.d.ts +10 -0
- package/dist/plugins/merge.js +22 -0
- package/dist/plugins/merge.js.map +1 -0
- package/dist/plugins/parse.d.ts +10 -0
- package/dist/plugins/parse.js +139 -0
- package/dist/plugins/parse.js.map +1 -0
- package/dist/plugins/types.d.ts +28 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/urls.d.ts +7 -0
- package/dist/plugins/urls.js +40 -0
- package/dist/plugins/urls.js.map +1 -0
- package/dist/runtime.d.ts +5 -0
- package/dist/runtime.js +3 -0
- package/dist/runtime.js.map +1 -0
- package/dist/sandbox/factory.d.ts +2 -0
- package/dist/sandbox/factory.js +27 -0
- package/dist/sandbox/factory.js.map +1 -0
- package/dist/sandbox/index.d.ts +4 -0
- package/dist/sandbox/index.js +5 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/providers/e2b.d.ts +28 -0
- package/dist/sandbox/providers/e2b.js +294 -0
- package/dist/sandbox/providers/e2b.js.map +1 -0
- package/dist/sandbox/providers/kubernetes-command-run.d.ts +8 -0
- package/dist/sandbox/providers/kubernetes-command-run.js +195 -0
- package/dist/sandbox/providers/kubernetes-command-run.js.map +1 -0
- package/dist/sandbox/providers/kubernetes-helpers.d.ts +31 -0
- package/dist/sandbox/providers/kubernetes-helpers.js +152 -0
- package/dist/sandbox/providers/kubernetes-helpers.js.map +1 -0
- package/dist/sandbox/providers/kubernetes-kubeconfig.d.ts +7 -0
- package/dist/sandbox/providers/kubernetes-kubeconfig.js +51 -0
- package/dist/sandbox/providers/kubernetes-kubeconfig.js.map +1 -0
- package/dist/sandbox/providers/kubernetes-spawn.d.ts +2 -0
- package/dist/sandbox/providers/kubernetes-spawn.js +42 -0
- package/dist/sandbox/providers/kubernetes-spawn.js.map +1 -0
- package/dist/sandbox/providers/kubernetes-spawn.utils.d.ts +32 -0
- package/dist/sandbox/providers/kubernetes-spawn.utils.js +249 -0
- package/dist/sandbox/providers/kubernetes-spawn.utils.js.map +1 -0
- package/dist/sandbox/providers/kubernetes.constants.d.ts +3 -0
- package/dist/sandbox/providers/kubernetes.constants.js +4 -0
- package/dist/sandbox/providers/kubernetes.constants.js.map +1 -0
- package/dist/sandbox/providers/kubernetes.d.ts +37 -0
- package/dist/sandbox/providers/kubernetes.js +258 -0
- package/dist/sandbox/providers/kubernetes.js.map +1 -0
- package/dist/sandbox/types.d.ts +57 -0
- package/dist/sandbox/types.js +2 -0
- package/dist/sandbox/types.js.map +1 -0
- package/dist/sandbox/utils.d.ts +1 -0
- package/dist/sandbox/utils.js +4 -0
- package/dist/sandbox/utils.js.map +1 -0
- package/dist/schema/bundle.d.ts +143 -0
- package/dist/schema/bundle.js +203 -0
- package/dist/schema/bundle.js.map +1 -0
- package/dist/service/command-routes.d.ts +8 -0
- package/dist/service/command-routes.js +44 -0
- package/dist/service/command-routes.js.map +1 -0
- package/dist/service/create-server.d.ts +9 -0
- package/dist/service/create-server.js +113 -0
- package/dist/service/create-server.js.map +1 -0
- package/dist/service/index.d.ts +1 -0
- package/dist/service/index.js +2 -0
- package/dist/service/index.js.map +1 -0
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.js +2 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +18 -0
- package/dist/skills/loader.js +142 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/summaries.d.ts +8 -0
- package/dist/skills/summaries.js +9 -0
- package/dist/skills/summaries.js.map +1 -0
- package/dist/test-helpers/env.d.ts +2 -0
- package/dist/test-helpers/env.js +20 -0
- package/dist/test-helpers/env.js.map +1 -0
- package/dist/test-helpers/mock-agent.d.ts +56 -0
- package/dist/test-helpers/mock-agent.js +180 -0
- package/dist/test-helpers/mock-agent.js.map +1 -0
- package/dist/test-helpers/mock-sandbox.d.ts +33 -0
- package/dist/test-helpers/mock-sandbox.js +200 -0
- package/dist/test-helpers/mock-sandbox.js.map +1 -0
- package/dist/tui/index.d.ts +2 -0
- package/dist/tui/index.js +3 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/render.d.ts +8 -0
- package/dist/tui/render.js +40 -0
- package/dist/tui/render.js.map +1 -0
- package/dist/tui/tui.d.ts +19 -0
- package/dist/tui/tui.js +133 -0
- package/dist/tui/tui.js.map +1 -0
- package/dist/webui/create-webui-server.d.ts +22 -0
- package/dist/webui/create-webui-server.js +293 -0
- package/dist/webui/create-webui-server.js.map +1 -0
- package/dist/webui/event-bus.d.ts +16 -0
- package/dist/webui/event-bus.js +24 -0
- package/dist/webui/event-bus.js.map +1 -0
- package/dist/webui/index.d.ts +2 -0
- package/dist/webui/index.js +3 -0
- package/dist/webui/index.js.map +1 -0
- package/dist/webui/public/app.js +847 -0
- package/dist/webui/public/file-transfer.js +114 -0
- package/dist/webui/public/index.html +166 -0
- package/dist/webui/public/styles.css +1678 -0
- package/package.json +99 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Yujia Chen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# agent-bundle
|
|
2
|
+
|
|
3
|
+
[](https://github.com/yujiachen-y/agent-bundle/actions/workflows/ci.yml)
|
|
4
|
+
[](https://codecov.io/gh/yujiachen-y/agent-bundle)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
[](https://nodejs.org/)
|
|
7
|
+
[](https://agent-bundle.com)
|
|
8
|
+
|
|
9
|
+
> Define skills in YAML. Develop with a live sandbox UI. Ship as a typed TypeScript package.
|
|
10
|
+
|
|
11
|
+
**Anthropic · OpenAI · Gemini · Ollama · OpenRouter** — **E2B · Kubernetes sandboxes** — **AWS ECS Fargate deploy** _(beta)_
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Why
|
|
16
|
+
|
|
17
|
+
Agent skills work great inside local coding agents. Deploying them to production is a different story.
|
|
18
|
+
|
|
19
|
+
| | Without agent-bundle | With agent-bundle |
|
|
20
|
+
|--|---------------------|-------------------|
|
|
21
|
+
| **Develop** | Skills run in local coding agents only | `agent-bundle dev` — WebUI with live sandbox view |
|
|
22
|
+
| **Ship** | Rewrite skill logic into a service from scratch | `agent-bundle build` — typed TypeScript factory + Docker image |
|
|
23
|
+
| **Behave** | Dev and prod diverge silently | Same sandbox runtime in both modes |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
### 1. Install
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm install && pnpm build
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 2. Define your bundle
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
# agent-bundle.yaml
|
|
39
|
+
name: my-agent
|
|
40
|
+
|
|
41
|
+
model:
|
|
42
|
+
provider: anthropic
|
|
43
|
+
model: claude-sonnet-4-5
|
|
44
|
+
|
|
45
|
+
prompt:
|
|
46
|
+
system: |
|
|
47
|
+
You are a helpful agent.
|
|
48
|
+
Follow the skill instructions precisely.
|
|
49
|
+
variables:
|
|
50
|
+
- user_name
|
|
51
|
+
|
|
52
|
+
sandbox:
|
|
53
|
+
provider: kubernetes
|
|
54
|
+
kubernetes:
|
|
55
|
+
image: my-sandbox:latest
|
|
56
|
+
|
|
57
|
+
skills:
|
|
58
|
+
- path: ./skills/my-skill
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
See [Agent Skills](https://github.com/agent-skills/spec) for the skill format and [Configuration Guide](./docs/configuration.md) for all options.
|
|
62
|
+
|
|
63
|
+
### 3. Run locally
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
agent-bundle dev
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Opens a WebUI at `http://localhost:3000` where you can chat with the agent and watch its file tree and terminal output in real time — see exactly what it's doing inside the sandbox.
|
|
70
|
+
|
|
71
|
+
Ready to deploy? See [Build & Embed](#build--embed) below.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Features
|
|
76
|
+
|
|
77
|
+
- **Live sandbox view** — WebUI at localhost:3000 shows the agent's file tree and terminal in real time. No more black boxes.
|
|
78
|
+
- **Type-safe codegen** — Prisma-style `generate`. Variable names are checked at compile time — miss one and it won't build.
|
|
79
|
+
- **Dev-prod parity** — `dev`, `serve`, and `build` share the same sandbox abstraction. What passes locally ships as-is.
|
|
80
|
+
- **No vendor lock-in** — Swap model providers or sandbox backends with one line of YAML.
|
|
81
|
+
- **Session recovery** — Agent crashes mid-run? Resume from its last conversation state.
|
|
82
|
+
- **Token-scoped MCP** — Connect to internal services via MCP servers. Even under prompt injection, the agent cannot exceed what the MCP server permits for that token.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Build & Embed
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
agent-bundle build
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Produces a typed, embeddable package:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
dist/my-agent/
|
|
96
|
+
├── index.ts ← typed agent factory
|
|
97
|
+
├── types.ts ← variable types
|
|
98
|
+
├── bundle.json ← config snapshot
|
|
99
|
+
└── package.json ← scoped package metadata
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
If `sandbox.kubernetes.build` is configured, `agent-bundle build` runs a local `docker build` for that image tag. Image push/import is still an explicit user step.
|
|
103
|
+
If `sandbox.provider` is `e2b`, `agent-bundle build` generates a temporary E2B context (`/skills`, `/tools`, `e2b.Dockerfile`) and bakes the resolved template ref into `bundle.json`. See [Configuration Guide](./docs/configuration.md#sandbox) for SDK/CLI fallback and auth details.
|
|
104
|
+
|
|
105
|
+
### Deploy to AWS _(beta)_
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
agent-bundle deploy --target aws --secret API_KEY
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Pushes the built Docker image to ECR and deploys to ECS Fargate — no Terraform or CloudFormation required. See [Deploy](./docs/configuration.md#deploy-beta) for details.
|
|
112
|
+
|
|
113
|
+
Integrate into any Node.js service:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { MyAgent } from "./dist/my-agent";
|
|
117
|
+
|
|
118
|
+
const agent = await MyAgent.init({
|
|
119
|
+
variables: { user_name: "Alice" },
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const response = await agent.respond([
|
|
123
|
+
{ role: "user", content: "Extract all line items" },
|
|
124
|
+
]);
|
|
125
|
+
await agent.shutdown();
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Variable names are checked at compile time. Lifecycle hooks, file I/O, and session recovery are covered in the [Configuration Guide](./docs/configuration.md).
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Architecture
|
|
133
|
+
|
|
134
|
+

|
|
135
|
+
|
|
136
|
+
The agent orchestrator routes between the LLM provider, sandbox, and MCP servers. All three interfaces share the same abstraction across `dev`, `serve`, and `build` modes.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
If agent-bundle is useful to you, consider giving it a ⭐. It helps others discover the project.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Roadmap
|
|
145
|
+
|
|
146
|
+
- [ ] `deploy --target aws` GA — currently beta, stability not guaranteed
|
|
147
|
+
- [ ] GCP Cloud Run deploy target
|
|
148
|
+
- [ ] Pluggable agent loop engines — Claude Code, Codex via process bridge
|
|
149
|
+
- [ ] Fine-grained Docker sandbox isolation
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Contributing
|
|
154
|
+
|
|
155
|
+
Contributions welcome! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
[MIT](./LICENSE)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ResponseInput, type ResponseOutput } from "../agent-loop/index.js";
|
|
2
|
+
import { type AgentDependencies } from "./dependencies.js";
|
|
3
|
+
import type { Agent, AgentConfig, AgentStatus, InitOptions, RespondStreamOptions } from "./types.js";
|
|
4
|
+
export declare class AgentImpl<V extends string> implements Agent {
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly options;
|
|
7
|
+
private readonly dependencies;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
private statusValue;
|
|
10
|
+
private sandbox;
|
|
11
|
+
private loop;
|
|
12
|
+
private mcpClientManager;
|
|
13
|
+
private conversationHistory;
|
|
14
|
+
private readonly otelHooks;
|
|
15
|
+
private readonly instrumentToolCall;
|
|
16
|
+
private readonly instrumentMcpCall;
|
|
17
|
+
constructor(config: AgentConfig<V>, options: InitOptions<V>, dependencies?: AgentDependencies);
|
|
18
|
+
get status(): AgentStatus;
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
respond(input: ResponseInput): Promise<ResponseOutput>;
|
|
21
|
+
respondStream(input: ResponseInput, options?: RespondStreamOptions): AsyncGenerator<import("../agent-loop/types.js").ResponseEvent, void, unknown>;
|
|
22
|
+
shutdown(): Promise<void>;
|
|
23
|
+
private createMcpManager;
|
|
24
|
+
private handleToolCall;
|
|
25
|
+
private executeToolCall;
|
|
26
|
+
private handleReadTool;
|
|
27
|
+
private handleWriteTool;
|
|
28
|
+
private handleBashTool;
|
|
29
|
+
private handleMcpTool;
|
|
30
|
+
private isStopped;
|
|
31
|
+
}
|
|
32
|
+
export declare function createInitializedAgent<V extends string>(config: AgentConfig<V>, options: InitOptions<V>): Promise<Agent>;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { fillSystemPrompt, } from "../agent-loop/index.js";
|
|
2
|
+
import { createAgentHooks, createMcpCallInstrumenter, createToolCallInstrumenter, } from "../observability/hooks.js";
|
|
3
|
+
import { createDefaultDependencies, } from "./dependencies.js";
|
|
4
|
+
import { disposeResources, extractOptionalChunkHandler, ensureRunnableStatus, extractOptionalNumber, extractOptionalString, extractRequiredNonEmptyString, extractRequiredString, formatExecResult, isMcpTool, parseMcpToolName, readFieldError, readFieldTypeError, toConversationInput, toErrorMessage, toNextConversationHistory, toToolError, validateModelApiKey, } from "./internals.js";
|
|
5
|
+
export class AgentImpl {
|
|
6
|
+
config;
|
|
7
|
+
options;
|
|
8
|
+
dependencies;
|
|
9
|
+
name;
|
|
10
|
+
statusValue = "stopped";
|
|
11
|
+
sandbox = null;
|
|
12
|
+
loop = null;
|
|
13
|
+
mcpClientManager = null;
|
|
14
|
+
conversationHistory = [];
|
|
15
|
+
otelHooks;
|
|
16
|
+
instrumentToolCall;
|
|
17
|
+
instrumentMcpCall;
|
|
18
|
+
constructor(config, options, dependencies = createDefaultDependencies()) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.dependencies = dependencies;
|
|
22
|
+
this.name = config.name;
|
|
23
|
+
const otel = dependencies.observability ?? null;
|
|
24
|
+
this.otelHooks = otel ? createAgentHooks(otel, config.name) : null;
|
|
25
|
+
this.instrumentToolCall = otel ? createToolCallInstrumenter(otel) : null;
|
|
26
|
+
this.instrumentMcpCall = otel ? createMcpCallInstrumenter(otel) : null;
|
|
27
|
+
}
|
|
28
|
+
get status() {
|
|
29
|
+
return this.statusValue;
|
|
30
|
+
}
|
|
31
|
+
async initialize() {
|
|
32
|
+
const systemPrompt = fillSystemPrompt(this.config.systemPrompt, this.options.variables);
|
|
33
|
+
validateModelApiKey(this.config.model.provider);
|
|
34
|
+
const sandbox = this.dependencies.createSandbox(this.config.sandbox, this.options.hooks ?? {});
|
|
35
|
+
const loop = this.dependencies.createLoop();
|
|
36
|
+
this.sandbox = sandbox;
|
|
37
|
+
this.loop = loop;
|
|
38
|
+
this.conversationHistory = this.options.session?.conversationHistory ?? [];
|
|
39
|
+
try {
|
|
40
|
+
await sandbox.start();
|
|
41
|
+
this.mcpClientManager = await this.createMcpManager();
|
|
42
|
+
const externalTools = this.mcpClientManager?.tools ?? [];
|
|
43
|
+
await loop.init({
|
|
44
|
+
systemPrompt,
|
|
45
|
+
model: this.config.model,
|
|
46
|
+
toolHandler: async (call) => {
|
|
47
|
+
return await this.handleToolCall(call);
|
|
48
|
+
},
|
|
49
|
+
...(externalTools.length > 0 ? { externalTools } : {}),
|
|
50
|
+
});
|
|
51
|
+
this.statusValue = "ready";
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
this.statusValue = "stopped";
|
|
55
|
+
await disposeResources(loop, this.mcpClientManager, sandbox);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async respond(input) {
|
|
60
|
+
let responseOutput = null;
|
|
61
|
+
let responseError = null;
|
|
62
|
+
for await (const event of this.respondStream(input)) {
|
|
63
|
+
if (event.type === "response.completed") {
|
|
64
|
+
responseOutput = event.output;
|
|
65
|
+
}
|
|
66
|
+
if (event.type === "response.error") {
|
|
67
|
+
responseError = event.error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (responseError) {
|
|
71
|
+
throw new Error(responseError);
|
|
72
|
+
}
|
|
73
|
+
if (!responseOutput) {
|
|
74
|
+
throw new Error("Agent did not produce a completed response.");
|
|
75
|
+
}
|
|
76
|
+
return responseOutput;
|
|
77
|
+
}
|
|
78
|
+
async *respondStream(input, options) {
|
|
79
|
+
ensureRunnableStatus(this.statusValue);
|
|
80
|
+
const loop = this.loop;
|
|
81
|
+
if (!loop) {
|
|
82
|
+
throw new Error("Agent loop is not initialized.");
|
|
83
|
+
}
|
|
84
|
+
const signal = options?.signal;
|
|
85
|
+
const runInput = toConversationInput(this.conversationHistory, input);
|
|
86
|
+
this.statusValue = "running";
|
|
87
|
+
const startMs = this.otelHooks?.onRespondStart();
|
|
88
|
+
let completedOutput = null;
|
|
89
|
+
let respondError;
|
|
90
|
+
try {
|
|
91
|
+
for await (const event of loop.run(runInput, { signal })) {
|
|
92
|
+
if (signal?.aborted)
|
|
93
|
+
break;
|
|
94
|
+
if (event.type === "response.completed") {
|
|
95
|
+
completedOutput = event.output;
|
|
96
|
+
if (event.output.usage && this.otelHooks) {
|
|
97
|
+
this.otelHooks.onTokenUsage(event.output.usage);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (event.type === "response.error") {
|
|
101
|
+
respondError = new Error(event.error);
|
|
102
|
+
}
|
|
103
|
+
yield event;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
respondError = error;
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
if (!this.isStopped()) {
|
|
112
|
+
this.statusValue = "ready";
|
|
113
|
+
}
|
|
114
|
+
if (startMs !== undefined && this.otelHooks) {
|
|
115
|
+
this.otelHooks.onRespondEnd(startMs, respondError);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (!respondError && completedOutput) {
|
|
119
|
+
this.conversationHistory = toNextConversationHistory(runInput, completedOutput);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async shutdown() {
|
|
123
|
+
if (this.statusValue === "stopped") {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const loop = this.loop;
|
|
127
|
+
const mcpClientManager = this.mcpClientManager;
|
|
128
|
+
const sandbox = this.sandbox;
|
|
129
|
+
this.statusValue = "stopped";
|
|
130
|
+
this.loop = null;
|
|
131
|
+
this.mcpClientManager = null;
|
|
132
|
+
this.sandbox = null;
|
|
133
|
+
await disposeResources(loop, mcpClientManager, sandbox);
|
|
134
|
+
}
|
|
135
|
+
async createMcpManager() {
|
|
136
|
+
if (!this.config.mcp || this.config.mcp.length === 0) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const mcpTokens = this.options.mcpTokens ?? {};
|
|
140
|
+
return await this.dependencies.createMcpClientManager(this.config.mcp, mcpTokens, this.sandbox);
|
|
141
|
+
}
|
|
142
|
+
async handleToolCall(call) {
|
|
143
|
+
if (this.instrumentToolCall) {
|
|
144
|
+
return this.instrumentToolCall(call, (c) => this.executeToolCall(c));
|
|
145
|
+
}
|
|
146
|
+
return this.executeToolCall(call);
|
|
147
|
+
}
|
|
148
|
+
async executeToolCall(call) {
|
|
149
|
+
const sandbox = this.sandbox;
|
|
150
|
+
if (!sandbox) {
|
|
151
|
+
return toToolError(call.id, "Sandbox is not available.");
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
const normalizedName = call.name.trim().toLowerCase();
|
|
155
|
+
if (normalizedName === "read") {
|
|
156
|
+
return await this.handleReadTool(call, sandbox);
|
|
157
|
+
}
|
|
158
|
+
if (normalizedName === "write") {
|
|
159
|
+
return await this.handleWriteTool(call, sandbox);
|
|
160
|
+
}
|
|
161
|
+
if (normalizedName === "bash") {
|
|
162
|
+
return await this.handleBashTool(call, sandbox);
|
|
163
|
+
}
|
|
164
|
+
if (isMcpTool(call.name)) {
|
|
165
|
+
return await this.handleMcpTool(call);
|
|
166
|
+
}
|
|
167
|
+
return toToolError(call.id, `Unsupported tool \"${call.name}\".`);
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
return toToolError(call.id, toErrorMessage(error));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async handleReadTool(call, sandbox) {
|
|
174
|
+
const path = extractRequiredNonEmptyString(call.input, "path");
|
|
175
|
+
if (!path) {
|
|
176
|
+
return readFieldError(call.id, "Read", "path");
|
|
177
|
+
}
|
|
178
|
+
const content = await sandbox.file.read(path);
|
|
179
|
+
return {
|
|
180
|
+
toolCallId: call.id,
|
|
181
|
+
output: content,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
async handleWriteTool(call, sandbox) {
|
|
185
|
+
const path = extractRequiredNonEmptyString(call.input, "path");
|
|
186
|
+
if (!path) {
|
|
187
|
+
return readFieldError(call.id, "Write", "path");
|
|
188
|
+
}
|
|
189
|
+
const content = extractRequiredString(call.input, "content");
|
|
190
|
+
if (content === null) {
|
|
191
|
+
return readFieldTypeError(call.id, "Write", "content");
|
|
192
|
+
}
|
|
193
|
+
await sandbox.file.write(path, content);
|
|
194
|
+
return {
|
|
195
|
+
toolCallId: call.id,
|
|
196
|
+
output: `Wrote ${content.length} bytes to ${path}.`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
async handleBashTool(call, sandbox) {
|
|
200
|
+
const command = extractRequiredNonEmptyString(call.input, "command");
|
|
201
|
+
if (!command) {
|
|
202
|
+
return readFieldError(call.id, "Bash", "command");
|
|
203
|
+
}
|
|
204
|
+
const timeout = extractOptionalNumber(call.input, "timeout");
|
|
205
|
+
const cwd = extractOptionalString(call.input, "cwd");
|
|
206
|
+
const onChunk = extractOptionalChunkHandler(call.input, "onChunk");
|
|
207
|
+
const execOptions = {
|
|
208
|
+
timeout,
|
|
209
|
+
cwd,
|
|
210
|
+
...(onChunk ? { onChunk } : {}),
|
|
211
|
+
};
|
|
212
|
+
const result = await sandbox.exec(command, execOptions);
|
|
213
|
+
return {
|
|
214
|
+
toolCallId: call.id,
|
|
215
|
+
output: formatExecResult(result),
|
|
216
|
+
isError: result.exitCode !== 0,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
async handleMcpTool(call) {
|
|
220
|
+
const mcpClientManager = this.mcpClientManager;
|
|
221
|
+
if (!mcpClientManager) {
|
|
222
|
+
return toToolError(call.id, `MCP tool \"${call.name}\" is not available.`);
|
|
223
|
+
}
|
|
224
|
+
if (this.instrumentMcpCall) {
|
|
225
|
+
const parsed = parseMcpToolName(call.name);
|
|
226
|
+
const serverName = parsed?.serverName ?? "unknown";
|
|
227
|
+
const toolName = parsed?.toolName ?? call.name;
|
|
228
|
+
return this.instrumentMcpCall(serverName, toolName, () => mcpClientManager.callTool(call));
|
|
229
|
+
}
|
|
230
|
+
return await mcpClientManager.callTool(call);
|
|
231
|
+
}
|
|
232
|
+
isStopped() {
|
|
233
|
+
return this.statusValue === "stopped";
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
export async function createInitializedAgent(config, options) {
|
|
237
|
+
const agent = new AgentImpl(config, options);
|
|
238
|
+
await agent.initialize();
|
|
239
|
+
return agent;
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AgentLoop, AgentLoopConfig, ResponseEvent, ResponseInput, RunOptions } from "../agent-loop/index.js";
|
|
2
|
+
import type { ExecOptions, ExecResult, FileEntry, Sandbox, SpawnOptions, SpawnedProcess, SandboxStatus } from "../sandbox/index.js";
|
|
3
|
+
import { AgentImpl } from "./agent.js";
|
|
4
|
+
import type { AgentDependencies, McpClientManager } from "./dependencies.js";
|
|
5
|
+
import type { AgentConfig, InitOptions } from "./types.js";
|
|
6
|
+
export declare class FakeLoop implements AgentLoop {
|
|
7
|
+
readonly initConfigs: AgentLoopConfig[];
|
|
8
|
+
readonly runInputs: ResponseInput[];
|
|
9
|
+
disposeCount: number;
|
|
10
|
+
private initError;
|
|
11
|
+
private readonly queuedRuns;
|
|
12
|
+
setInitError(error: Error): void;
|
|
13
|
+
enqueueRun(events: ResponseEvent[]): void;
|
|
14
|
+
init(config: AgentLoopConfig): Promise<void>;
|
|
15
|
+
run(input: ResponseInput, options?: RunOptions): AsyncIterable<ResponseEvent>;
|
|
16
|
+
dispose(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare class FakeSandbox implements Sandbox {
|
|
19
|
+
readonly id = "sandbox-1";
|
|
20
|
+
status: SandboxStatus;
|
|
21
|
+
readonly execCalls: Array<{
|
|
22
|
+
command: string;
|
|
23
|
+
options?: ExecOptions;
|
|
24
|
+
}>;
|
|
25
|
+
readonly spawnCalls: Array<{
|
|
26
|
+
command: string;
|
|
27
|
+
args: string[];
|
|
28
|
+
options?: SpawnOptions;
|
|
29
|
+
}>;
|
|
30
|
+
readonly readCalls: string[];
|
|
31
|
+
readonly writeCalls: Array<{
|
|
32
|
+
path: string;
|
|
33
|
+
content: string | Buffer;
|
|
34
|
+
}>;
|
|
35
|
+
startCount: number;
|
|
36
|
+
shutdownCount: number;
|
|
37
|
+
nextReadResult: string;
|
|
38
|
+
nextExecResult: ExecResult;
|
|
39
|
+
nextSpawnedProcess: SpawnedProcess;
|
|
40
|
+
start(): Promise<void>;
|
|
41
|
+
shutdown(): Promise<void>;
|
|
42
|
+
exec(command: string, options?: ExecOptions): Promise<ExecResult>;
|
|
43
|
+
spawn(command: string, args?: string[], options?: SpawnOptions): Promise<SpawnedProcess>;
|
|
44
|
+
readonly file: {
|
|
45
|
+
read: (path: string) => Promise<string>;
|
|
46
|
+
write: (path: string, content: string | Buffer) => Promise<void>;
|
|
47
|
+
list: (path: string) => Promise<FileEntry[]>;
|
|
48
|
+
delete: (path: string) => Promise<void>;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export type Harness = {
|
|
52
|
+
agent: AgentImpl<"user_name">;
|
|
53
|
+
loop: FakeLoop;
|
|
54
|
+
sandbox: FakeSandbox;
|
|
55
|
+
dependencies: AgentDependencies;
|
|
56
|
+
};
|
|
57
|
+
export declare function createHarness(options?: {
|
|
58
|
+
configOverrides?: Partial<AgentConfig<"user_name">>;
|
|
59
|
+
initOverrides?: Partial<InitOptions<"user_name">>;
|
|
60
|
+
mcpClientManager?: McpClientManager | null;
|
|
61
|
+
order?: string[];
|
|
62
|
+
}): Harness;
|
|
63
|
+
export declare function collectEvents(iterable: AsyncIterable<ResponseEvent>): Promise<ResponseEvent[]>;
|