@agentvoy/core 0.2.0 → 0.4.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/README.md +65 -0
- package/dist/adapters/anthropic.d.ts.map +1 -1
- package/dist/adapters/anthropic.js +75 -75
- package/dist/adapters/anthropic.js.map +1 -1
- package/dist/adapters/app-scaffold.d.ts +12 -0
- package/dist/adapters/app-scaffold.d.ts.map +1 -0
- package/dist/adapters/app-scaffold.js +49 -0
- package/dist/adapters/app-scaffold.js.map +1 -0
- package/dist/adapters/autogen.d.ts +8 -0
- package/dist/adapters/autogen.d.ts.map +1 -0
- package/dist/adapters/autogen.js +259 -0
- package/dist/adapters/autogen.js.map +1 -0
- package/dist/adapters/crewai.d.ts.map +1 -1
- package/dist/adapters/crewai.js +80 -52
- package/dist/adapters/crewai.js.map +1 -1
- package/dist/adapters/google-adk.d.ts.map +1 -1
- package/dist/adapters/google-adk.js +73 -37
- package/dist/adapters/google-adk.js.map +1 -1
- package/dist/adapters/index.js +4 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/langgraph.d.ts.map +1 -1
- package/dist/adapters/langgraph.js +41 -42
- package/dist/adapters/langgraph.js.map +1 -1
- package/dist/adapters/llamaindex.d.ts +8 -0
- package/dist/adapters/llamaindex.d.ts.map +1 -0
- package/dist/adapters/llamaindex.js +230 -0
- package/dist/adapters/llamaindex.js.map +1 -0
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +76 -53
- package/dist/adapters/openai.js.map +1 -1
- package/dist/deployers/api-wrapper.d.ts +11 -0
- package/dist/deployers/api-wrapper.d.ts.map +1 -0
- package/dist/deployers/api-wrapper.js +86 -0
- package/dist/deployers/api-wrapper.js.map +1 -0
- package/dist/deployers/aws-lambda.d.ts +3 -0
- package/dist/deployers/aws-lambda.d.ts.map +1 -0
- package/dist/deployers/aws-lambda.js +101 -0
- package/dist/deployers/aws-lambda.js.map +1 -0
- package/dist/deployers/docker.d.ts +3 -0
- package/dist/deployers/docker.d.ts.map +1 -0
- package/dist/deployers/docker.js +123 -0
- package/dist/deployers/docker.js.map +1 -0
- package/dist/deployers/fly-io.d.ts +3 -0
- package/dist/deployers/fly-io.d.ts.map +1 -0
- package/dist/deployers/fly-io.js +84 -0
- package/dist/deployers/fly-io.js.map +1 -0
- package/dist/deployers/gcp-cloud-run.d.ts +3 -0
- package/dist/deployers/gcp-cloud-run.d.ts.map +1 -0
- package/dist/deployers/gcp-cloud-run.js +75 -0
- package/dist/deployers/gcp-cloud-run.js.map +1 -0
- package/dist/deployers/guard-mapper.d.ts +6 -0
- package/dist/deployers/guard-mapper.d.ts.map +1 -0
- package/dist/deployers/guard-mapper.js +63 -0
- package/dist/deployers/guard-mapper.js.map +1 -0
- package/dist/deployers/index.d.ts +6 -0
- package/dist/deployers/index.d.ts.map +1 -0
- package/dist/deployers/index.js +30 -0
- package/dist/deployers/index.js.map +1 -0
- package/dist/deployers/pipeline.d.ts +9 -0
- package/dist/deployers/pipeline.d.ts.map +1 -0
- package/dist/deployers/pipeline.js +55 -0
- package/dist/deployers/pipeline.js.map +1 -0
- package/dist/deployers/railway.d.ts +3 -0
- package/dist/deployers/railway.d.ts.map +1 -0
- package/dist/deployers/railway.js +53 -0
- package/dist/deployers/railway.js.map +1 -0
- package/dist/deployers/registry.d.ts +7 -0
- package/dist/deployers/registry.d.ts.map +1 -0
- package/dist/deployers/registry.js +29 -0
- package/dist/deployers/registry.js.map +1 -0
- package/dist/deployers/streamlit-app.d.ts +10 -0
- package/dist/deployers/streamlit-app.d.ts.map +1 -0
- package/dist/deployers/streamlit-app.js +80 -0
- package/dist/deployers/streamlit-app.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +41 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +17 -1
- package/src/adapters/anthropic.ts +0 -268
- package/src/adapters/crewai.ts +0 -254
- package/src/adapters/google-adk.ts +0 -167
- package/src/adapters/index.ts +0 -21
- package/src/adapters/langgraph.ts +0 -336
- package/src/adapters/openai.ts +0 -214
- package/src/adapters/registry.ts +0 -37
- package/src/config.ts +0 -315
- package/src/index.ts +0 -54
- package/src/types.ts +0 -203
- package/tsconfig.json +0 -8
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dockerAdapter = void 0;
|
|
4
|
+
const guard_mapper_js_1 = require("./guard-mapper.js");
|
|
5
|
+
function generateDockerfile(config) {
|
|
6
|
+
const { projectName, port, guard } = config;
|
|
7
|
+
const cloudConfig = (0, guard_mapper_js_1.mapGuardToCloudConfig)(guard);
|
|
8
|
+
const timeoutSeconds = cloudConfig.timeout
|
|
9
|
+
? parseInt(cloudConfig.timeout.replace("s", ""), 10)
|
|
10
|
+
: 300;
|
|
11
|
+
return `# Dockerfile — Generated by AgentVoy
|
|
12
|
+
# agent.guard.yml guardrails reflected in container configuration
|
|
13
|
+
|
|
14
|
+
FROM python:3.12-slim AS base
|
|
15
|
+
|
|
16
|
+
# Non-root user (enforces execution.allow_shell: false from agent.guard.yml)
|
|
17
|
+
RUN useradd --create-home --shell /bin/sh agent
|
|
18
|
+
|
|
19
|
+
WORKDIR /home/agent/app
|
|
20
|
+
|
|
21
|
+
# Install dependencies first (layer caching)
|
|
22
|
+
COPY requirements.txt .
|
|
23
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
|
24
|
+
|
|
25
|
+
# Copy application code
|
|
26
|
+
COPY . .
|
|
27
|
+
|
|
28
|
+
# Run as non-root
|
|
29
|
+
USER agent
|
|
30
|
+
|
|
31
|
+
EXPOSE ${port}
|
|
32
|
+
|
|
33
|
+
# Health check (timeout from guardrails.behavior.timeout: ${guard.guardrails?.behavior?.timeout ?? "5m"})
|
|
34
|
+
HEALTHCHECK --interval=30s --timeout=${timeoutSeconds}s --start-period=10s --retries=3 \\
|
|
35
|
+
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${port}/health')" || exit 1
|
|
36
|
+
|
|
37
|
+
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "${port}"]
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
function generateDockerignore() {
|
|
41
|
+
return `.git
|
|
42
|
+
.github
|
|
43
|
+
.env
|
|
44
|
+
__pycache__
|
|
45
|
+
*.pyc
|
|
46
|
+
*.pyo
|
|
47
|
+
*.pyd
|
|
48
|
+
.Python
|
|
49
|
+
*.egg-info
|
|
50
|
+
dist/
|
|
51
|
+
build/
|
|
52
|
+
.venv
|
|
53
|
+
venv/
|
|
54
|
+
.pytest_cache
|
|
55
|
+
.mypy_cache
|
|
56
|
+
*.log
|
|
57
|
+
node_modules/
|
|
58
|
+
`;
|
|
59
|
+
}
|
|
60
|
+
function generateDockerComposeYml(config) {
|
|
61
|
+
const { projectName, port } = config;
|
|
62
|
+
return `# docker-compose.yml — for local development
|
|
63
|
+
version: "3.9"
|
|
64
|
+
services:
|
|
65
|
+
agent:
|
|
66
|
+
build: .
|
|
67
|
+
ports:
|
|
68
|
+
- "${port}:${port}"
|
|
69
|
+
env_file:
|
|
70
|
+
- .env
|
|
71
|
+
restart: unless-stopped
|
|
72
|
+
|
|
73
|
+
ui:
|
|
74
|
+
build: .
|
|
75
|
+
command: streamlit run streamlit_app.py --server.port 8501 --server.address 0.0.0.0
|
|
76
|
+
ports:
|
|
77
|
+
- "8501:8501"
|
|
78
|
+
env_file:
|
|
79
|
+
- .env
|
|
80
|
+
depends_on:
|
|
81
|
+
- agent
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
84
|
+
exports.dockerAdapter = {
|
|
85
|
+
target: "docker",
|
|
86
|
+
displayName: "Docker",
|
|
87
|
+
async validate(config) {
|
|
88
|
+
const errors = [];
|
|
89
|
+
const warnings = [];
|
|
90
|
+
const missingTools = [];
|
|
91
|
+
// Check docker is available (best-effort)
|
|
92
|
+
try {
|
|
93
|
+
const { execSync } = await import("child_process");
|
|
94
|
+
execSync("docker --version", { stdio: "ignore" });
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
missingTools.push("docker");
|
|
98
|
+
warnings.push({
|
|
99
|
+
field: "docker",
|
|
100
|
+
message: "Docker not found — install from https://docs.docker.com/get-docker/",
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return { valid: errors.length === 0, errors, warnings, missingTools };
|
|
104
|
+
},
|
|
105
|
+
async generateFiles(config) {
|
|
106
|
+
const files = [
|
|
107
|
+
{ path: "Dockerfile", content: generateDockerfile(config) },
|
|
108
|
+
{ path: ".dockerignore", content: generateDockerignore() },
|
|
109
|
+
{ path: "docker-compose.yml", content: generateDockerComposeYml(config) },
|
|
110
|
+
];
|
|
111
|
+
const cloudConfig = (0, guard_mapper_js_1.mapGuardToCloudConfig)(config.guard);
|
|
112
|
+
const instructions = [
|
|
113
|
+
`Build: docker build -t ${config.projectName} .`,
|
|
114
|
+
`Run: docker run -p ${config.port}:${config.port} --env-file .env ${config.projectName}`,
|
|
115
|
+
`API: curl http://localhost:${config.port}/health`,
|
|
116
|
+
`UI: docker-compose up (starts API + Streamlit on :8501)`,
|
|
117
|
+
`Memory: ${cloudConfig.memory} (from agent.guard.yml cost_limit)`,
|
|
118
|
+
`Timeout: ${cloudConfig.timeout} (from agent.guard.yml behavior.timeout)`,
|
|
119
|
+
];
|
|
120
|
+
return { files, instructions };
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/deployers/docker.ts"],"names":[],"mappings":";;;AACA,uDAA0D;AAE1D,SAAS,kBAAkB,CAAC,MAAoB;IAC9C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAA,uCAAqB,EAAC,KAAK,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO;QACxC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC;IAER,OAAO;;;;;;;;;;;;;;;;;;;;SAoBA,IAAI;;4DAE+C,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;uCAChE,cAAc;qFACgC,IAAI;;gEAEzB,IAAI;CACnE,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAoB;IACpD,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACrC,OAAO;;;;;;WAME,IAAI,IAAI,IAAI;;;;;;;;;;;;;;CActB,CAAC;AACF,CAAC;AAEY,QAAA,aAAa,GAAsB;IAC9C,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IAErB,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAyC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,0CAA0C;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,QAAQ,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,qEAAqE;aAC/E,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAoB;QACtC,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE;YAC1D,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE;SAC1E,CAAC;QAEF,MAAM,WAAW,GAAG,IAAA,uCAAqB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAExD,MAAM,YAAY,GAAG;YACnB,4BAA4B,MAAM,CAAC,WAAW,IAAI;YAClD,0BAA0B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,WAAW,EAAE;YAC5F,kCAAkC,MAAM,CAAC,IAAI,SAAS;YACtD,+DAA+D;YAC/D,YAAY,WAAW,CAAC,MAAM,oCAAoC;YAClE,YAAY,WAAW,CAAC,OAAO,0CAA0C;SAC1E,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fly-io.d.ts","sourceRoot":"","sources":["../../src/deployers/fly-io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAyD,MAAM,aAAa,CAAC;AA+C5G,eAAO,MAAM,YAAY,EAAE,iBAyC1B,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flyIoAdapter = void 0;
|
|
4
|
+
const guard_mapper_js_1 = require("./guard-mapper.js");
|
|
5
|
+
function generateFlyToml(config) {
|
|
6
|
+
const { projectName, port } = config;
|
|
7
|
+
const cloudConfig = (0, guard_mapper_js_1.mapGuardToCloudConfig)(config.guard);
|
|
8
|
+
const timeoutSeconds = cloudConfig.timeout
|
|
9
|
+
? parseInt(cloudConfig.timeout.replace("s", ""), 10)
|
|
10
|
+
: 300;
|
|
11
|
+
return `# fly.toml — Generated by AgentVoy
|
|
12
|
+
# Deploy: fly launch (first time) or fly deploy
|
|
13
|
+
|
|
14
|
+
app = "${projectName.toLowerCase().replace(/[^a-z0-9-]/g, "-")}"
|
|
15
|
+
primary_region = "${config.cloudConfig?.region ?? "iad"}"
|
|
16
|
+
|
|
17
|
+
[build]
|
|
18
|
+
|
|
19
|
+
[http_service]
|
|
20
|
+
internal_port = ${port}
|
|
21
|
+
force_https = true
|
|
22
|
+
auto_stop_machines = "stop"
|
|
23
|
+
auto_start_machines = true
|
|
24
|
+
min_machines_running = 0
|
|
25
|
+
processes = ["app"]
|
|
26
|
+
|
|
27
|
+
[http_service.concurrency]
|
|
28
|
+
type = "connections"
|
|
29
|
+
hard_limit = 25
|
|
30
|
+
soft_limit = 20
|
|
31
|
+
|
|
32
|
+
[[vm]]
|
|
33
|
+
memory = "${cloudConfig.memory ?? "512mb"}"
|
|
34
|
+
cpu_kind = "shared"
|
|
35
|
+
cpus = 1
|
|
36
|
+
|
|
37
|
+
[processes]
|
|
38
|
+
app = "uvicorn server:app --host 0.0.0.0 --port ${port}"
|
|
39
|
+
|
|
40
|
+
[env]
|
|
41
|
+
PORT = "${port}"
|
|
42
|
+
|
|
43
|
+
# kill_timeout from guardrails.behavior.timeout
|
|
44
|
+
kill_timeout = ${timeoutSeconds}
|
|
45
|
+
`;
|
|
46
|
+
}
|
|
47
|
+
exports.flyIoAdapter = {
|
|
48
|
+
target: "fly-io",
|
|
49
|
+
displayName: "Fly.io",
|
|
50
|
+
requiredCLI: "flyctl",
|
|
51
|
+
async validate(config) {
|
|
52
|
+
const errors = [];
|
|
53
|
+
const warnings = [];
|
|
54
|
+
const missingTools = [];
|
|
55
|
+
try {
|
|
56
|
+
const { execSync } = await import("child_process");
|
|
57
|
+
execSync("flyctl version", { stdio: "ignore" });
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
missingTools.push("flyctl");
|
|
61
|
+
warnings.push({
|
|
62
|
+
field: "flyctl",
|
|
63
|
+
message: "flyctl not found — install from https://fly.io/docs/hands-on/install-flyctl/",
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return { valid: errors.length === 0, errors, warnings, missingTools };
|
|
67
|
+
},
|
|
68
|
+
async generateFiles(config) {
|
|
69
|
+
const files = [
|
|
70
|
+
{ path: "deploy/fly.toml", content: generateFlyToml(config) },
|
|
71
|
+
];
|
|
72
|
+
const appName = config.projectName.toLowerCase().replace(/[^a-z0-9-]/g, "-");
|
|
73
|
+
const instructions = [
|
|
74
|
+
`Install flyctl: https://fly.io/docs/hands-on/install-flyctl/`,
|
|
75
|
+
`fly auth login`,
|
|
76
|
+
`fly launch --name ${appName} --copy-config`,
|
|
77
|
+
`fly secrets set OPENAI_API_KEY=<your-key> # set all required env vars`,
|
|
78
|
+
`fly deploy`,
|
|
79
|
+
`fly open # open in browser`,
|
|
80
|
+
];
|
|
81
|
+
return { files, instructions };
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=fly-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fly-io.js","sourceRoot":"","sources":["../../src/deployers/fly-io.ts"],"names":[],"mappings":";;;AACA,uDAA0D;AAE1D,SAAS,eAAe,CAAC,MAAoB;IAC3C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,WAAW,GAAG,IAAA,uCAAqB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO;QACxC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC;IAER,OAAO;;;SAGA,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;oBAC1C,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK;;;;;oBAKnC,IAAI;;;;;;;;;;;;;cAaV,WAAW,CAAC,MAAM,IAAI,OAAO;;;;;oDAKS,IAAI;;;YAG5C,IAAI;;;iBAGC,cAAc;CAC9B,CAAC;AACF,CAAC;AAEY,QAAA,YAAY,GAAsB;IAC7C,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,QAAQ;IAErB,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAyC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,8EAA8E;aACxF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAoB;QACtC,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE;SAC9D,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG;YACnB,8DAA8D;YAC9D,gBAAgB;YAChB,qBAAqB,OAAO,gBAAgB;YAC5C,wEAAwE;YACxE,YAAY;YACZ,6BAA6B;SAC9B,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcp-cloud-run.d.ts","sourceRoot":"","sources":["../../src/deployers/gcp-cloud-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAyD,MAAM,aAAa,CAAC;AAuC5G,eAAO,MAAM,kBAAkB,EAAE,iBAyChC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gcpCloudRunAdapter = void 0;
|
|
4
|
+
const guard_mapper_js_1 = require("./guard-mapper.js");
|
|
5
|
+
function generateCloudRunYaml(config) {
|
|
6
|
+
const { projectName, port } = config;
|
|
7
|
+
const cloudConfig = (0, guard_mapper_js_1.mapGuardToCloudConfig)(config.guard);
|
|
8
|
+
const region = config.cloudConfig?.region ?? "us-central1";
|
|
9
|
+
return `# cloud-run.yaml — Generated by AgentVoy
|
|
10
|
+
# Deploy: gcloud run deploy ${projectName} --source . --region ${region}
|
|
11
|
+
|
|
12
|
+
apiVersion: serving.knative.dev/v1
|
|
13
|
+
kind: Service
|
|
14
|
+
metadata:
|
|
15
|
+
name: ${projectName.toLowerCase()}
|
|
16
|
+
annotations:
|
|
17
|
+
run.googleapis.com/ingress: all
|
|
18
|
+
spec:
|
|
19
|
+
template:
|
|
20
|
+
metadata:
|
|
21
|
+
annotations:
|
|
22
|
+
autoscaling.knative.dev/minScale: "0"
|
|
23
|
+
autoscaling.knative.dev/maxScale: "3"
|
|
24
|
+
spec:
|
|
25
|
+
timeoutSeconds: ${cloudConfig.timeout ? parseInt(cloudConfig.timeout, 10) : 300}
|
|
26
|
+
containers:
|
|
27
|
+
- image: gcr.io/PROJECT_ID/${projectName.toLowerCase()}
|
|
28
|
+
ports:
|
|
29
|
+
- containerPort: ${port}
|
|
30
|
+
resources:
|
|
31
|
+
limits:
|
|
32
|
+
memory: ${cloudConfig.memory ?? "512Mi"}
|
|
33
|
+
cpu: "1"
|
|
34
|
+
env:
|
|
35
|
+
- name: PORT
|
|
36
|
+
value: "${port}"
|
|
37
|
+
`;
|
|
38
|
+
}
|
|
39
|
+
exports.gcpCloudRunAdapter = {
|
|
40
|
+
target: "gcp-cloud-run",
|
|
41
|
+
displayName: "GCP Cloud Run",
|
|
42
|
+
requiredCLI: "gcloud",
|
|
43
|
+
async validate(config) {
|
|
44
|
+
const errors = [];
|
|
45
|
+
const warnings = [];
|
|
46
|
+
const missingTools = [];
|
|
47
|
+
try {
|
|
48
|
+
const { execSync } = await import("child_process");
|
|
49
|
+
execSync("gcloud --version", { stdio: "ignore" });
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
missingTools.push("gcloud");
|
|
53
|
+
warnings.push({
|
|
54
|
+
field: "gcloud",
|
|
55
|
+
message: "gcloud CLI not found — install from https://cloud.google.com/sdk/docs/install",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return { valid: errors.length === 0, errors, warnings, missingTools };
|
|
59
|
+
},
|
|
60
|
+
async generateFiles(config) {
|
|
61
|
+
const region = config.cloudConfig?.region ?? "us-central1";
|
|
62
|
+
const name = config.projectName.toLowerCase();
|
|
63
|
+
const files = [
|
|
64
|
+
{ path: "deploy/cloud-run.yaml", content: generateCloudRunYaml(config) },
|
|
65
|
+
];
|
|
66
|
+
const instructions = [
|
|
67
|
+
`gcloud auth login`,
|
|
68
|
+
`gcloud config set project YOUR_PROJECT_ID`,
|
|
69
|
+
`gcloud run deploy ${name} --source . --region ${region} --allow-unauthenticated`,
|
|
70
|
+
`# Or using the YAML: gcloud run services replace deploy/cloud-run.yaml`,
|
|
71
|
+
];
|
|
72
|
+
return { files, instructions };
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=gcp-cloud-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcp-cloud-run.js","sourceRoot":"","sources":["../../src/deployers/gcp-cloud-run.ts"],"names":[],"mappings":";;;AACA,uDAA0D;AAE1D,SAAS,oBAAoB,CAAC,MAAoB;IAChD,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,WAAW,GAAG,IAAA,uCAAqB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,aAAa,CAAC;IAE3D,OAAO;8BACqB,WAAW,wBAAwB,MAAM;;;;;UAK7D,WAAW,CAAC,WAAW,EAAE;;;;;;;;;;wBAUX,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;;qCAEhD,WAAW,CAAC,WAAW,EAAE;;+BAE/B,IAAI;;;wBAGX,WAAW,CAAC,MAAM,IAAI,OAAO;;;;wBAI7B,IAAI;CAC3B,CAAC;AACF,CAAC;AAEY,QAAA,kBAAkB,GAAsB;IACnD,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,QAAQ;IAErB,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAyC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,QAAQ,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,+EAA+E;aACzF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAoB;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,aAAa,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE;SACzE,CAAC;QAEF,MAAM,YAAY,GAAG;YACnB,mBAAmB;YACnB,2CAA2C;YAC3C,qBAAqB,IAAI,wBAAwB,MAAM,0BAA0B;YACjF,wEAAwE;SACzE,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentGuardConfig, CloudConfig } from "../types.js";
|
|
2
|
+
/** Map agent.guard.yml guardrails to cloud deployment configuration */
|
|
3
|
+
export declare function mapGuardToCloudConfig(guard: AgentGuardConfig): CloudConfig;
|
|
4
|
+
/** Describe how guard config maps to deployment constraints (for CLI display) */
|
|
5
|
+
export declare function describeGuardMapping(guard: AgentGuardConfig): string[];
|
|
6
|
+
//# sourceMappingURL=guard-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-mapper.d.ts","sourceRoot":"","sources":["../../src/deployers/guard-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuBjE,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAY1E;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAqBtE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapGuardToCloudConfig = mapGuardToCloudConfig;
|
|
4
|
+
exports.describeGuardMapping = describeGuardMapping;
|
|
5
|
+
/** Parse guard duration string (e.g. "5m", "2h") to seconds */
|
|
6
|
+
function durationToSeconds(duration) {
|
|
7
|
+
const match = duration.match(/^(\d+)([smhd])$/);
|
|
8
|
+
if (!match)
|
|
9
|
+
return 300;
|
|
10
|
+
const value = parseInt(match[1], 10);
|
|
11
|
+
const unit = match[2];
|
|
12
|
+
const multipliers = { s: 1, m: 60, h: 3600, d: 86400 };
|
|
13
|
+
return value * (multipliers[unit] ?? 60);
|
|
14
|
+
}
|
|
15
|
+
/** Infer memory tier from cost_limit string (e.g. "$1.00") */
|
|
16
|
+
function inferMemory(costLimit) {
|
|
17
|
+
if (!costLimit)
|
|
18
|
+
return "512Mi";
|
|
19
|
+
const match = costLimit.match(/\$(\d+)/);
|
|
20
|
+
if (!match)
|
|
21
|
+
return "512Mi";
|
|
22
|
+
const dollars = parseInt(match[1], 10);
|
|
23
|
+
if (dollars >= 10)
|
|
24
|
+
return "2Gi";
|
|
25
|
+
if (dollars >= 5)
|
|
26
|
+
return "1Gi";
|
|
27
|
+
return "512Mi";
|
|
28
|
+
}
|
|
29
|
+
/** Map agent.guard.yml guardrails to cloud deployment configuration */
|
|
30
|
+
function mapGuardToCloudConfig(guard) {
|
|
31
|
+
const behavior = guard.guardrails?.behavior;
|
|
32
|
+
const timeoutSeconds = behavior?.timeout
|
|
33
|
+
? durationToSeconds(behavior.timeout)
|
|
34
|
+
: 300;
|
|
35
|
+
return {
|
|
36
|
+
memory: inferMemory(behavior?.cost_limit),
|
|
37
|
+
timeout: `${timeoutSeconds}s`,
|
|
38
|
+
minInstances: 0,
|
|
39
|
+
maxInstances: 3,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Describe how guard config maps to deployment constraints (for CLI display) */
|
|
43
|
+
function describeGuardMapping(guard) {
|
|
44
|
+
const lines = [];
|
|
45
|
+
const behavior = guard.guardrails?.behavior;
|
|
46
|
+
const execution = guard.permissions?.execution;
|
|
47
|
+
const network = guard.permissions?.network;
|
|
48
|
+
if (behavior?.timeout) {
|
|
49
|
+
const secs = durationToSeconds(behavior.timeout);
|
|
50
|
+
lines.push(`timeout: ${behavior.timeout} → ${secs}s container timeout`);
|
|
51
|
+
}
|
|
52
|
+
if (behavior?.cost_limit) {
|
|
53
|
+
lines.push(`cost_limit: ${behavior.cost_limit} → ${inferMemory(behavior.cost_limit)} memory`);
|
|
54
|
+
}
|
|
55
|
+
if (execution?.allow_shell === false) {
|
|
56
|
+
lines.push(`execution.allow_shell: false → non-root container user`);
|
|
57
|
+
}
|
|
58
|
+
if (network?.mode === "restricted") {
|
|
59
|
+
lines.push(`network.mode: restricted → egress allowlist enforced`);
|
|
60
|
+
}
|
|
61
|
+
return lines;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=guard-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-mapper.js","sourceRoot":"","sources":["../../src/deployers/guard-mapper.ts"],"names":[],"mappings":";;AAwBA,sDAYC;AAGD,oDAqBC;AA1DD,+DAA+D;AAC/D,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,WAAW,GAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAC/E,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,8DAA8D;AAC9D,SAAS,WAAW,CAAC,SAAkB;IACrC,IAAI,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uEAAuE;AACvE,SAAgB,qBAAqB,CAAC,KAAuB;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC5C,MAAM,cAAc,GAAG,QAAQ,EAAE,OAAO;QACtC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC;IAER,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC;QACzC,OAAO,EAAE,GAAG,cAAc,GAAG;QAC7B,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;KAChB,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAgB,oBAAoB,CAAC,KAAuB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC;IAE3C,IAAI,QAAQ,EAAE,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,OAAO,MAAM,IAAI,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,UAAU,MAAM,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,SAAS,EAAE,WAAW,KAAK,KAAK,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,OAAO,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { registerDeployer, getDeployer, listDeployers, listTargets, hasDeployer } from "./registry.js";
|
|
2
|
+
export { mapGuardToCloudConfig, describeGuardMapping } from "./guard-mapper.js";
|
|
3
|
+
export { generateServerPy } from "./api-wrapper.js";
|
|
4
|
+
export { generateStreamlitApp } from "./streamlit-app.js";
|
|
5
|
+
export { generatePipelinePy } from "./pipeline.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deployers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePipelinePy = exports.generateStreamlitApp = exports.generateServerPy = exports.describeGuardMapping = exports.mapGuardToCloudConfig = exports.hasDeployer = exports.listTargets = exports.listDeployers = exports.getDeployer = exports.registerDeployer = void 0;
|
|
4
|
+
var registry_js_1 = require("./registry.js");
|
|
5
|
+
Object.defineProperty(exports, "registerDeployer", { enumerable: true, get: function () { return registry_js_1.registerDeployer; } });
|
|
6
|
+
Object.defineProperty(exports, "getDeployer", { enumerable: true, get: function () { return registry_js_1.getDeployer; } });
|
|
7
|
+
Object.defineProperty(exports, "listDeployers", { enumerable: true, get: function () { return registry_js_1.listDeployers; } });
|
|
8
|
+
Object.defineProperty(exports, "listTargets", { enumerable: true, get: function () { return registry_js_1.listTargets; } });
|
|
9
|
+
Object.defineProperty(exports, "hasDeployer", { enumerable: true, get: function () { return registry_js_1.hasDeployer; } });
|
|
10
|
+
var guard_mapper_js_1 = require("./guard-mapper.js");
|
|
11
|
+
Object.defineProperty(exports, "mapGuardToCloudConfig", { enumerable: true, get: function () { return guard_mapper_js_1.mapGuardToCloudConfig; } });
|
|
12
|
+
Object.defineProperty(exports, "describeGuardMapping", { enumerable: true, get: function () { return guard_mapper_js_1.describeGuardMapping; } });
|
|
13
|
+
var api_wrapper_js_1 = require("./api-wrapper.js");
|
|
14
|
+
Object.defineProperty(exports, "generateServerPy", { enumerable: true, get: function () { return api_wrapper_js_1.generateServerPy; } });
|
|
15
|
+
var streamlit_app_js_1 = require("./streamlit-app.js");
|
|
16
|
+
Object.defineProperty(exports, "generateStreamlitApp", { enumerable: true, get: function () { return streamlit_app_js_1.generateStreamlitApp; } });
|
|
17
|
+
var pipeline_js_1 = require("./pipeline.js");
|
|
18
|
+
Object.defineProperty(exports, "generatePipelinePy", { enumerable: true, get: function () { return pipeline_js_1.generatePipelinePy; } });
|
|
19
|
+
const registry_js_2 = require("./registry.js");
|
|
20
|
+
const docker_js_1 = require("./docker.js");
|
|
21
|
+
const fly_io_js_1 = require("./fly-io.js");
|
|
22
|
+
const railway_js_1 = require("./railway.js");
|
|
23
|
+
const gcp_cloud_run_js_1 = require("./gcp-cloud-run.js");
|
|
24
|
+
const aws_lambda_js_1 = require("./aws-lambda.js");
|
|
25
|
+
(0, registry_js_2.registerDeployer)(docker_js_1.dockerAdapter);
|
|
26
|
+
(0, registry_js_2.registerDeployer)(fly_io_js_1.flyIoAdapter);
|
|
27
|
+
(0, registry_js_2.registerDeployer)(railway_js_1.railwayAdapter);
|
|
28
|
+
(0, registry_js_2.registerDeployer)(gcp_cloud_run_js_1.gcpCloudRunAdapter);
|
|
29
|
+
(0, registry_js_2.registerDeployer)(aws_lambda_js_1.awsLambdaAdapter);
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deployers/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuG;AAA9F,+GAAA,gBAAgB,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,4GAAA,aAAa,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,0GAAA,WAAW,OAAA;AAC/E,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AACpD,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA;AACzB,uDAA0D;AAAjD,wHAAA,oBAAoB,OAAA;AAC7B,6CAAmD;AAA1C,iHAAA,kBAAkB,OAAA;AAE3B,+CAAiD;AACjD,2CAA4C;AAC5C,2CAA2C;AAC3C,6CAA8C;AAC9C,yDAAwD;AACxD,mDAAmD;AAEnD,IAAA,8BAAgB,EAAC,yBAAa,CAAC,CAAC;AAChC,IAAA,8BAAgB,EAAC,wBAAY,CAAC,CAAC;AAC/B,IAAA,8BAAgB,EAAC,2BAAc,CAAC,CAAC;AACjC,IAAA,8BAAgB,EAAC,qCAAkB,CAAC,CAAC;AACrC,IAAA,8BAAgB,EAAC,gCAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Framework } from "../types.js";
|
|
2
|
+
interface PipelineConfig {
|
|
3
|
+
projectName: string;
|
|
4
|
+
framework: Framework;
|
|
5
|
+
agentNames: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function generatePipelinePy(config: PipelineConfig): string;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/deployers/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAsDjE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePipelinePy = generatePipelinePy;
|
|
4
|
+
function generatePipelinePy(config) {
|
|
5
|
+
const { agentNames } = config;
|
|
6
|
+
const imports = agentNames
|
|
7
|
+
.map((name) => `from src.agents.${name} import run_agent as ${name}_agent`)
|
|
8
|
+
.join("\n");
|
|
9
|
+
const stages = agentNames
|
|
10
|
+
.map((name, i) => {
|
|
11
|
+
const inputVar = i === 0 ? "prompt" : `${agentNames[i - 1]}_result`;
|
|
12
|
+
return ` # Stage ${i + 1}: ${name}
|
|
13
|
+
${name}_result = ${name}_agent(${inputVar})
|
|
14
|
+
session.tick()`;
|
|
15
|
+
})
|
|
16
|
+
.join("\n\n");
|
|
17
|
+
const finalVar = `${agentNames[agentNames.length - 1]}_result`;
|
|
18
|
+
const stagesList = agentNames.map((n) => `"${n}"`).join(", ");
|
|
19
|
+
return `"""
|
|
20
|
+
Multi-agent pipeline — Generated by AgentVoy
|
|
21
|
+
Agents run sequentially, each building on the previous stage's output.
|
|
22
|
+
|
|
23
|
+
Stages: ${agentNames.join(" → ")}
|
|
24
|
+
"""
|
|
25
|
+
from agentvoy_guard import Guard
|
|
26
|
+
|
|
27
|
+
${imports}
|
|
28
|
+
|
|
29
|
+
guard = Guard.from_config()
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def run_pipeline(prompt: str) -> dict:
|
|
33
|
+
"""Run all agents in sequence and return the final result."""
|
|
34
|
+
with guard.session() as session:
|
|
35
|
+
session.check_input(prompt)
|
|
36
|
+
|
|
37
|
+
${stages}
|
|
38
|
+
|
|
39
|
+
session.check_output(str(${finalVar}))
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
"result": ${finalVar},
|
|
43
|
+
"stages": [${stagesList}],
|
|
44
|
+
"guard_summary": guard.last_summary,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
if __name__ == "__main__":
|
|
49
|
+
import sys
|
|
50
|
+
user_prompt = " ".join(sys.argv[1:]) or "Hello! What can you help me with?"
|
|
51
|
+
result = run_pipeline(user_prompt)
|
|
52
|
+
print(result["result"])
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/deployers/pipeline.ts"],"names":[],"mappings":";;AAQA,gDAsDC;AAtDD,SAAgB,kBAAkB,CAAC,MAAsB;IACvD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9B,MAAM,OAAO,GAAG,UAAU;SACvB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,wBAAwB,IAAI,QAAQ,CAAC;SAC1E,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,UAAU;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACf,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACpE,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,IAAI;UACpC,IAAI,aAAa,IAAI,UAAU,QAAQ;uBAC1B,CAAC;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9D,OAAO;;;;UAIC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;EAI9B,OAAO;;;;;;;;;;EAUP,MAAM;;mCAE2B,QAAQ;;;oBAGvB,QAAQ;qBACP,UAAU;;;;;;;;;;CAU9B,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"railway.d.ts","sourceRoot":"","sources":["../../src/deployers/railway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAyD,MAAM,aAAa,CAAC;AAoB5G,eAAO,MAAM,cAAc,EAAE,iBAwC5B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.railwayAdapter = void 0;
|
|
4
|
+
function generateRailwayJson(config) {
|
|
5
|
+
return JSON.stringify({
|
|
6
|
+
"$schema": "https://railway.app/railway.schema.json",
|
|
7
|
+
build: { builder: "DOCKERFILE", dockerfilePath: "./Dockerfile" },
|
|
8
|
+
deploy: {
|
|
9
|
+
startCommand: `uvicorn server:app --host 0.0.0.0 --port ${config.port}`,
|
|
10
|
+
healthcheckPath: "/health",
|
|
11
|
+
healthcheckTimeout: 300,
|
|
12
|
+
restartPolicyType: "ON_FAILURE",
|
|
13
|
+
restartPolicyMaxRetries: 3,
|
|
14
|
+
},
|
|
15
|
+
}, null, 2);
|
|
16
|
+
}
|
|
17
|
+
exports.railwayAdapter = {
|
|
18
|
+
target: "railway",
|
|
19
|
+
displayName: "Railway",
|
|
20
|
+
requiredCLI: "railway",
|
|
21
|
+
async validate(config) {
|
|
22
|
+
const errors = [];
|
|
23
|
+
const warnings = [];
|
|
24
|
+
const missingTools = [];
|
|
25
|
+
try {
|
|
26
|
+
const { execSync } = await import("child_process");
|
|
27
|
+
execSync("railway --version", { stdio: "ignore" });
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
missingTools.push("railway");
|
|
31
|
+
warnings.push({
|
|
32
|
+
field: "railway",
|
|
33
|
+
message: "Railway CLI not found — install: npm install -g @railway/cli",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return { valid: errors.length === 0, errors, warnings, missingTools };
|
|
37
|
+
},
|
|
38
|
+
async generateFiles(config) {
|
|
39
|
+
const files = [
|
|
40
|
+
{ path: "deploy/railway.json", content: generateRailwayJson(config) },
|
|
41
|
+
];
|
|
42
|
+
const instructions = [
|
|
43
|
+
`npm install -g @railway/cli`,
|
|
44
|
+
`railway login`,
|
|
45
|
+
`railway init`,
|
|
46
|
+
`railway variables set OPENAI_API_KEY=<your-key> # set all required env vars`,
|
|
47
|
+
`railway up`,
|
|
48
|
+
`railway open`,
|
|
49
|
+
];
|
|
50
|
+
return { files, instructions };
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=railway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"railway.js","sourceRoot":"","sources":["../../src/deployers/railway.ts"],"names":[],"mappings":";;;AAEA,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,SAAS,EAAE,yCAAyC;QACpD,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE;QAChE,MAAM,EAAE;YACN,YAAY,EAAE,4CAA4C,MAAM,CAAC,IAAI,EAAE;YACvE,eAAe,EAAE,SAAS;YAC1B,kBAAkB,EAAE,GAAG;YACvB,iBAAiB,EAAE,YAAY;YAC/B,uBAAuB,EAAE,CAAC;SAC3B;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAEY,QAAA,cAAc,GAAsB;IAC/C,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IAEtB,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAyC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,QAAQ,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,8DAA8D;aACxE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAoB;QACtC,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE;SACtE,CAAC;QAEF,MAAM,YAAY,GAAG;YACnB,6BAA6B;YAC7B,eAAe;YACf,cAAc;YACd,8EAA8E;YAC9E,YAAY;YACZ,cAAc;SACf,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DeploymentAdapter, DeploymentTarget } from "../types.js";
|
|
2
|
+
export declare function registerDeployer(adapter: DeploymentAdapter): void;
|
|
3
|
+
export declare function getDeployer(target: DeploymentTarget): DeploymentAdapter;
|
|
4
|
+
export declare function listDeployers(): DeploymentAdapter[];
|
|
5
|
+
export declare function listTargets(): DeploymentTarget[];
|
|
6
|
+
export declare function hasDeployer(target: DeploymentTarget): boolean;
|
|
7
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/deployers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIvE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEjE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CAOvE;AAED,wBAAgB,aAAa,IAAI,iBAAiB,EAAE,CAEnD;AAED,wBAAgB,WAAW,IAAI,gBAAgB,EAAE,CAEhD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerDeployer = registerDeployer;
|
|
4
|
+
exports.getDeployer = getDeployer;
|
|
5
|
+
exports.listDeployers = listDeployers;
|
|
6
|
+
exports.listTargets = listTargets;
|
|
7
|
+
exports.hasDeployer = hasDeployer;
|
|
8
|
+
const deployers = new Map();
|
|
9
|
+
function registerDeployer(adapter) {
|
|
10
|
+
deployers.set(adapter.target, adapter);
|
|
11
|
+
}
|
|
12
|
+
function getDeployer(target) {
|
|
13
|
+
const deployer = deployers.get(target);
|
|
14
|
+
if (!deployer) {
|
|
15
|
+
const available = Array.from(deployers.keys()).join(", ");
|
|
16
|
+
throw new Error(`Unknown deployment target: "${target}". Available: ${available}`);
|
|
17
|
+
}
|
|
18
|
+
return deployer;
|
|
19
|
+
}
|
|
20
|
+
function listDeployers() {
|
|
21
|
+
return Array.from(deployers.values());
|
|
22
|
+
}
|
|
23
|
+
function listTargets() {
|
|
24
|
+
return Array.from(deployers.keys());
|
|
25
|
+
}
|
|
26
|
+
function hasDeployer(target) {
|
|
27
|
+
return deployers.has(target);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/deployers/registry.ts"],"names":[],"mappings":";;AAIA,4CAEC;AAED,kCAOC;AAED,sCAEC;AAED,kCAEC;AAED,kCAEC;AAzBD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuC,CAAC;AAEjE,SAAgB,gBAAgB,CAAC,OAA0B;IACzD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,WAAW,CAAC,MAAwB;IAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,iBAAiB,SAAS,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,WAAW,CAAC,MAAwB;IAClD,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentMode } from "../types.js";
|
|
2
|
+
interface StreamlitConfig {
|
|
3
|
+
projectName: string;
|
|
4
|
+
agentMode: AgentMode;
|
|
5
|
+
agentNames?: string[];
|
|
6
|
+
port: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function generateStreamlitApp(config: StreamlitConfig): string;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=streamlit-app.d.ts.map
|