@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.
Files changed (92) hide show
  1. package/README.md +65 -0
  2. package/dist/adapters/anthropic.d.ts.map +1 -1
  3. package/dist/adapters/anthropic.js +75 -75
  4. package/dist/adapters/anthropic.js.map +1 -1
  5. package/dist/adapters/app-scaffold.d.ts +12 -0
  6. package/dist/adapters/app-scaffold.d.ts.map +1 -0
  7. package/dist/adapters/app-scaffold.js +49 -0
  8. package/dist/adapters/app-scaffold.js.map +1 -0
  9. package/dist/adapters/autogen.d.ts +8 -0
  10. package/dist/adapters/autogen.d.ts.map +1 -0
  11. package/dist/adapters/autogen.js +259 -0
  12. package/dist/adapters/autogen.js.map +1 -0
  13. package/dist/adapters/crewai.d.ts.map +1 -1
  14. package/dist/adapters/crewai.js +80 -52
  15. package/dist/adapters/crewai.js.map +1 -1
  16. package/dist/adapters/google-adk.d.ts.map +1 -1
  17. package/dist/adapters/google-adk.js +73 -37
  18. package/dist/adapters/google-adk.js.map +1 -1
  19. package/dist/adapters/index.js +4 -0
  20. package/dist/adapters/index.js.map +1 -1
  21. package/dist/adapters/langgraph.d.ts.map +1 -1
  22. package/dist/adapters/langgraph.js +41 -42
  23. package/dist/adapters/langgraph.js.map +1 -1
  24. package/dist/adapters/llamaindex.d.ts +8 -0
  25. package/dist/adapters/llamaindex.d.ts.map +1 -0
  26. package/dist/adapters/llamaindex.js +230 -0
  27. package/dist/adapters/llamaindex.js.map +1 -0
  28. package/dist/adapters/openai.d.ts.map +1 -1
  29. package/dist/adapters/openai.js +76 -53
  30. package/dist/adapters/openai.js.map +1 -1
  31. package/dist/deployers/api-wrapper.d.ts +11 -0
  32. package/dist/deployers/api-wrapper.d.ts.map +1 -0
  33. package/dist/deployers/api-wrapper.js +86 -0
  34. package/dist/deployers/api-wrapper.js.map +1 -0
  35. package/dist/deployers/aws-lambda.d.ts +3 -0
  36. package/dist/deployers/aws-lambda.d.ts.map +1 -0
  37. package/dist/deployers/aws-lambda.js +101 -0
  38. package/dist/deployers/aws-lambda.js.map +1 -0
  39. package/dist/deployers/docker.d.ts +3 -0
  40. package/dist/deployers/docker.d.ts.map +1 -0
  41. package/dist/deployers/docker.js +123 -0
  42. package/dist/deployers/docker.js.map +1 -0
  43. package/dist/deployers/fly-io.d.ts +3 -0
  44. package/dist/deployers/fly-io.d.ts.map +1 -0
  45. package/dist/deployers/fly-io.js +84 -0
  46. package/dist/deployers/fly-io.js.map +1 -0
  47. package/dist/deployers/gcp-cloud-run.d.ts +3 -0
  48. package/dist/deployers/gcp-cloud-run.d.ts.map +1 -0
  49. package/dist/deployers/gcp-cloud-run.js +75 -0
  50. package/dist/deployers/gcp-cloud-run.js.map +1 -0
  51. package/dist/deployers/guard-mapper.d.ts +6 -0
  52. package/dist/deployers/guard-mapper.d.ts.map +1 -0
  53. package/dist/deployers/guard-mapper.js +63 -0
  54. package/dist/deployers/guard-mapper.js.map +1 -0
  55. package/dist/deployers/index.d.ts +6 -0
  56. package/dist/deployers/index.d.ts.map +1 -0
  57. package/dist/deployers/index.js +30 -0
  58. package/dist/deployers/index.js.map +1 -0
  59. package/dist/deployers/pipeline.d.ts +9 -0
  60. package/dist/deployers/pipeline.d.ts.map +1 -0
  61. package/dist/deployers/pipeline.js +55 -0
  62. package/dist/deployers/pipeline.js.map +1 -0
  63. package/dist/deployers/railway.d.ts +3 -0
  64. package/dist/deployers/railway.d.ts.map +1 -0
  65. package/dist/deployers/railway.js +53 -0
  66. package/dist/deployers/railway.js.map +1 -0
  67. package/dist/deployers/registry.d.ts +7 -0
  68. package/dist/deployers/registry.d.ts.map +1 -0
  69. package/dist/deployers/registry.js +29 -0
  70. package/dist/deployers/registry.js.map +1 -0
  71. package/dist/deployers/streamlit-app.d.ts +10 -0
  72. package/dist/deployers/streamlit-app.d.ts.map +1 -0
  73. package/dist/deployers/streamlit-app.js +80 -0
  74. package/dist/deployers/streamlit-app.js.map +1 -0
  75. package/dist/index.d.ts +2 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +13 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/types.d.ts +41 -0
  80. package/dist/types.d.ts.map +1 -1
  81. package/package.json +17 -1
  82. package/src/adapters/anthropic.ts +0 -268
  83. package/src/adapters/crewai.ts +0 -254
  84. package/src/adapters/google-adk.ts +0 -167
  85. package/src/adapters/index.ts +0 -21
  86. package/src/adapters/langgraph.ts +0 -336
  87. package/src/adapters/openai.ts +0 -214
  88. package/src/adapters/registry.ts +0 -37
  89. package/src/config.ts +0 -315
  90. package/src/index.ts +0 -54
  91. package/src/types.ts +0 -203
  92. 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,3 @@
1
+ import type { DeploymentAdapter } from "../types.js";
2
+ export declare const flyIoAdapter: DeploymentAdapter;
3
+ //# sourceMappingURL=fly-io.d.ts.map
@@ -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,3 @@
1
+ import type { DeploymentAdapter } from "../types.js";
2
+ export declare const gcpCloudRunAdapter: DeploymentAdapter;
3
+ //# sourceMappingURL=gcp-cloud-run.d.ts.map
@@ -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,3 @@
1
+ import type { DeploymentAdapter } from "../types.js";
2
+ export declare const railwayAdapter: DeploymentAdapter;
3
+ //# sourceMappingURL=railway.d.ts.map
@@ -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