iec-builder 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/.claude/settings.local.json +111 -0
- package/.iec.yaml +5 -0
- package/CLAUDE.md +174 -0
- package/Dockerfile +34 -0
- package/README.md +84 -0
- package/catalog-info.yaml +11 -0
- package/dist/config/env.d.ts +219 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +89 -0
- package/dist/config/env.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +148 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/auth.d.ts +43 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +217 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/org-access.d.ts +28 -0
- package/dist/middleware/org-access.d.ts.map +1 -0
- package/dist/middleware/org-access.js +102 -0
- package/dist/middleware/org-access.js.map +1 -0
- package/dist/models/types.d.ts +254 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +2 -0
- package/dist/models/types.js.map +1 -0
- package/dist/routes/ai.d.ts +2 -0
- package/dist/routes/ai.d.ts.map +1 -0
- package/dist/routes/ai.js +77 -0
- package/dist/routes/ai.js.map +1 -0
- package/dist/routes/audit.d.ts +2 -0
- package/dist/routes/audit.d.ts.map +1 -0
- package/dist/routes/audit.js +102 -0
- package/dist/routes/audit.js.map +1 -0
- package/dist/routes/builds.d.ts +2 -0
- package/dist/routes/builds.d.ts.map +1 -0
- package/dist/routes/builds.js +262 -0
- package/dist/routes/builds.js.map +1 -0
- package/dist/routes/cluster.d.ts +2 -0
- package/dist/routes/cluster.d.ts.map +1 -0
- package/dist/routes/cluster.js +181 -0
- package/dist/routes/cluster.js.map +1 -0
- package/dist/routes/config.d.ts +2 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +291 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/databases.d.ts +2 -0
- package/dist/routes/databases.d.ts.map +1 -0
- package/dist/routes/databases.js +161 -0
- package/dist/routes/databases.js.map +1 -0
- package/dist/routes/db-whitelist.d.ts +2 -0
- package/dist/routes/db-whitelist.d.ts.map +1 -0
- package/dist/routes/db-whitelist.js +148 -0
- package/dist/routes/db-whitelist.js.map +1 -0
- package/dist/routes/domains.d.ts +2 -0
- package/dist/routes/domains.d.ts.map +1 -0
- package/dist/routes/domains.js +449 -0
- package/dist/routes/domains.js.map +1 -0
- package/dist/routes/oauth.d.ts +2 -0
- package/dist/routes/oauth.d.ts.map +1 -0
- package/dist/routes/oauth.js +180 -0
- package/dist/routes/oauth.js.map +1 -0
- package/dist/routes/observability.d.ts +2 -0
- package/dist/routes/observability.d.ts.map +1 -0
- package/dist/routes/observability.js +167 -0
- package/dist/routes/observability.js.map +1 -0
- package/dist/routes/orgs.d.ts +2 -0
- package/dist/routes/orgs.d.ts.map +1 -0
- package/dist/routes/orgs.js +270 -0
- package/dist/routes/orgs.js.map +1 -0
- package/dist/routes/platform.d.ts +2 -0
- package/dist/routes/platform.d.ts.map +1 -0
- package/dist/routes/platform.js +107 -0
- package/dist/routes/platform.js.map +1 -0
- package/dist/routes/push.d.ts +2 -0
- package/dist/routes/push.d.ts.map +1 -0
- package/dist/routes/push.js +233 -0
- package/dist/routes/push.js.map +1 -0
- package/dist/routes/rotation.d.ts +3 -0
- package/dist/routes/rotation.d.ts.map +1 -0
- package/dist/routes/rotation.js +154 -0
- package/dist/routes/rotation.js.map +1 -0
- package/dist/routes/services.d.ts +2 -0
- package/dist/routes/services.d.ts.map +1 -0
- package/dist/routes/services.js +246 -0
- package/dist/routes/services.js.map +1 -0
- package/dist/routes/storage.d.ts +2 -0
- package/dist/routes/storage.d.ts.map +1 -0
- package/dist/routes/storage.js +118 -0
- package/dist/routes/storage.js.map +1 -0
- package/dist/routes/users.d.ts +2 -0
- package/dist/routes/users.d.ts.map +1 -0
- package/dist/routes/users.js +183 -0
- package/dist/routes/users.js.map +1 -0
- package/dist/routes/versions.d.ts +2 -0
- package/dist/routes/versions.d.ts.map +1 -0
- package/dist/routes/versions.js +195 -0
- package/dist/routes/versions.js.map +1 -0
- package/dist/routes/webhooks.d.ts +2 -0
- package/dist/routes/webhooks.d.ts.map +1 -0
- package/dist/routes/webhooks.js +334 -0
- package/dist/routes/webhooks.js.map +1 -0
- package/dist/services/__tests__/deploy-pipeline.integration.test.d.ts +2 -0
- package/dist/services/__tests__/deploy-pipeline.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/deploy-pipeline.integration.test.js +482 -0
- package/dist/services/__tests__/deploy-pipeline.integration.test.js.map +1 -0
- package/dist/services/bio-client.d.ts +68 -0
- package/dist/services/bio-client.d.ts.map +1 -0
- package/dist/services/bio-client.js +110 -0
- package/dist/services/bio-client.js.map +1 -0
- package/dist/services/build-queue.d.ts +7 -0
- package/dist/services/build-queue.d.ts.map +1 -0
- package/dist/services/build-queue.js +114 -0
- package/dist/services/build-queue.js.map +1 -0
- package/dist/services/builder.d.ts +7 -0
- package/dist/services/builder.d.ts.map +1 -0
- package/dist/services/builder.js +1384 -0
- package/dist/services/builder.js.map +1 -0
- package/dist/services/catalog.d.ts +177 -0
- package/dist/services/catalog.d.ts.map +1 -0
- package/dist/services/catalog.js +805 -0
- package/dist/services/catalog.js.map +1 -0
- package/dist/services/catalog.test.d.ts +2 -0
- package/dist/services/catalog.test.d.ts.map +1 -0
- package/dist/services/catalog.test.js +467 -0
- package/dist/services/catalog.test.js.map +1 -0
- package/dist/services/cloudflare.d.ts +43 -0
- package/dist/services/cloudflare.d.ts.map +1 -0
- package/dist/services/cloudflare.js +182 -0
- package/dist/services/cloudflare.js.map +1 -0
- package/dist/services/config-validator.d.ts +28 -0
- package/dist/services/config-validator.d.ts.map +1 -0
- package/dist/services/config-validator.js +68 -0
- package/dist/services/config-validator.js.map +1 -0
- package/dist/services/config-validator.test.d.ts +2 -0
- package/dist/services/config-validator.test.d.ts.map +1 -0
- package/dist/services/config-validator.test.js +151 -0
- package/dist/services/config-validator.test.js.map +1 -0
- package/dist/services/crypto.d.ts +19 -0
- package/dist/services/crypto.d.ts.map +1 -0
- package/dist/services/crypto.js +63 -0
- package/dist/services/crypto.js.map +1 -0
- package/dist/services/database.d.ts +26 -0
- package/dist/services/database.d.ts.map +1 -0
- package/dist/services/database.js +100 -0
- package/dist/services/database.js.map +1 -0
- package/dist/services/db-credential-manager.d.ts +73 -0
- package/dist/services/db-credential-manager.d.ts.map +1 -0
- package/dist/services/db-credential-manager.js +342 -0
- package/dist/services/db-credential-manager.js.map +1 -0
- package/dist/services/db-provisioner.d.ts +57 -0
- package/dist/services/db-provisioner.d.ts.map +1 -0
- package/dist/services/db-provisioner.js +400 -0
- package/dist/services/db-provisioner.js.map +1 -0
- package/dist/services/db-provisioner.test.d.ts +2 -0
- package/dist/services/db-provisioner.test.d.ts.map +1 -0
- package/dist/services/db-provisioner.test.js +141 -0
- package/dist/services/db-provisioner.test.js.map +1 -0
- package/dist/services/db-whitelist.d.ts +58 -0
- package/dist/services/db-whitelist.d.ts.map +1 -0
- package/dist/services/db-whitelist.js +379 -0
- package/dist/services/db-whitelist.js.map +1 -0
- package/dist/services/dependency-resolver.d.ts +58 -0
- package/dist/services/dependency-resolver.d.ts.map +1 -0
- package/dist/services/dependency-resolver.js +180 -0
- package/dist/services/dependency-resolver.js.map +1 -0
- package/dist/services/dependency-resolver.test.d.ts +2 -0
- package/dist/services/dependency-resolver.test.d.ts.map +1 -0
- package/dist/services/dependency-resolver.test.js +195 -0
- package/dist/services/dependency-resolver.test.js.map +1 -0
- package/dist/services/deploy-gate.d.ts +19 -0
- package/dist/services/deploy-gate.d.ts.map +1 -0
- package/dist/services/deploy-gate.js +56 -0
- package/dist/services/deploy-gate.js.map +1 -0
- package/dist/services/deploy-gate.test.d.ts +2 -0
- package/dist/services/deploy-gate.test.d.ts.map +1 -0
- package/dist/services/deploy-gate.test.js +199 -0
- package/dist/services/deploy-gate.test.js.map +1 -0
- package/dist/services/dockerfile-generator.d.ts +31 -0
- package/dist/services/dockerfile-generator.d.ts.map +1 -0
- package/dist/services/dockerfile-generator.js +544 -0
- package/dist/services/dockerfile-generator.js.map +1 -0
- package/dist/services/dockerfile-generator.test.d.ts +2 -0
- package/dist/services/dockerfile-generator.test.d.ts.map +1 -0
- package/dist/services/dockerfile-generator.test.js +144 -0
- package/dist/services/dockerfile-generator.test.js.map +1 -0
- package/dist/services/forgejo.d.ts +58 -0
- package/dist/services/forgejo.d.ts.map +1 -0
- package/dist/services/forgejo.js +131 -0
- package/dist/services/forgejo.js.map +1 -0
- package/dist/services/koko.d.ts +153 -0
- package/dist/services/koko.d.ts.map +1 -0
- package/dist/services/koko.js +260 -0
- package/dist/services/koko.js.map +1 -0
- package/dist/services/kubernetes.d.ts +16 -0
- package/dist/services/kubernetes.d.ts.map +1 -0
- package/dist/services/kubernetes.js +102 -0
- package/dist/services/kubernetes.js.map +1 -0
- package/dist/services/oauth-provisioner.d.ts +30 -0
- package/dist/services/oauth-provisioner.d.ts.map +1 -0
- package/dist/services/oauth-provisioner.js +182 -0
- package/dist/services/oauth-provisioner.js.map +1 -0
- package/dist/services/oauth-provisioner.test.d.ts +2 -0
- package/dist/services/oauth-provisioner.test.d.ts.map +1 -0
- package/dist/services/oauth-provisioner.test.js +349 -0
- package/dist/services/oauth-provisioner.test.js.map +1 -0
- package/dist/services/pod-diagnostics.d.ts +11 -0
- package/dist/services/pod-diagnostics.d.ts.map +1 -0
- package/dist/services/pod-diagnostics.js +201 -0
- package/dist/services/pod-diagnostics.js.map +1 -0
- package/dist/services/rotation-scheduler.d.ts +2 -0
- package/dist/services/rotation-scheduler.d.ts.map +1 -0
- package/dist/services/rotation-scheduler.js +215 -0
- package/dist/services/rotation-scheduler.js.map +1 -0
- package/dist/services/storage-credential-manager.d.ts +43 -0
- package/dist/services/storage-credential-manager.d.ts.map +1 -0
- package/dist/services/storage-credential-manager.js +159 -0
- package/dist/services/storage-credential-manager.js.map +1 -0
- package/dist/services/storage-provisioner.d.ts +32 -0
- package/dist/services/storage-provisioner.d.ts.map +1 -0
- package/dist/services/storage-provisioner.js +136 -0
- package/dist/services/storage-provisioner.js.map +1 -0
- package/dist/services/storage.d.ts +65 -0
- package/dist/services/storage.d.ts.map +1 -0
- package/dist/services/storage.js +204 -0
- package/dist/services/storage.js.map +1 -0
- package/dist/services/troubleshooter.d.ts +22 -0
- package/dist/services/troubleshooter.d.ts.map +1 -0
- package/dist/services/troubleshooter.js +168 -0
- package/dist/services/troubleshooter.js.map +1 -0
- package/dist/services/vault-client.d.ts +114 -0
- package/dist/services/vault-client.d.ts.map +1 -0
- package/dist/services/vault-client.js +411 -0
- package/dist/services/vault-client.js.map +1 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +6 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/response.d.ts +13 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +12 -0
- package/dist/utils/response.js.map +1 -0
- package/docs/registry-migration.md +301 -0
- package/docs/registry-quickstart.md +169 -0
- package/ecosystem.config.cjs +14 -0
- package/findings.md +168 -0
- package/helm/default-service/Chart.yaml +6 -0
- package/helm/default-service/templates/deployment.yaml +97 -0
- package/helm/default-service/templates/ingress.yaml +43 -0
- package/helm/default-service/templates/service.yaml +17 -0
- package/helm/default-service/values.yaml +82 -0
- package/helm/services/iec-builder/Chart.yaml +6 -0
- package/helm/services/iec-builder/templates/_helpers.tpl +61 -0
- package/helm/services/iec-builder/templates/deployment.yaml +73 -0
- package/helm/services/iec-builder/templates/service.yaml +15 -0
- package/helm/services/iec-builder/templates/serviceaccount.yaml +12 -0
- package/helm/services/iec-builder/values.yaml +56 -0
- package/helm/vault-values.yaml +127 -0
- package/package.json +45 -0
- package/progress.md +156 -0
- package/scripts/.vault-init-keys.json +23 -0
- package/scripts/backfill-ownership.ts +113 -0
- package/scripts/finalize-mongo-auth.sh +212 -0
- package/scripts/setup-ipset.sh +107 -0
- package/scripts/setup-mongo-auth.sh +163 -0
- package/scripts/setup-neo4j-auth.sh +62 -0
- package/scripts/setup-redis-auth.sh +55 -0
- package/scripts/setup-registry-secret.sh +71 -0
- package/scripts/setup-vault.sh +308 -0
- package/src/config/env.ts +117 -0
- package/src/index.ts +153 -0
- package/src/middleware/auth.ts +294 -0
- package/src/middleware/org-access.ts +126 -0
- package/src/models/types.ts +288 -0
- package/src/routes/ai.ts +115 -0
- package/src/routes/audit.ts +121 -0
- package/src/routes/builds.ts +320 -0
- package/src/routes/cluster.ts +235 -0
- package/src/routes/config.ts +369 -0
- package/src/routes/databases.ts +201 -0
- package/src/routes/db-whitelist.ts +204 -0
- package/src/routes/domains.ts +547 -0
- package/src/routes/oauth.ts +195 -0
- package/src/routes/observability.ts +205 -0
- package/src/routes/orgs.ts +330 -0
- package/src/routes/platform.ts +134 -0
- package/src/routes/rotation.ts +191 -0
- package/src/routes/services.ts +290 -0
- package/src/routes/storage.ts +153 -0
- package/src/routes/users.ts +235 -0
- package/src/routes/webhooks.ts +384 -0
- package/src/services/__tests__/catalog-storage.test.ts +186 -0
- package/src/services/__tests__/deploy-pipeline.integration.test.ts +624 -0
- package/src/services/__tests__/pod-diagnostics.test.ts +332 -0
- package/src/services/__tests__/storage-credential-manager.test.ts +129 -0
- package/src/services/__tests__/storage-provisioner.test.ts +166 -0
- package/src/services/__tests__/troubleshooter.test.ts +329 -0
- package/src/services/bio-client.ts +189 -0
- package/src/services/build-queue.ts +137 -0
- package/src/services/builder.ts +1800 -0
- package/src/services/catalog.test.ts +1389 -0
- package/src/services/catalog.ts +1187 -0
- package/src/services/cloudflare.ts +259 -0
- package/src/services/config-validator.test.ts +190 -0
- package/src/services/config-validator.ts +108 -0
- package/src/services/crypto.ts +78 -0
- package/src/services/database.ts +122 -0
- package/src/services/db-credential-manager.test.ts +101 -0
- package/src/services/db-credential-manager.ts +447 -0
- package/src/services/db-provisioner.test.ts +602 -0
- package/src/services/db-provisioner.ts +589 -0
- package/src/services/db-whitelist.test.ts +671 -0
- package/src/services/db-whitelist.ts +496 -0
- package/src/services/dependency-resolver.test.ts +677 -0
- package/src/services/dependency-resolver.ts +319 -0
- package/src/services/deploy-gate.test.ts +247 -0
- package/src/services/deploy-gate.ts +75 -0
- package/src/services/dockerfile-generator.test.ts +401 -0
- package/src/services/dockerfile-generator.ts +606 -0
- package/src/services/forgejo.ts +212 -0
- package/src/services/koko.ts +492 -0
- package/src/services/kubernetes.ts +141 -0
- package/src/services/oauth-provisioner.test.ts +477 -0
- package/src/services/oauth-provisioner.ts +286 -0
- package/src/services/pod-diagnostics.ts +261 -0
- package/src/services/rotation-scheduler.ts +293 -0
- package/src/services/storage-credential-manager.ts +223 -0
- package/src/services/storage-provisioner.ts +216 -0
- package/src/services/storage.ts +274 -0
- package/src/services/troubleshooter.ts +208 -0
- package/src/services/vault-client.test.ts +272 -0
- package/src/services/vault-client.ts +587 -0
- package/src/utils/logger.ts +6 -0
- package/src/utils/response.ts +23 -0
- package/task_plan.md +171 -0
- package/tsconfig.json +20 -0
- package/vitest.config.ts +19 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"mcp__filesystem__directory_tree",
|
|
5
|
+
"mcp__filesystem__read_multiple_files",
|
|
6
|
+
"Bash(git config:*)",
|
|
7
|
+
"mcp__filesystem__list_directory",
|
|
8
|
+
"mcp__filesystem__list_allowed_directories",
|
|
9
|
+
"mcp__jci-mcp__bible_create",
|
|
10
|
+
"mcp__jci-mcp__bible_publish",
|
|
11
|
+
"mcp__jci-mcp__bible_append",
|
|
12
|
+
"Bash(git add:*)",
|
|
13
|
+
"Bash(git commit:*)",
|
|
14
|
+
"Bash(iec deploy:*)",
|
|
15
|
+
"Bash(iec logs:*)",
|
|
16
|
+
"Bash(npm install)",
|
|
17
|
+
"Bash(git push)",
|
|
18
|
+
"Bash(gh run list:*)",
|
|
19
|
+
"Bash(ssh:*)",
|
|
20
|
+
"Bash(pnpm iec link:*)",
|
|
21
|
+
"Bash(pnpm iec deploy:*)",
|
|
22
|
+
"Bash(pnpm iec logs:*)",
|
|
23
|
+
"Bash(kubectl get:*)",
|
|
24
|
+
"Bash(kubectl describe:*)",
|
|
25
|
+
"Bash(doctl compute droplet-size list:*)",
|
|
26
|
+
"Bash(doctl compute size list:*)",
|
|
27
|
+
"Bash(doctl compute size:*)",
|
|
28
|
+
"Bash(sort:*)",
|
|
29
|
+
"Bash(kubectl apply:*)",
|
|
30
|
+
"mcp__filesystem__search_files",
|
|
31
|
+
"Read(//Users/daryx/dev/**)",
|
|
32
|
+
"Bash(ls:*)",
|
|
33
|
+
"Bash(iec status:*)",
|
|
34
|
+
"Bash(npm run build:*)",
|
|
35
|
+
"Bash(git -C /Users/daryx/dev/tawa-web log --oneline -3)",
|
|
36
|
+
"WebFetch(domain:tawa.insureco.io)",
|
|
37
|
+
"Bash(npx tsc:*)",
|
|
38
|
+
"Bash(npx tsx:*)",
|
|
39
|
+
"Bash(doctl kubernetes cluster:*)",
|
|
40
|
+
"Bash(scp:*)",
|
|
41
|
+
"Bash(dig:*)",
|
|
42
|
+
"mcp__firecrawl__firecrawl_search",
|
|
43
|
+
"mcp__firecrawl__firecrawl_scrape",
|
|
44
|
+
"Bash(FORGEJO_TOKEN=\"afa025a5fa8a07633ddc50acb32945da5c1f86b3\")",
|
|
45
|
+
"Bash(for name in iec-builder iec-koko iec-janus iec-bio checkcle iec-wallet tawa-web resi-tech icap-portal iec-relay sandiego-site)",
|
|
46
|
+
"Bash(do echo -n \"$name: \")",
|
|
47
|
+
"Bash(python3:*)",
|
|
48
|
+
"Bash(done)",
|
|
49
|
+
"Bash(bash -c '\nFORGEJO_TOKEN=\"\"afa025a5fa8a07633ddc50acb32945da5c1f86b3\"\"\nWORK_DIR=\"\"/tmp/git-migration\"\"\nmkdir -p \"\"$WORK_DIR\"\"\n\ndeclare -A REPOS\nREPOS[\"\"git@github.com:insurecosys/iec-builder.git\"\"]=\"\"iec-builder\"\"\nREPOS[\"\"git@github.com:insurecosys/iec-koko.git\"\"]=\"\"iec-koko\"\"\nREPOS[\"\"git@github.com:insurecosys/iec-janus.git\"\"]=\"\"iec-janus\"\"\nREPOS[\"\"git@github.com:insurecosys/iec-bio.git\"\"]=\"\"iec-bio\"\"\nREPOS[\"\"git@github.com:insurecosys/checkcle.git\"\"]=\"\"checkcle\"\"\nREPOS[\"\"git@github.com:insurecosys/iec-wallet.git\"\"]=\"\"iec-wallet\"\"\nREPOS[\"\"git@github.com:insurecosys/tawa-web.git\"\"]=\"\"tawa-web\"\"\nREPOS[\"\"git@github.com:insureco/resi-tech.git\"\"]=\"\"resi-tech\"\"\nREPOS[\"\"git@github.com:insurecosys/icap-portal.git\"\"]=\"\"icap-portal\"\"\nREPOS[\"\"git@github.com:insurecosys/iec-relay.git\"\"]=\"\"iec-relay\"\"\nREPOS[\"\"git@github.com:sagmahajan/sandiego-site.git\"\"]=\"\"sandiego-site\"\"\n\nfor github_url in \"\"${!REPOS[@]}\"\"; do\n name=\"\"${REPOS[$github_url]}\"\"\n echo \"\"=== $name ===\"\"\n cd \"\"$WORK_DIR\"\"\n rm -rf \"\"${name}.git\"\"\n git clone --bare \"\"$github_url\"\" \"\"${name}.git\"\" 2>&1 | tail -1\n cd \"\"${name}.git\"\"\n git push --mirror \"\"https://forgejo-token:${FORGEJO_TOKEN}@git.insureco.io/insureco/${name}.git\"\" 2>&1 | tail -3\n echo \"\"\"\"\ndone\n')",
|
|
50
|
+
"Bash(wc:*)",
|
|
51
|
+
"Bash(chmod:*)",
|
|
52
|
+
"Bash(git -C /Users/daryx/dev/tawa-cli add src/commands/org.ts src/commands/login.ts src/index.ts src/lib/builder.ts)",
|
|
53
|
+
"Bash(git -C /Users/daryx/dev/tawa-cli diff --cached --stat)",
|
|
54
|
+
"Bash(git -C /Users/daryx/dev/tawa-cli push)",
|
|
55
|
+
"Bash(npm publish:*)",
|
|
56
|
+
"Bash(npx turbo run build:*)",
|
|
57
|
+
"Bash(mongosh:*)",
|
|
58
|
+
"Bash(tawa config list:*)",
|
|
59
|
+
"Bash(tawa deploy:*)",
|
|
60
|
+
"Bash(NEW_URI=\"mongodb://svc_relay_prod:W143iTjsvqrqyTgGIWq1fYsaKSLwPrgv@64.23.181.20:27017/relay?authSource=relay\")",
|
|
61
|
+
"Bash(tawa status:*)",
|
|
62
|
+
"Bash(kubectl logs:*)",
|
|
63
|
+
"Bash(tawa login:*)",
|
|
64
|
+
"Bash(tawa services:*)",
|
|
65
|
+
"Bash(git clone:*)",
|
|
66
|
+
"Bash(node dist/index.js:*)",
|
|
67
|
+
"Bash(kubectl exec:*)",
|
|
68
|
+
"Bash(tawa logs:*)",
|
|
69
|
+
"Skill(planning-with-files)",
|
|
70
|
+
"Skill(planning-with-files:*)",
|
|
71
|
+
"Bash(kubectl run:*)",
|
|
72
|
+
"Bash(kubectl delete:*)",
|
|
73
|
+
"Bash(aws kms create-alias:*)",
|
|
74
|
+
"Bash(aws iam create-user:*)",
|
|
75
|
+
"Bash(aws iam put-user-policy:*)",
|
|
76
|
+
"Bash(aws iam create-access-key:*)",
|
|
77
|
+
"Bash(bash:*)",
|
|
78
|
+
"Bash(git fetch:*)",
|
|
79
|
+
"WebFetch(domain:paketo.io)",
|
|
80
|
+
"WebFetch(domain:nixpacks.com)",
|
|
81
|
+
"WebFetch(domain:buildpacks.io)",
|
|
82
|
+
"WebFetch(domain:github.com)",
|
|
83
|
+
"WebFetch(domain:raw.githubusercontent.com)",
|
|
84
|
+
"Bash(gh api:*)",
|
|
85
|
+
"Bash(npm info:*)",
|
|
86
|
+
"Bash(go version:*)",
|
|
87
|
+
"Bash(git stash:*)",
|
|
88
|
+
"Bash(git revert:*)",
|
|
89
|
+
"Bash(git rm:*)",
|
|
90
|
+
"Bash(host:*)",
|
|
91
|
+
"Bash(nslookup:*)",
|
|
92
|
+
"Bash(npm view:*)",
|
|
93
|
+
"Bash(head:*)",
|
|
94
|
+
"Bash(tail:*)",
|
|
95
|
+
"Bash(git -C /Users/daryx/dev/tawa-cli add src/commands/sample.ts src/lib/scaffold.ts src/index.ts)",
|
|
96
|
+
"Bash(git -C /Users/daryx/dev/tawa-cli commit -m \"$\\(cat <<''EOF''\nfeat: add --with-storage flag to tawa sample scaffold\n\nAdds S3 object storage support to scaffolded projects. When used,\npatches package.json with tawa-storage dependency, adds spec.storage\nto catalog-info.yaml, and creates src/storage.ts helper file.\nEOF\n\\)\")",
|
|
97
|
+
"Bash(git -C /Users/daryx/dev/tawa-web add \"src/app/\\(public\\)/docs/storage/page.tsx\" \"src/app/\\(public\\)/docs/layout.tsx\" \"src/app/\\(public\\)/docs/page.tsx\")",
|
|
98
|
+
"Bash(git -C /Users/daryx/dev/tawa-web commit -m \"$\\(cat <<''EOF''\ndocs: add Object Storage guide\n\nCovers YAML config, storage tiers, env vars, tawa-storage SDK usage,\nAPI reference, local development with Docker MinIO, and scaffold support.\nEOF\n\\)\")",
|
|
99
|
+
"Bash(npx turbo build:*)",
|
|
100
|
+
"Bash(git -C /Users/daryx/dev/iec-bio remote:*)",
|
|
101
|
+
"mcp__iec-cf__list_dns_records",
|
|
102
|
+
"Bash(tawa domain add:*)",
|
|
103
|
+
"Bash(npx tawa:*)",
|
|
104
|
+
"Bash(xargs:*)",
|
|
105
|
+
"Bash(for i in {1..3})",
|
|
106
|
+
"Bash(do echo \"Attempt $i:\")",
|
|
107
|
+
"Bash(sudo dscacheutil:*)",
|
|
108
|
+
"Bash(sudo killall:*)"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
package/.iec.yaml
ADDED
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# iec-builder
|
|
2
|
+
|
|
3
|
+
Build and deployment server for Tawa platform services. Runs on tawa-builder server (64.23.181.20, PM2 process 0).
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
### Deployment Flow
|
|
8
|
+
|
|
9
|
+
`tawa deploy` triggers the builder which:
|
|
10
|
+
1. Clones repo at specified commit
|
|
11
|
+
2. Reads `catalog-info.yaml` for service metadata (framework, databases, auth, routes)
|
|
12
|
+
3. Builds Docker image (auto-generates Dockerfile if missing)
|
|
13
|
+
4. Pushes to DigitalOcean Container Registry
|
|
14
|
+
5. Provisions databases (MongoDB, Redis, Neo4j) and creates K8s secrets
|
|
15
|
+
6. Provisions OAuth client via Bio-ID and creates K8s secret
|
|
16
|
+
7. Deploys via Helm (default-service chart or custom chart)
|
|
17
|
+
8. Registers service in Koko (service mesh)
|
|
18
|
+
9. Configures DNS
|
|
19
|
+
|
|
20
|
+
### Key Source Files
|
|
21
|
+
|
|
22
|
+
| File | Purpose |
|
|
23
|
+
|------|---------|
|
|
24
|
+
| `src/services/builder.ts` | Core build/deploy orchestration |
|
|
25
|
+
| `src/services/crypto.ts` | AES-256-GCM encryption for secrets |
|
|
26
|
+
| `src/services/db-provisioner.ts` | Database provisioning and secret creation |
|
|
27
|
+
| `src/services/db-credential-manager.ts` | Per-service MongoDB user management |
|
|
28
|
+
| `src/services/oauth-provisioner.ts` | Bio-ID OAuth client provisioning |
|
|
29
|
+
| `src/routes/config.ts` | Config/secrets CRUD API |
|
|
30
|
+
| `src/routes/builds.ts` | Build trigger and status API |
|
|
31
|
+
| `src/routes/databases.ts` | Database credential listing and rotation API |
|
|
32
|
+
| `src/services/db-whitelist.ts` | Self-service DB access (IP whitelist + ipset) |
|
|
33
|
+
| `src/routes/db-whitelist.ts` | Whitelist API endpoints |
|
|
34
|
+
| `helm/default-service/` | Default Helm chart used for most services |
|
|
35
|
+
|
|
36
|
+
## Managed Secrets System
|
|
37
|
+
|
|
38
|
+
Secrets are stored encrypted in MongoDB and injected into Kubernetes on deploy.
|
|
39
|
+
|
|
40
|
+
### Flow
|
|
41
|
+
|
|
42
|
+
1. Developer sets secret: `tawa config set KEY=VALUE --secret`
|
|
43
|
+
2. API encrypts value with AES-256-GCM using `CONFIG_ENCRYPTION_KEY`
|
|
44
|
+
3. Encrypted value stored in `service.secrets` in MongoDB
|
|
45
|
+
4. On deploy, builder decrypts and creates K8s Secret: `{service}-managed-secrets`
|
|
46
|
+
5. Helm receives `--set secretRef={service}-managed-secrets`
|
|
47
|
+
6. Pod mounts the secret via `envFrom.secretRef`
|
|
48
|
+
|
|
49
|
+
### Secret Naming Convention
|
|
50
|
+
|
|
51
|
+
| Type | K8s Secret Name | Created By |
|
|
52
|
+
|------|----------------|------------|
|
|
53
|
+
| Managed (user-defined) | `{service}-managed-secrets` | builder.ts (deploy) |
|
|
54
|
+
| MongoDB | `{service}-db-mongodb` | db-provisioner.ts |
|
|
55
|
+
| Redis | `{service}-db-redis` | db-provisioner.ts |
|
|
56
|
+
| Neo4j | `{service}-db-neo4j` | db-provisioner.ts |
|
|
57
|
+
| OAuth | `{service}-oauth` | oauth-provisioner.ts |
|
|
58
|
+
| DB Credentials (auth) | `{service}-db-{type}` | db-provisioner.ts (with credentials) |
|
|
59
|
+
|
|
60
|
+
### Important
|
|
61
|
+
|
|
62
|
+
- `CONFIG_ENCRYPTION_KEY` (env var, 64-char hex) is required for secret operations
|
|
63
|
+
- Secret values are NEVER returned by the API -- only key names
|
|
64
|
+
- `tawa config pull` decrypts and writes to `.env.local` (audited)
|
|
65
|
+
- Do NOT create Helm `secret.yaml` templates -- let the builder handle secrets
|
|
66
|
+
|
|
67
|
+
## Helm Charts
|
|
68
|
+
|
|
69
|
+
### Default Service Chart (`helm/default-service/`)
|
|
70
|
+
|
|
71
|
+
Used for most services. The deployment template mounts:
|
|
72
|
+
- `{release}-config` (ConfigMap, optional) -- plain env vars via `--set env.KEY=val`
|
|
73
|
+
- `{release}-secrets` (Secret, optional) -- legacy, not actively created
|
|
74
|
+
- `secretRef` value (Secret) -- managed secrets, set via `--set secretRef=`
|
|
75
|
+
|
|
76
|
+
### Custom Charts
|
|
77
|
+
|
|
78
|
+
Services with custom Helm charts (in their own repo or `iec-tawa/helm/services/`) should:
|
|
79
|
+
- Reference secrets via `secretRef` in values.yaml, NOT create secret templates
|
|
80
|
+
- Let the builder inject `--set secretRef=` during deploy
|
|
81
|
+
|
|
82
|
+
## Per-Service Database Credentials
|
|
83
|
+
|
|
84
|
+
When `DB_MONGODB_ADMIN_URI` is set, the builder provisions per-service MongoDB users with `readWrite` role scoped to the service's database. This is opt-in and backwards-compatible -- when the env var is empty, the builder falls back to unauthenticated connection strings.
|
|
85
|
+
|
|
86
|
+
### Flow
|
|
87
|
+
|
|
88
|
+
1. On deploy, `db-provisioner.ts` checks if `DB_MONGODB_ADMIN_URI` is configured
|
|
89
|
+
2. If configured: generates username (`svc_{service}_{env}`), password (32 random bytes, base64url)
|
|
90
|
+
3. Calls `ensureMongoUser()` -- idempotent create/update of MongoDB user via admin connection
|
|
91
|
+
4. Builds authenticated connection string: `mongodb://user:pass@host:port/db?authSource=db`
|
|
92
|
+
5. Creates K8s secret with authenticated URI
|
|
93
|
+
6. Encrypts password and stores in `service.databaseCredentials`
|
|
94
|
+
|
|
95
|
+
### Credential Rotation
|
|
96
|
+
|
|
97
|
+
`POST /services/:name/databases/:type/rotate` generates a new password, updates the MongoDB user, updates the K8s secret, and stores the new encrypted password. Requires org admin role. Services must redeploy to pick up rotated credentials.
|
|
98
|
+
|
|
99
|
+
### Environment Variable
|
|
100
|
+
|
|
101
|
+
`DB_MONGODB_ADMIN_URI` -- MongoDB admin connection string (e.g., `mongodb://admin:pass@host:27017/admin?authSource=admin`). Required for credential provisioning. When empty, databases are provisioned without authentication (legacy behavior).
|
|
102
|
+
|
|
103
|
+
## Database Whitelist (Self-Service DB Access)
|
|
104
|
+
|
|
105
|
+
Developers can temporarily whitelist their IP for direct MongoDB access from tools like Studio 3T via `tawa db connect`. No SSH tunnels needed.
|
|
106
|
+
|
|
107
|
+
### How It Works
|
|
108
|
+
|
|
109
|
+
1. Developer runs `tawa db connect <service> --prod`
|
|
110
|
+
2. CLI calls `POST /services/:name/databases/whitelist` on the builder
|
|
111
|
+
3. Builder adds caller's IP to Linux `ipset` with TTL (auto-expires)
|
|
112
|
+
4. Builder decrypts service credentials and returns a MongoDB connection string
|
|
113
|
+
5. Audit record inserted in `db_whitelists` collection (TTL index auto-cleans)
|
|
114
|
+
|
|
115
|
+
### Firewall (ipset + iptables)
|
|
116
|
+
|
|
117
|
+
Port 27017 is firewalled on tawa-builder. A named `ipset` (`mongodb-access`) controls which external IPs can connect:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Rule 1: ACCEPT tcp/27017 from ipset mongodb-access (whitelisted IPs)
|
|
121
|
+
Rule 2: ACCEPT tcp/27017 from 127.0.0.1 (localhost/builder)
|
|
122
|
+
Rule 3: ACCEPT tcp/27017 from 10.0.0.0/8 (K8s nodes)
|
|
123
|
+
Rule 4: DROP tcp/27017 (everything else)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The builder manages ipset entries via `sudo ipset add/del` (NOPASSWD configured in `/etc/sudoers.d/ipset-tawa`). Each entry has a kernel-level TTL that auto-removes it when expired.
|
|
127
|
+
|
|
128
|
+
### Access Levels
|
|
129
|
+
|
|
130
|
+
| Org Role | Access Level | MongoDB User |
|
|
131
|
+
|----------|-------------|-------------|
|
|
132
|
+
| member | `read` | `svc_{service}_{env}_ro` (lazy-provisioned) |
|
|
133
|
+
| admin | `readWrite` | `svc_{service}_{env}` (existing deploy cred) |
|
|
134
|
+
|
|
135
|
+
### API Endpoints
|
|
136
|
+
|
|
137
|
+
| Method | Endpoint | Role | Purpose |
|
|
138
|
+
|--------|----------|------|---------|
|
|
139
|
+
| `POST` | `/services/:name/databases/whitelist` | member | Whitelist IP, get connection string |
|
|
140
|
+
| `GET` | `/services/:name/databases/whitelist` | viewer | List active entries (no credentials) |
|
|
141
|
+
| `DELETE` | `/services/:name/databases/whitelist/:id` | admin | Revoke entry, remove IP from firewall |
|
|
142
|
+
| `GET` | `/databases/whitelist` | platform admin | List all entries across orgs |
|
|
143
|
+
|
|
144
|
+
### Key Source Files
|
|
145
|
+
|
|
146
|
+
| File | Purpose |
|
|
147
|
+
|------|---------|
|
|
148
|
+
| `src/services/db-whitelist.ts` | Core service: IP validation, ipset management, credential lookup, audit |
|
|
149
|
+
| `src/routes/db-whitelist.ts` | API endpoints with org-scoped auth |
|
|
150
|
+
| `scripts/setup-ipset.sh` | One-time server setup (ipset + iptables rules) |
|
|
151
|
+
|
|
152
|
+
### Startup Reconciliation
|
|
153
|
+
|
|
154
|
+
On builder restart, `reconcileOnStartup()` re-adds active whitelist entries to ipset (kernel ipset is cleared on reboot, but MongoDB records persist). Entries with expired TTLs are skipped.
|
|
155
|
+
|
|
156
|
+
### Environment Variables
|
|
157
|
+
|
|
158
|
+
- `DB_MONGODB_PUBLIC_HOST` -- public IP for connection strings (falls back to `DB_MONGODB_HOST`)
|
|
159
|
+
|
|
160
|
+
## Config API
|
|
161
|
+
|
|
162
|
+
| Method | Endpoint | Purpose |
|
|
163
|
+
|--------|----------|---------|
|
|
164
|
+
| `GET` | `/services/:name/config` | List config vars + secret key names |
|
|
165
|
+
| `PATCH` | `/services/:name/config` | Set config vars or secrets |
|
|
166
|
+
| `DELETE` | `/services/:name/config` | Remove config vars or secrets |
|
|
167
|
+
| `GET` | `/services/:name/config/pull` | Download decrypted config (audited) |
|
|
168
|
+
|
|
169
|
+
## Testing
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm test # unit tests (vitest)
|
|
173
|
+
npm run build # TypeScript compilation check
|
|
174
|
+
```
|
package/Dockerfile
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
FROM node:20-alpine AS builder
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
|
|
5
|
+
# Copy package files
|
|
6
|
+
COPY package*.json ./
|
|
7
|
+
|
|
8
|
+
# Install all dependencies (including dev for building)
|
|
9
|
+
RUN npm ci
|
|
10
|
+
|
|
11
|
+
# Copy source code
|
|
12
|
+
COPY tsconfig.json ./
|
|
13
|
+
COPY src/ ./src/
|
|
14
|
+
|
|
15
|
+
# Build TypeScript
|
|
16
|
+
RUN npm run build
|
|
17
|
+
|
|
18
|
+
# Production stage
|
|
19
|
+
FROM node:20-alpine
|
|
20
|
+
|
|
21
|
+
WORKDIR /app
|
|
22
|
+
|
|
23
|
+
COPY package*.json ./
|
|
24
|
+
RUN npm ci --omit=dev
|
|
25
|
+
|
|
26
|
+
# Copy built application from builder stage
|
|
27
|
+
COPY --from=builder /app/dist ./dist
|
|
28
|
+
|
|
29
|
+
ENV NODE_ENV=production
|
|
30
|
+
ENV PORT=3002
|
|
31
|
+
|
|
32
|
+
EXPOSE 3002
|
|
33
|
+
|
|
34
|
+
CMD ["node", "dist/index.js"]
|
package/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# iec-builder
|
|
2
|
+
|
|
3
|
+
CI/CD Build Service for InsurEco Tawa platform.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
iec-builder receives webhooks from Git providers (GitHub, GitLab, Bitbucket), builds Docker images, and deploys to Kubernetes. It runs on the tawa-builder server (64.23.181.20) alongside Docker.
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Developer's Repo → Webhook → iec-builder → Docker Build → registry.insureco.io → K8s Deploy
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## API Endpoints
|
|
16
|
+
|
|
17
|
+
### Webhooks
|
|
18
|
+
- `POST /webhooks/github` - GitHub push webhook
|
|
19
|
+
- `POST /webhooks/gitlab` - GitLab push webhook
|
|
20
|
+
- `POST /webhooks/generic` - Generic webhook
|
|
21
|
+
|
|
22
|
+
### Services (registered apps)
|
|
23
|
+
- `GET /services` - List registered services
|
|
24
|
+
- `POST /services` - Register a new service
|
|
25
|
+
- `GET /services/:id` - Get service details
|
|
26
|
+
- `PATCH /services/:id` - Update service config
|
|
27
|
+
- `DELETE /services/:id` - Unregister service
|
|
28
|
+
- `GET /services/:id/builds` - Get builds for service
|
|
29
|
+
|
|
30
|
+
### Builds
|
|
31
|
+
- `GET /builds` - List builds
|
|
32
|
+
- `GET /builds/:id` - Get build details
|
|
33
|
+
- `GET /builds/:id/logs` - Get build logs
|
|
34
|
+
- `POST /builds/trigger` - Manually trigger build
|
|
35
|
+
- `POST /builds/:id/cancel` - Cancel a build
|
|
36
|
+
- `POST /builds/:id/retry` - Retry a failed build
|
|
37
|
+
|
|
38
|
+
## Development
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install
|
|
42
|
+
npm run dev
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Deployment (tawa-builder)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# SSH into tawa-builder
|
|
49
|
+
ssh tawa
|
|
50
|
+
|
|
51
|
+
# Deploy updates
|
|
52
|
+
cd /opt/iec-builder
|
|
53
|
+
git pull origin main
|
|
54
|
+
npm install
|
|
55
|
+
npm run build
|
|
56
|
+
pm2 restart iec-builder
|
|
57
|
+
pm2 save
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Server Details
|
|
61
|
+
- **Host**: 64.23.181.20 (ssh alias: `tawa`)
|
|
62
|
+
- **User**: tawa
|
|
63
|
+
- **SSH Key**: ~/.ssh/do_2025
|
|
64
|
+
- **App Path**: /opt/iec-builder
|
|
65
|
+
- **PM2 ID**: 0
|
|
66
|
+
|
|
67
|
+
### Quick Deploy Command
|
|
68
|
+
```bash
|
|
69
|
+
ssh tawa "cd /opt/iec-builder && git pull && npm install && npm run build && pm2 restart iec-builder"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Environment Variables
|
|
73
|
+
|
|
74
|
+
| Variable | Default | Description |
|
|
75
|
+
|----------|---------|-------------|
|
|
76
|
+
| PORT | 3002 | HTTP port |
|
|
77
|
+
| MONGODB_URI | mongodb://localhost:27017/builder | MongoDB connection |
|
|
78
|
+
| REDIS_URL | redis://localhost:6379 | Redis connection |
|
|
79
|
+
| KOKO_URL | http://koko... | Koko service URL |
|
|
80
|
+
| WORKSPACE_DIR | /tmp/iec-builds | Build workspace |
|
|
81
|
+
| DOCKER_REGISTRY | registry.insureco.io/insureco | Container registry |
|
|
82
|
+
| DOCKER_REGISTRY_USER | | Registry username (Forgejo user) |
|
|
83
|
+
| DOCKER_REGISTRY_TOKEN | | Registry password (Forgejo access token) |
|
|
84
|
+
| K8S_NAMESPACE | iec-platform | Kubernetes namespace |
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
apiVersion: backstage.io/v1alpha1
|
|
2
|
+
kind: Component
|
|
3
|
+
metadata:
|
|
4
|
+
name: iec-builder
|
|
5
|
+
description: CI/CD build service for InsurEco Tawa platform
|
|
6
|
+
annotations:
|
|
7
|
+
github.com/project-slug: insurecosys/iec-builder
|
|
8
|
+
spec:
|
|
9
|
+
type: service
|
|
10
|
+
lifecycle: production
|
|
11
|
+
owner: platform-team
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const envSchema: z.ZodObject<{
|
|
3
|
+
NODE_ENV: z.ZodDefault<z.ZodEnum<["development", "staging", "production", "test"]>>;
|
|
4
|
+
PORT: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
5
|
+
LOG_LEVEL: z.ZodDefault<z.ZodEnum<["fatal", "error", "warn", "info", "debug", "trace"]>>;
|
|
6
|
+
MONGODB_URI: z.ZodDefault<z.ZodString>;
|
|
7
|
+
BIO_MONGODB_URI: z.ZodDefault<z.ZodString>;
|
|
8
|
+
REDIS_URL: z.ZodDefault<z.ZodString>;
|
|
9
|
+
DB_MONGODB_ADMIN_URI: z.ZodDefault<z.ZodString>;
|
|
10
|
+
DB_MONGODB_HOST: z.ZodDefault<z.ZodString>;
|
|
11
|
+
DB_MONGODB_PUBLIC_HOST: z.ZodDefault<z.ZodString>;
|
|
12
|
+
DB_MONGODB_PORT: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
13
|
+
DB_REDIS_ADMIN_URL: z.ZodDefault<z.ZodString>;
|
|
14
|
+
DB_REDIS_HOST: z.ZodDefault<z.ZodString>;
|
|
15
|
+
DB_REDIS_PORT: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
16
|
+
DB_NEO4J_ADMIN_URI: z.ZodDefault<z.ZodString>;
|
|
17
|
+
DB_NEO4J_ADMIN_USER: z.ZodDefault<z.ZodString>;
|
|
18
|
+
DB_NEO4J_ADMIN_PASSWORD: z.ZodDefault<z.ZodString>;
|
|
19
|
+
DB_NEO4J_HOST: z.ZodDefault<z.ZodString>;
|
|
20
|
+
DB_NEO4J_PORT: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
21
|
+
MINIO_HOST: z.ZodDefault<z.ZodString>;
|
|
22
|
+
MINIO_PORT: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
23
|
+
KOKO_URL: z.ZodDefault<z.ZodString>;
|
|
24
|
+
BIO_ID_URL: z.ZodDefault<z.ZodString>;
|
|
25
|
+
BIO_INTERNAL_KEY: z.ZodDefault<z.ZodString>;
|
|
26
|
+
WORKSPACE_DIR: z.ZodDefault<z.ZodString>;
|
|
27
|
+
DOCKER_REGISTRY: z.ZodDefault<z.ZodString>;
|
|
28
|
+
MAX_UPLOAD_SIZE_MB: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
29
|
+
ENABLE_AUTO_DOCKERFILE: z.ZodDefault<z.ZodString>;
|
|
30
|
+
ENFORCE_MINIMUM_CATALOG_VERSION: z.ZodDefault<z.ZodString>;
|
|
31
|
+
KUBECONFIG: z.ZodDefault<z.ZodString>;
|
|
32
|
+
K8S_NAMESPACE: z.ZodDefault<z.ZodString>;
|
|
33
|
+
ENABLE_K8S_DEPLOY: z.ZodDefault<z.ZodString>;
|
|
34
|
+
CLOUDFLARE_API_TOKEN: z.ZodDefault<z.ZodString>;
|
|
35
|
+
CLOUDFLARE_ZONE_ID: z.ZodDefault<z.ZodString>;
|
|
36
|
+
INGRESS_TARGET: z.ZodDefault<z.ZodString>;
|
|
37
|
+
ENABLE_DNS_MANAGEMENT: z.ZodDefault<z.ZodString>;
|
|
38
|
+
FORGEJO_URL: z.ZodDefault<z.ZodString>;
|
|
39
|
+
FORGEJO_TOKEN: z.ZodDefault<z.ZodString>;
|
|
40
|
+
FORGEJO_ADMIN_USER: z.ZodDefault<z.ZodString>;
|
|
41
|
+
FORGEJO_ADMIN_PASSWORD: z.ZodDefault<z.ZodString>;
|
|
42
|
+
GITHUB_TOKEN: z.ZodDefault<z.ZodString>;
|
|
43
|
+
GITHUB_WEBHOOK_SECRET: z.ZodDefault<z.ZodString>;
|
|
44
|
+
GITLAB_WEBHOOK_SECRET: z.ZodDefault<z.ZodString>;
|
|
45
|
+
WALLET_URL: z.ZodDefault<z.ZodString>;
|
|
46
|
+
INTERNAL_SERVICE_KEY: z.ZodDefault<z.ZodString>;
|
|
47
|
+
BUILD_CONCURRENCY: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
48
|
+
VAULT_ADDR: z.ZodDefault<z.ZodString>;
|
|
49
|
+
VAULT_TOKEN: z.ZodDefault<z.ZodString>;
|
|
50
|
+
VAULT_ENABLED: z.ZodDefault<z.ZodString>;
|
|
51
|
+
ROTATION_TTL_DAYS: z.ZodDefault<z.ZodEffects<z.ZodString, number, string>>;
|
|
52
|
+
RELAY_DIRECT_URL: z.ZodDefault<z.ZodString>;
|
|
53
|
+
RELAY_INTERNAL_KEY: z.ZodDefault<z.ZodString>;
|
|
54
|
+
ANTHROPIC_API_KEY: z.ZodDefault<z.ZodString>;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
NODE_ENV: "development" | "staging" | "production" | "test";
|
|
57
|
+
PORT: number;
|
|
58
|
+
LOG_LEVEL: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
59
|
+
MONGODB_URI: string;
|
|
60
|
+
BIO_MONGODB_URI: string;
|
|
61
|
+
REDIS_URL: string;
|
|
62
|
+
DB_MONGODB_ADMIN_URI: string;
|
|
63
|
+
DB_MONGODB_HOST: string;
|
|
64
|
+
DB_MONGODB_PUBLIC_HOST: string;
|
|
65
|
+
DB_MONGODB_PORT: number;
|
|
66
|
+
DB_REDIS_ADMIN_URL: string;
|
|
67
|
+
DB_REDIS_HOST: string;
|
|
68
|
+
DB_REDIS_PORT: number;
|
|
69
|
+
DB_NEO4J_ADMIN_URI: string;
|
|
70
|
+
DB_NEO4J_ADMIN_USER: string;
|
|
71
|
+
DB_NEO4J_ADMIN_PASSWORD: string;
|
|
72
|
+
DB_NEO4J_HOST: string;
|
|
73
|
+
DB_NEO4J_PORT: number;
|
|
74
|
+
MINIO_HOST: string;
|
|
75
|
+
MINIO_PORT: number;
|
|
76
|
+
KOKO_URL: string;
|
|
77
|
+
BIO_ID_URL: string;
|
|
78
|
+
BIO_INTERNAL_KEY: string;
|
|
79
|
+
WORKSPACE_DIR: string;
|
|
80
|
+
DOCKER_REGISTRY: string;
|
|
81
|
+
MAX_UPLOAD_SIZE_MB: number;
|
|
82
|
+
ENABLE_AUTO_DOCKERFILE: string;
|
|
83
|
+
ENFORCE_MINIMUM_CATALOG_VERSION: string;
|
|
84
|
+
KUBECONFIG: string;
|
|
85
|
+
K8S_NAMESPACE: string;
|
|
86
|
+
ENABLE_K8S_DEPLOY: string;
|
|
87
|
+
CLOUDFLARE_API_TOKEN: string;
|
|
88
|
+
CLOUDFLARE_ZONE_ID: string;
|
|
89
|
+
INGRESS_TARGET: string;
|
|
90
|
+
ENABLE_DNS_MANAGEMENT: string;
|
|
91
|
+
FORGEJO_URL: string;
|
|
92
|
+
FORGEJO_TOKEN: string;
|
|
93
|
+
FORGEJO_ADMIN_USER: string;
|
|
94
|
+
FORGEJO_ADMIN_PASSWORD: string;
|
|
95
|
+
GITHUB_TOKEN: string;
|
|
96
|
+
GITHUB_WEBHOOK_SECRET: string;
|
|
97
|
+
GITLAB_WEBHOOK_SECRET: string;
|
|
98
|
+
WALLET_URL: string;
|
|
99
|
+
INTERNAL_SERVICE_KEY: string;
|
|
100
|
+
BUILD_CONCURRENCY: number;
|
|
101
|
+
VAULT_ADDR: string;
|
|
102
|
+
VAULT_TOKEN: string;
|
|
103
|
+
VAULT_ENABLED: string;
|
|
104
|
+
ROTATION_TTL_DAYS: number;
|
|
105
|
+
RELAY_DIRECT_URL: string;
|
|
106
|
+
RELAY_INTERNAL_KEY: string;
|
|
107
|
+
ANTHROPIC_API_KEY: string;
|
|
108
|
+
}, {
|
|
109
|
+
NODE_ENV?: "development" | "staging" | "production" | "test" | undefined;
|
|
110
|
+
PORT?: string | undefined;
|
|
111
|
+
LOG_LEVEL?: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | undefined;
|
|
112
|
+
MONGODB_URI?: string | undefined;
|
|
113
|
+
BIO_MONGODB_URI?: string | undefined;
|
|
114
|
+
REDIS_URL?: string | undefined;
|
|
115
|
+
DB_MONGODB_ADMIN_URI?: string | undefined;
|
|
116
|
+
DB_MONGODB_HOST?: string | undefined;
|
|
117
|
+
DB_MONGODB_PUBLIC_HOST?: string | undefined;
|
|
118
|
+
DB_MONGODB_PORT?: string | undefined;
|
|
119
|
+
DB_REDIS_ADMIN_URL?: string | undefined;
|
|
120
|
+
DB_REDIS_HOST?: string | undefined;
|
|
121
|
+
DB_REDIS_PORT?: string | undefined;
|
|
122
|
+
DB_NEO4J_ADMIN_URI?: string | undefined;
|
|
123
|
+
DB_NEO4J_ADMIN_USER?: string | undefined;
|
|
124
|
+
DB_NEO4J_ADMIN_PASSWORD?: string | undefined;
|
|
125
|
+
DB_NEO4J_HOST?: string | undefined;
|
|
126
|
+
DB_NEO4J_PORT?: string | undefined;
|
|
127
|
+
MINIO_HOST?: string | undefined;
|
|
128
|
+
MINIO_PORT?: string | undefined;
|
|
129
|
+
KOKO_URL?: string | undefined;
|
|
130
|
+
BIO_ID_URL?: string | undefined;
|
|
131
|
+
BIO_INTERNAL_KEY?: string | undefined;
|
|
132
|
+
WORKSPACE_DIR?: string | undefined;
|
|
133
|
+
DOCKER_REGISTRY?: string | undefined;
|
|
134
|
+
MAX_UPLOAD_SIZE_MB?: string | undefined;
|
|
135
|
+
ENABLE_AUTO_DOCKERFILE?: string | undefined;
|
|
136
|
+
ENFORCE_MINIMUM_CATALOG_VERSION?: string | undefined;
|
|
137
|
+
KUBECONFIG?: string | undefined;
|
|
138
|
+
K8S_NAMESPACE?: string | undefined;
|
|
139
|
+
ENABLE_K8S_DEPLOY?: string | undefined;
|
|
140
|
+
CLOUDFLARE_API_TOKEN?: string | undefined;
|
|
141
|
+
CLOUDFLARE_ZONE_ID?: string | undefined;
|
|
142
|
+
INGRESS_TARGET?: string | undefined;
|
|
143
|
+
ENABLE_DNS_MANAGEMENT?: string | undefined;
|
|
144
|
+
FORGEJO_URL?: string | undefined;
|
|
145
|
+
FORGEJO_TOKEN?: string | undefined;
|
|
146
|
+
FORGEJO_ADMIN_USER?: string | undefined;
|
|
147
|
+
FORGEJO_ADMIN_PASSWORD?: string | undefined;
|
|
148
|
+
GITHUB_TOKEN?: string | undefined;
|
|
149
|
+
GITHUB_WEBHOOK_SECRET?: string | undefined;
|
|
150
|
+
GITLAB_WEBHOOK_SECRET?: string | undefined;
|
|
151
|
+
WALLET_URL?: string | undefined;
|
|
152
|
+
INTERNAL_SERVICE_KEY?: string | undefined;
|
|
153
|
+
BUILD_CONCURRENCY?: string | undefined;
|
|
154
|
+
VAULT_ADDR?: string | undefined;
|
|
155
|
+
VAULT_TOKEN?: string | undefined;
|
|
156
|
+
VAULT_ENABLED?: string | undefined;
|
|
157
|
+
ROTATION_TTL_DAYS?: string | undefined;
|
|
158
|
+
RELAY_DIRECT_URL?: string | undefined;
|
|
159
|
+
RELAY_INTERNAL_KEY?: string | undefined;
|
|
160
|
+
ANTHROPIC_API_KEY?: string | undefined;
|
|
161
|
+
}>;
|
|
162
|
+
export type Env = z.infer<typeof envSchema>;
|
|
163
|
+
export declare function loadEnv(): Env;
|
|
164
|
+
export declare const env: {
|
|
165
|
+
NODE_ENV: "development" | "staging" | "production" | "test";
|
|
166
|
+
PORT: number;
|
|
167
|
+
LOG_LEVEL: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
168
|
+
MONGODB_URI: string;
|
|
169
|
+
BIO_MONGODB_URI: string;
|
|
170
|
+
REDIS_URL: string;
|
|
171
|
+
DB_MONGODB_ADMIN_URI: string;
|
|
172
|
+
DB_MONGODB_HOST: string;
|
|
173
|
+
DB_MONGODB_PUBLIC_HOST: string;
|
|
174
|
+
DB_MONGODB_PORT: number;
|
|
175
|
+
DB_REDIS_ADMIN_URL: string;
|
|
176
|
+
DB_REDIS_HOST: string;
|
|
177
|
+
DB_REDIS_PORT: number;
|
|
178
|
+
DB_NEO4J_ADMIN_URI: string;
|
|
179
|
+
DB_NEO4J_ADMIN_USER: string;
|
|
180
|
+
DB_NEO4J_ADMIN_PASSWORD: string;
|
|
181
|
+
DB_NEO4J_HOST: string;
|
|
182
|
+
DB_NEO4J_PORT: number;
|
|
183
|
+
MINIO_HOST: string;
|
|
184
|
+
MINIO_PORT: number;
|
|
185
|
+
KOKO_URL: string;
|
|
186
|
+
BIO_ID_URL: string;
|
|
187
|
+
BIO_INTERNAL_KEY: string;
|
|
188
|
+
WORKSPACE_DIR: string;
|
|
189
|
+
DOCKER_REGISTRY: string;
|
|
190
|
+
MAX_UPLOAD_SIZE_MB: number;
|
|
191
|
+
ENABLE_AUTO_DOCKERFILE: string;
|
|
192
|
+
ENFORCE_MINIMUM_CATALOG_VERSION: string;
|
|
193
|
+
KUBECONFIG: string;
|
|
194
|
+
K8S_NAMESPACE: string;
|
|
195
|
+
ENABLE_K8S_DEPLOY: string;
|
|
196
|
+
CLOUDFLARE_API_TOKEN: string;
|
|
197
|
+
CLOUDFLARE_ZONE_ID: string;
|
|
198
|
+
INGRESS_TARGET: string;
|
|
199
|
+
ENABLE_DNS_MANAGEMENT: string;
|
|
200
|
+
FORGEJO_URL: string;
|
|
201
|
+
FORGEJO_TOKEN: string;
|
|
202
|
+
FORGEJO_ADMIN_USER: string;
|
|
203
|
+
FORGEJO_ADMIN_PASSWORD: string;
|
|
204
|
+
GITHUB_TOKEN: string;
|
|
205
|
+
GITHUB_WEBHOOK_SECRET: string;
|
|
206
|
+
GITLAB_WEBHOOK_SECRET: string;
|
|
207
|
+
WALLET_URL: string;
|
|
208
|
+
INTERNAL_SERVICE_KEY: string;
|
|
209
|
+
BUILD_CONCURRENCY: number;
|
|
210
|
+
VAULT_ADDR: string;
|
|
211
|
+
VAULT_TOKEN: string;
|
|
212
|
+
VAULT_ENABLED: string;
|
|
213
|
+
ROTATION_TTL_DAYS: number;
|
|
214
|
+
RELAY_DIRECT_URL: string;
|
|
215
|
+
RELAY_INTERNAL_KEY: string;
|
|
216
|
+
ANTHROPIC_API_KEY: string;
|
|
217
|
+
};
|
|
218
|
+
export {};
|
|
219
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Fb,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3C,wBAAgB,OAAO,IAAI,GAAG,CAS7B;AAED,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAY,CAAA"}
|