@flisk-sh/flisk 0.0.0-stage → 1.3.190
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/CHANGELOG.md +492 -0
- package/LICENSE +21 -0
- package/README.md +479 -2
- package/Tiltfile +151 -0
- package/cli/bin/flisk.js +42 -0
- package/cli/dist/agent-runtimes/custom.js +335 -0
- package/cli/dist/agent-runtimes/registry.js +34 -0
- package/cli/dist/backend-frameworks/elysia.js +38 -0
- package/cli/dist/backend-frameworks/express.js +49 -0
- package/cli/dist/backend-frameworks/fastify.js +43 -0
- package/cli/dist/backend-frameworks/h3.js +37 -0
- package/cli/dist/backend-frameworks/koa.js +47 -0
- package/cli/dist/backend-frameworks/mcp.js +86 -0
- package/cli/dist/backend-frameworks/nestjs.js +55 -0
- package/cli/dist/backend-frameworks/registry.js +134 -0
- package/cli/dist/backend-frameworks/types.js +1 -0
- package/cli/dist/backend-languages/bun.js +76 -0
- package/cli/dist/backend-languages/go.js +125 -0
- package/cli/dist/backend-languages/node.js +122 -0
- package/cli/dist/backend-languages/python.js +94 -0
- package/cli/dist/backend-languages/registry.js +37 -0
- package/cli/dist/backend-languages/rust.js +82 -0
- package/cli/dist/backend-languages/types.js +1 -0
- package/cli/dist/cli.js +29 -0
- package/cli/dist/commands/__tests__/project-e2e-helpers.js +49 -0
- package/cli/dist/commands/__tests__/ui-loading-screen.test.js +16 -0
- package/cli/dist/commands/agent.js +182 -0
- package/cli/dist/commands/completion-candidates.js +116 -0
- package/cli/dist/commands/completion.js +843 -0
- package/cli/dist/commands/config.js +362 -0
- package/cli/dist/commands/doctor.js +1504 -0
- package/cli/dist/commands/down.js +114 -0
- package/cli/dist/commands/eject.js +108 -0
- package/cli/dist/commands/help.js +152 -0
- package/cli/dist/commands/import.js +164 -0
- package/cli/dist/commands/logs.js +119 -0
- package/cli/dist/commands/maintainers.js +102 -0
- package/cli/dist/commands/mcp.js +28 -0
- package/cli/dist/commands/networks.js +306 -0
- package/cli/dist/commands/project.js +447 -0
- package/cli/dist/commands/projects.js +103 -0
- package/cli/dist/commands/registry.js +53 -0
- package/cli/dist/commands/resource.js +992 -0
- package/cli/dist/commands/resources.js +127 -0
- package/cli/dist/commands/restart.js +89 -0
- package/cli/dist/commands/runtime.js +75 -0
- package/cli/dist/commands/stack.js +171 -0
- package/cli/dist/commands/stacks.js +71 -0
- package/cli/dist/commands/status.js +211 -0
- package/cli/dist/commands/ui.js +725 -0
- package/cli/dist/commands/up.js +609 -0
- package/cli/dist/commands/upgrade.js +840 -0
- package/cli/dist/commands/version.js +10 -0
- package/cli/dist/components/Accessible.js +11 -0
- package/cli/dist/components/BaseTooltip.js +30 -0
- package/cli/dist/components/DetailPanel.js +33 -0
- package/cli/dist/components/FileTree.js +51 -0
- package/cli/dist/components/ResourceSelectInput.js +42 -0
- package/cli/dist/components/ResourceTable.js +35 -0
- package/cli/dist/components/ServiceIssues.js +13 -0
- package/cli/dist/components/TUIHeader.js +27 -0
- package/cli/dist/components/TabBar.js +27 -0
- package/cli/dist/components/Tooltip.js +13 -0
- package/cli/dist/components/index.js +11 -0
- package/cli/dist/components/ui-theme.js +120 -0
- package/cli/dist/config/platform-standards.js +182 -0
- package/cli/dist/frontend-frameworks/lit.js +64 -0
- package/cli/dist/frontend-frameworks/preact.js +62 -0
- package/cli/dist/frontend-frameworks/qwik.js +61 -0
- package/cli/dist/frontend-frameworks/react.js +69 -0
- package/cli/dist/frontend-frameworks/registry.js +83 -0
- package/cli/dist/frontend-frameworks/solid.js +62 -0
- package/cli/dist/frontend-frameworks/svelte.js +67 -0
- package/cli/dist/frontend-frameworks/tanstack-router.js +101 -0
- package/cli/dist/frontend-frameworks/types.js +1 -0
- package/cli/dist/frontend-frameworks/vanilla.js +59 -0
- package/cli/dist/frontend-frameworks/vue.js +72 -0
- package/cli/dist/generator/__tests__/golden-helpers.js +43 -0
- package/cli/dist/generator/extension-fetch.js +291 -0
- package/cli/dist/generator/resource-templates.js +133 -0
- package/cli/dist/generator/template-engine.js +801 -0
- package/cli/dist/index.js +10 -0
- package/cli/dist/mcp/server.js +101 -0
- package/cli/dist/mcp/tools.js +351 -0
- package/cli/dist/program.js +37 -0
- package/cli/dist/types/index.js +38 -0
- package/cli/dist/utils/agent-host.js +36 -0
- package/cli/dist/utils/atomic-write.js +36 -0
- package/cli/dist/utils/bun-floor.js +9 -0
- package/cli/dist/utils/bun-requirement.js +10 -0
- package/cli/dist/utils/cache.js +63 -0
- package/cli/dist/utils/cold-preflight.js +257 -0
- package/cli/dist/utils/command-helpers.js +57 -0
- package/cli/dist/utils/constants.js +160 -0
- package/cli/dist/utils/discovery-context.js +71 -0
- package/cli/dist/utils/discovery-paths.js +93 -0
- package/cli/dist/utils/docker.js +34 -0
- package/cli/dist/utils/doctor-crashloop.js +161 -0
- package/cli/dist/utils/doctor-fix.js +391 -0
- package/cli/dist/utils/doctor-host.js +66 -0
- package/cli/dist/utils/doctor-report.js +78 -0
- package/cli/dist/utils/doctor-runtime.js +880 -0
- package/cli/dist/utils/doctor-starlark.js +132 -0
- package/cli/dist/utils/doctor-wiring.js +698 -0
- package/cli/dist/utils/down-cleanup.js +125 -0
- package/cli/dist/utils/env-validator.js +266 -0
- package/cli/dist/utils/errors.js +175 -0
- package/cli/dist/utils/exec-async.js +31 -0
- package/cli/dist/utils/file-helpers.js +104 -0
- package/cli/dist/utils/formatting.js +165 -0
- package/cli/dist/utils/generated-paths.js +51 -0
- package/cli/dist/utils/help-command.js +11 -0
- package/cli/dist/utils/host-port-config.js +140 -0
- package/cli/dist/utils/host-port-plan.js +100 -0
- package/cli/dist/utils/json-output.js +29 -0
- package/cli/dist/utils/machine-output.js +33 -0
- package/cli/dist/utils/paths.js +43 -0
- package/cli/dist/utils/platform.js +58 -0
- package/cli/dist/utils/port-assignment.js +75 -0
- package/cli/dist/utils/port-conflict-fix.js +25 -0
- package/cli/dist/utils/port-fallback-notice.js +17 -0
- package/cli/dist/utils/port-listener-probe.js +20 -0
- package/cli/dist/utils/project-config-defaults.js +17 -0
- package/cli/dist/utils/project-features.js +91 -0
- package/cli/dist/utils/project-templates.js +32 -0
- package/cli/dist/utils/prompt.js +97 -0
- package/cli/dist/utils/resource-features.js +184 -0
- package/cli/dist/utils/resource-kind.js +9 -0
- package/cli/dist/utils/schema-version-gate.js +45 -0
- package/cli/dist/utils/search-status.js +12 -0
- package/cli/dist/utils/secret-redaction.js +73 -0
- package/cli/dist/utils/service-config-checks.js +189 -0
- package/cli/dist/utils/service-manifest.js +254 -0
- package/cli/dist/utils/service-runtime-state.js +66 -0
- package/cli/dist/utils/service-urls.js +112 -0
- package/cli/dist/utils/services.js +360 -0
- package/cli/dist/utils/shared-infra.js +45 -0
- package/cli/dist/utils/shared-platform-postgres.js +232 -0
- package/cli/dist/utils/single-flight.js +21 -0
- package/cli/dist/utils/smoke.js +401 -0
- package/cli/dist/utils/spinner.js +40 -0
- package/cli/dist/utils/stack-features.js +15 -0
- package/cli/dist/utils/stack-status.js +14 -0
- package/cli/dist/utils/startup-report.js +78 -0
- package/cli/dist/utils/status-message.js +21 -0
- package/cli/dist/utils/status-ports.js +33 -0
- package/cli/dist/utils/suggestions.js +63 -0
- package/cli/dist/utils/tar.js +46 -0
- package/cli/dist/utils/tdk-version.js +51 -0
- package/cli/dist/utils/terminal-layout.js +19 -0
- package/cli/dist/utils/tilt-events.js +194 -0
- package/cli/dist/utils/tilt-logs.js +61 -0
- package/cli/dist/utils/tilt-port-owner.js +63 -0
- package/cli/dist/utils/tilt-process.js +54 -0
- package/cli/dist/utils/tilt-resource-state.js +32 -0
- package/cli/dist/utils/tilt-startup.js +49 -0
- package/cli/dist/utils/tilt-unreachable-message.js +9 -0
- package/cli/dist/utils/tilt.js +104 -0
- package/cli/dist/utils/ui-keymap.js +129 -0
- package/cli/dist/utils/ui-service-state.js +34 -0
- package/cli/dist/utils/up-only.js +28 -0
- package/cli/dist/utils/up-readiness.js +118 -0
- package/cli/dist/utils/url-actions.js +103 -0
- package/cli/dist/utils/validation.js +62 -0
- package/cli/dist/utils/which.js +56 -0
- package/cli/dist/utils/windows-doctor.js +176 -0
- package/cli/dist-bundle/chunk-6EA4DGCY.js +2 -0
- package/cli/dist-bundle/chunk-BZ4H7MM4.js +3 -0
- package/cli/dist-bundle/chunk-CLCUIDBH.js +510 -0
- package/cli/dist-bundle/cli.js +2017 -0
- package/cli/dist-bundle/cold-preflight-SY26O2IG.js +2 -0
- package/cli/dist-bundle/devtools-ZUHXW33W.js +5 -0
- package/cli/dist-bundle/extension-fetch-J4FFH7TJ.js +2 -0
- package/cli/package.json +83 -0
- package/cli/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +25 -0
- package/cli/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +466 -0
- package/cli/shared-platform-engineering/docker-templates/install-deps.sh +154 -0
- package/cli/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +14 -0
- package/cli/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +58 -0
- package/cli/templates/.tiltignore.hbs +72 -0
- package/cli/templates/TILT_RESOURCE_DEFAULTS.star.hbs +220 -0
- package/cli/templates/TILT_TECH_STACK.star.hbs +149 -0
- package/cli/templates/Tiltfile.hbs +381 -0
- package/cli/templates/spec.master.hbs +192 -0
- package/discovery/AGENTS.md +362 -0
- package/discovery/TILT_DISCOVERY.star +429 -0
- package/discovery/Tiltfile +58 -0
- package/discovery/config.star +265 -0
- package/discovery/constants.star +167 -0
- package/discovery/deterministic.star +213 -0
- package/discovery/discovery_daemon.star +193 -0
- package/discovery/discovery_orchestrator.star +492 -0
- package/discovery/filtering.star +7 -0
- package/discovery/identity-management-backend/service.yaml +26 -0
- package/discovery/identity-management-frontend/service.yaml +29 -0
- package/discovery/identity-sdk/service.yaml +9 -0
- package/discovery/incremental_discovery.star +215 -0
- package/discovery/indexing.star +9 -0
- package/discovery/json_manifest_scanner.star +57 -0
- package/discovery/libraries.star +48 -0
- package/discovery/loading.star +25 -0
- package/discovery/manifest/constants.star +106 -0
- package/discovery/manifest/loading.star +418 -0
- package/discovery/manifest/normalize.star +289 -0
- package/discovery/manifest/validation.star +110 -0
- package/discovery/normalization.star +13 -0
- package/discovery/registry.star +562 -0
- package/discovery/resource_snapshot.py +384 -0
- package/discovery/resource_snapshot.star +145 -0
- package/discovery/schemas.star +3 -0
- package/discovery/services/platform/cdc/debezium/nats-connector/service.yaml +9 -0
- package/discovery/services/platform/cdc/nats-http-bridge/service.yaml +9 -0
- package/discovery/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +26 -0
- package/discovery/services/platform/synthetic-monitor/service.yaml +9 -0
- package/discovery/test_resource_snapshot.py +253 -0
- package/discovery/validation.star +80 -0
- package/discovery/versioning.star +3 -0
- package/engine/AGENTS.md +706 -0
- package/engine/README.md +31 -0
- package/engine/REFACTORING_MANIFEST_SYSTEM.md +974 -0
- package/engine/Tiltfile +86 -0
- package/engine/assets/docker/golden-layers.Dockerfile +204 -0
- package/engine/assets/docker/wake-gateway/Dockerfile +28 -0
- package/engine/assets/docker/wake-gateway/decide.test.ts +177 -0
- package/engine/assets/docker/wake-gateway/decide.ts +135 -0
- package/engine/assets/docker/wake-gateway/server.ts +363 -0
- package/engine/assets/scripts/cleanup-completed-migrator-images.sh +39 -0
- package/engine/assets/scripts/cleanup-tilt-images.sh +122 -0
- package/engine/assets/scripts/mac-m1-resource-monitor.sh +123 -0
- package/engine/config.star +5 -0
- package/engine/entrypoint.star +101 -0
- package/engine/lifecycle/orchestrator.star +263 -0
- package/engine/paths.star +719 -0
- package/engine/schemas/project-schema.json +147 -0
- package/engine/schemas/service-schema.json +537 -0
- package/engine/scripts/README.md +89 -0
- package/engine/scripts/build-and-publish-lib.sh +207 -0
- package/engine/scripts/check-lib-publish.sh +87 -0
- package/engine/scripts/debug-container.sh +265 -0
- package/engine/scripts/generate-manifest.sh +200 -0
- package/engine/spec.master +702 -0
- package/engine/spec.master.example +341 -0
- package/engine/topologies/README.md +33 -0
- package/engine/topologies/platform/docker/AGENTS.md +59 -0
- package/engine/topologies/platform/docker/auth/auth.star +207 -0
- package/engine/topologies/platform/docker/build/frontend_build_plan.star +65 -0
- package/engine/topologies/platform/docker/build/golden_image.star +37 -0
- package/engine/topologies/platform/docker/build/golden_image_build.star +144 -0
- package/engine/topologies/platform/docker/build/golden_image_constants.star +100 -0
- package/engine/topologies/platform/docker/build/golden_image_dockerfile.star +263 -0
- package/engine/topologies/platform/docker/compose/compose.star +637 -0
- package/engine/topologies/platform/docker/compose/compose_helpers.star +54 -0
- package/engine/topologies/platform/docker/compose/traefik_standalone.star +171 -0
- package/engine/topologies/platform/docker/config/bunignore.star +144 -0
- package/engine/topologies/platform/docker/config/dockerignore.star +152 -0
- package/engine/topologies/platform/docker/config/healthcheck.star +58 -0
- package/engine/topologies/platform/docker/constants.star +211 -0
- package/engine/topologies/platform/docker/dockerfile/dockerfile.star +56 -0
- package/engine/topologies/platform/docker/dockerfile/language_dockerfile.star +264 -0
- package/engine/topologies/platform/docker/generators/golden_docker_generator_v2.star +76 -0
- package/engine/topologies/platform/docker/index.star +40 -0
- package/engine/topologies/platform/docker/layers/bun_helpers.star +25 -0
- package/engine/topologies/platform/docker/layers/infisical/index.star +42 -0
- package/engine/topologies/platform/docker/layers/infisical/infisical_docker.star +264 -0
- package/engine/topologies/platform/docker/layers/l1_base_layers.star +89 -0
- package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +147 -0
- package/engine/topologies/platform/docker/layers/l3_builder_layers.star +229 -0
- package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +282 -0
- package/engine/topologies/platform/docker/layers/prisma/constants.star +138 -0
- package/engine/topologies/platform/docker/layers/prisma/db_readiness.star +98 -0
- package/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +131 -0
- package/engine/topologies/platform/docker/layers/prisma/migrate_script.star +100 -0
- package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +128 -0
- package/engine/topologies/platform/docker/layers/prisma/prisma_runtime.star +205 -0
- package/engine/topologies/platform/docker/layers/prisma/secret_resolution.star +121 -0
- package/engine/topologies/platform/docker/networking/api_path_constants.star +206 -0
- package/engine/topologies/platform/docker/networking/sablier_container_cycle.star +31 -0
- package/engine/topologies/platform/docker/networking/traefik.star +266 -0
- package/engine/topologies/platform/docker/networking/traefik_constants.star +148 -0
- package/engine/topologies/platform/docker/networking/traefik_helpers.star +162 -0
- package/engine/topologies/platform/docker/networking/traefik_static_routes.star +165 -0
- package/engine/topologies/platform/docker/secrets/env_secrets.star +74 -0
- package/engine/topologies/platform/docker/secrets/infisical.star +109 -0
- package/engine/topologies/platform/net/AGENTS.md +64 -0
- package/engine/topologies/platform/net/proxy.star +6 -0
- package/engine/topologies/platform/registries/local.star +6 -0
- package/engine/topologies/platform/registries/verdaccio_loader.star +20 -0
- package/engine/topologies/platform/security/AGENTS.md +49 -0
- package/engine/topologies/platform/security/secrets.star +241 -0
- package/engine/topologies/platform/state/AGENTS.md +64 -0
- package/engine/topologies/platform/state/relational.star +6 -0
- package/engine/topologies/tilt/common/AGENTS.md +59 -0
- package/engine/topologies/tilt/common/utils.star +409 -0
- package/engine/topologies/tilt/common/utils_debug.star +71 -0
- package/engine/topologies/tilt/common/utils_deterministic.star +170 -0
- package/engine/topologies/tilt/common/utils_docker_networks.star +54 -0
- package/engine/topologies/tilt/common/utils_env.star +92 -0
- package/engine/topologies/tilt/common/utils_output.star +99 -0
- package/engine/topologies/tilt/config/AGENTS.md +68 -0
- package/engine/topologies/tilt/config/defaults.star +5 -0
- package/engine/topologies/tilt/config/feature_flags.star +12 -0
- package/engine/topologies/tilt/config/global.star +57 -0
- package/engine/topologies/tilt/config/profiles.star +398 -0
- package/engine/topologies/tilt/generators/agents_md.star +64 -0
- package/engine/topologies/tilt/generators/api_gateway.star +147 -0
- package/engine/topologies/tilt/generators/index.star +126 -0
- package/engine/topologies/tilt/generators/infisical/README.md +424 -0
- package/engine/topologies/tilt/generators/infisical/examples.star +314 -0
- package/engine/topologies/tilt/generators/infisical/index.star +59 -0
- package/engine/topologies/tilt/generators/infisical/machine_identity.star +422 -0
- package/engine/topologies/tilt/generators/infisical/organization.star +536 -0
- package/engine/topologies/tilt/generators/infisical/path_manager.star +478 -0
- package/engine/topologies/tilt/generators/infisical/secrets_generator.star +422 -0
- package/engine/topologies/tilt/generators/nginx_conf.star +145 -0
- package/engine/topologies/tilt/generators/npmrc.star +132 -0
- package/engine/topologies/tilt/generators/tsconfig.star +25 -0
- package/engine/topologies/tilt/generators/typescript/backend_library_tsconfig.star +73 -0
- package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +137 -0
- package/engine/topologies/tilt/generators/typescript/common.star +9 -0
- package/engine/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +78 -0
- package/engine/topologies/tilt/generators/typescript/frontend_tsconfig.star +140 -0
- package/engine/topologies/tilt/generators/typescript/include.star +25 -0
- package/engine/topologies/tilt/generators/typescript/playwright_config.star +42 -0
- package/engine/topologies/tilt/generators/typescript/prisma_config.star +51 -0
- package/engine/topologies/tilt/generators/validators.star +868 -0
- package/engine/topologies/tilt/generators/vite/backend.star +80 -0
- package/engine/topologies/tilt/generators/vite/frameworks/lit.star +92 -0
- package/engine/topologies/tilt/generators/vite/frameworks/preact.star +94 -0
- package/engine/topologies/tilt/generators/vite/frameworks/qwik.star +94 -0
- package/engine/topologies/tilt/generators/vite/frameworks/react.star +128 -0
- package/engine/topologies/tilt/generators/vite/frameworks/solid.star +94 -0
- package/engine/topologies/tilt/generators/vite/frameworks/svelte.star +94 -0
- package/engine/topologies/tilt/generators/vite/frameworks/vanilla.star +92 -0
- package/engine/topologies/tilt/generators/vite/frameworks/vue.star +94 -0
- package/engine/topologies/tilt/generators/vite/frontend.star +153 -0
- package/engine/topologies/tilt/generators/vite/generators.star +45 -0
- package/engine/topologies/tilt/generators/vite/helpers.star +256 -0
- package/engine/topologies/tilt/generators/vite/library.star +67 -0
- package/engine/topologies/tilt/generators/vite/sdk.star +75 -0
- package/engine/topologies/tilt/generators/vite/templates.star +460 -0
- package/engine/topologies/tilt/generators/vite_config.star +24 -0
- package/engine/topologies/tilt/manifest/AGENTS.md +61 -0
- package/engine/topologies/tilt/manifest/README.md +679 -0
- package/engine/topologies/tilt/manifest/__init__.star +220 -0
- package/engine/topologies/tilt/manifest/constants.star +262 -0
- package/engine/topologies/tilt/manifest/errors.star +268 -0
- package/engine/topologies/tilt/manifest/integration.star +348 -0
- package/engine/topologies/tilt/manifest/json_to_yaml.py +61 -0
- package/engine/topologies/tilt/manifest/loader.star +239 -0
- package/engine/topologies/tilt/manifest/mapper.star +229 -0
- package/engine/topologies/tilt/manifest/parser.star +490 -0
- package/engine/topologies/tilt/manifest/schema.star +502 -0
- package/engine/topologies/tilt/manifest/tests/test_integration.star +278 -0
- package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +475 -0
- package/engine/topologies/tilt/manifest/tests/test_manifest.star +319 -0
- package/engine/topologies/tilt/manifest/tests/test_validator.star +472 -0
- package/engine/topologies/tilt/manifest/validator.star +744 -0
- package/engine/topologies/tilt/manifest/yaml_to_json.py +20 -0
- package/engine/topologies/tilt/resources/AGENTS.md +71 -0
- package/engine/topologies/tilt/resources/build_concurrency.star +56 -0
- package/engine/topologies/tilt/resources/conditions.star +5 -0
- package/engine/topologies/tilt/resources/databases.star +246 -0
- package/engine/topologies/tilt/resources/declaration.star +5 -0
- package/engine/topologies/tilt/resources/deps.star +5 -0
- package/engine/topologies/tilt/resources/infra-loader.star +504 -0
- package/engine/topologies/tilt/resources/libs.star +32 -0
- package/engine/topologies/tilt/resources/libs_discovery.star +104 -0
- package/engine/topologies/tilt/resources/libs_paths.star +81 -0
- package/engine/topologies/tilt/resources/libs_resource_definition.star +153 -0
- package/engine/topologies/tilt/resources/libs_setup.star +166 -0
- package/engine/topologies/tilt/resources/libs_tsconfig.star +39 -0
- package/engine/topologies/tilt/resources/orchestrator/apply.star +79 -0
- package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +864 -0
- package/engine/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +90 -0
- package/engine/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +150 -0
- package/engine/topologies/tilt/resources/orchestrator/apply_resource_validation.star +38 -0
- package/engine/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +46 -0
- package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +193 -0
- package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/AGENTS.md +75 -0
- package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +23 -0
- package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +136 -0
- package/engine/topologies/tilt/resources/orchestrator/generators/env.star +219 -0
- package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +172 -0
- package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +577 -0
- package/engine/topologies/tilt/resources/orchestrator/helpers.star +35 -0
- package/engine/topologies/tilt/resources/orchestrator.star +56 -0
- package/engine/topologies/tilt/resources/ordering.star +5 -0
- package/engine/topologies/tilt/resources/shared-platform-postgres.star +30 -0
- package/engine/topologies/tilt/resources/triggers.star +5 -0
- package/engine/topologies/tilt/resources/watchers.star +304 -0
- package/engine/where-things-live.star +719 -0
- package/examples/tdk-example/LICENSE +21 -0
- package/examples/tdk-example/README.md +23 -0
- package/examples/tdk-example/TILT_SERVICE_DEFAULTS.star +42 -0
- package/examples/tdk-example/TILT_TECH_STACK.star +67 -0
- package/examples/tdk-example/Tiltfile +25 -0
- package/examples/tdk-example/services/platform/messaging/docker-compose.yml +26 -0
- package/examples/tdk-example/services/shop/orders-api/package.json +20 -0
- package/examples/tdk-example/services/shop/orders-api/service.json +14 -0
- package/examples/tdk-example/services/shop/orders-api/src/index.ts +81 -0
- package/examples/tdk-example/services/shop/orders-app/index.html +12 -0
- package/examples/tdk-example/services/shop/orders-app/package.json +23 -0
- package/examples/tdk-example/services/shop/orders-app/public/.gitkeep +0 -0
- package/examples/tdk-example/services/shop/orders-app/service.json +9 -0
- package/examples/tdk-example/services/shop/orders-app/src/main.tsx +9 -0
- package/examples/tdk-example/services/shop/orders-app/src/orders.tsx +67 -0
- package/examples/tdk-example/services/shop/orders-app/src/style.css +15 -0
- package/examples/tdk-example/services/shop/orders-worker/package.json +18 -0
- package/examples/tdk-example/services/shop/orders-worker/service.json +13 -0
- package/examples/tdk-example/services/shop/orders-worker/src/index.ts +33 -0
- package/ext/Tiltfile +66 -0
- package/ext/ide-components/README.md +221 -0
- package/ext/ide-components/code_viewer/server.py +208 -0
- package/ext/ide-components/config_inspector/server.py +1052 -0
- package/ext/ide-components/file_browser/server.py +287 -0
- package/ext/ide-components/shared/config_service.py +471 -0
- package/ext/ide-components/shared/file_utils.py +300 -0
- package/ext/ide-components/shared/http_utils.py +234 -0
- package/ext/ide-components/shared/static/styles.css +1334 -0
- package/ext/ide-components/shared/syntax_highlighter.py +142 -0
- package/ext/ide-components/shared/template_engine.py +125 -0
- package/ext/ide-components/shared/templates/base.html +121 -0
- package/ext/ide-components/shared/test_config_service.py +328 -0
- package/ext/ide-components/shared/tilt_integration.py +160 -0
- package/ext/ui-enhancements/cron-status-server.sh +51 -0
- package/ext/ui-enhancements/cron-status-tracker.sh +148 -0
- package/ext/ui-enhancements/extension.yaml +36 -0
- package/ext/ui-enhancements/tiltfile.py +101 -0
- package/ext/ui-enhancements/ui/cron-jobs-tab.css +396 -0
- package/ext/ui-enhancements/ui/help-panel.css +279 -0
- package/ext/ui-enhancements/ui/icons.css +125 -0
- package/ext/ui-enhancements/ui/tooltips.css +114 -0
- package/package.json +94 -4
- package/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +25 -0
- package/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +466 -0
- package/shared-platform-engineering/docker-templates/install-deps.sh +154 -0
- package/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +14 -0
- package/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +58 -0
- package/specs/specs/TILT_SERVICE_DEFAULTS.star +207 -0
- package/specs/specs/TILT_TECH_STACK.star +161 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Copyright (c) 2026 Flisk contributors
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
# =============================================================================
|
|
7
|
+
# CRITICAL FIX: Bun concurrency and DNS settings for Docker/Colima
|
|
8
|
+
# These prevent "Resolving dependencies" hang
|
|
9
|
+
# =============================================================================
|
|
10
|
+
export BUN_INSTALL_CONCURRENCY=4 # Default is 16+, reduce for Docker
|
|
11
|
+
export UV_THREADPOOL_SIZE=4 # Limit threads (default is 128)
|
|
12
|
+
export BUN_NETWORK_TIMEOUT=30000 # 30s timeout per request
|
|
13
|
+
export BUN_RESOLVE_TIMEOUT=60000 # 60s for resolution phase
|
|
14
|
+
|
|
15
|
+
# DNS fixes for Colima/Docker
|
|
16
|
+
export NODE_OPTIONS="--dns-result-order=ipv4first"
|
|
17
|
+
|
|
18
|
+
start_ts=$(date +%s)
|
|
19
|
+
echo "⏱️ install-deps start: $(date '+%Y-%m-%d %H:%M:%S %z')"
|
|
20
|
+
echo "🔧 Bun concurrency: $BUN_INSTALL_CONCURRENCY, Threadpool: $UV_THREADPOOL_SIZE"
|
|
21
|
+
|
|
22
|
+
finish_install_timer() {
|
|
23
|
+
end_ts=$(date +%s)
|
|
24
|
+
echo "install-deps duration: $((end_ts-start_ts))s"
|
|
25
|
+
}
|
|
26
|
+
trap 'finish_install_timer' EXIT INT TERM
|
|
27
|
+
|
|
28
|
+
export NODE_ENV=development
|
|
29
|
+
|
|
30
|
+
# Use persistent cache directory (Docker layer, not mount)
|
|
31
|
+
export BUN_INSTALL_CACHE_DIR=/cache/bun
|
|
32
|
+
mkdir -p $BUN_INSTALL_CACHE_DIR
|
|
33
|
+
|
|
34
|
+
# =============================================================================
|
|
35
|
+
# Check Verdaccio registry (premium feature — only required when VERDACCIO_LICENSE_KEY is set)
|
|
36
|
+
# Without a license key, skip Verdaccio and fall back to public npm registry.
|
|
37
|
+
# =============================================================================
|
|
38
|
+
if [ -z "${TDK_LICENSE_KEY:-}" ]; then
|
|
39
|
+
echo "ℹ️ TDK_LICENSE_KEY not set — skipping private registry (public npm only)"
|
|
40
|
+
VERDACCIO_URL=""
|
|
41
|
+
else
|
|
42
|
+
VERDACCIO_URL="http://localhost:4873"
|
|
43
|
+
echo "🔍 Checking Verdaccio registry at $VERDACCIO_URL..."
|
|
44
|
+
if ! wget -q --spider --timeout=3 "$VERDACCIO_URL" 2>/dev/null; then
|
|
45
|
+
VERDACCIO_URL="http://host.docker.internal:4873"
|
|
46
|
+
echo " localhost unreachable, trying $VERDACCIO_URL..."
|
|
47
|
+
if ! wget -q --spider --timeout=3 "$VERDACCIO_URL" 2>/dev/null; then
|
|
48
|
+
echo "❌ Verdaccio not reachable at localhost:4873 or host.docker.internal:4873. Build will fail."
|
|
49
|
+
echo " Ensure Verdaccio is running: docker ps | grep verdaccio"
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
fi
|
|
53
|
+
echo "✅ Verdaccio available at $VERDACCIO_URL"
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# =============================================================================
|
|
57
|
+
# CRITICAL FIX: Reduced timeout for faster failure detection (was 900s)
|
|
58
|
+
# Using 60s to fail fast and retry, rather than hanging for 15 minutes
|
|
59
|
+
# =============================================================================
|
|
60
|
+
# CRITICAL FIX: Extended timeout for full dependency resolution
|
|
61
|
+
# 60s was too short - packages resolve but need time for transitive deps
|
|
62
|
+
INSTALL_TIMEOUT_SECONDS="${BUN_INSTALL_TIMEOUT_SECONDS:-300}"
|
|
63
|
+
echo "📦 Dependency install timeout: ${INSTALL_TIMEOUT_SECONDS}s (Verdaccio packages available)"
|
|
64
|
+
|
|
65
|
+
INSTALL_DEPS_VERBOSE="${INSTALL_DEPS_VERBOSE:-0}"
|
|
66
|
+
if [ "$INSTALL_DEPS_VERBOSE" = "1" ]; then
|
|
67
|
+
echo "🚀 Installing dependencies (verbose)..."
|
|
68
|
+
BUN_VERBOSE_FLAG="--verbose"
|
|
69
|
+
FAIL_TAIL_LINES=200
|
|
70
|
+
else
|
|
71
|
+
echo "📦 Installing dependencies..."
|
|
72
|
+
BUN_VERBOSE_FLAG=""
|
|
73
|
+
FAIL_TAIL_LINES=50
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
BUN_INSTALL_LOG=/tmp/bun-install.log
|
|
77
|
+
|
|
78
|
+
# Start tail in background for live logging
|
|
79
|
+
touch "$BUN_INSTALL_LOG"
|
|
80
|
+
tail -n 20 -f "$BUN_INSTALL_LOG" 2>/dev/null &
|
|
81
|
+
TAIL_PID=$!
|
|
82
|
+
cleanup_tail() {
|
|
83
|
+
kill "$TAIL_PID" 2>/dev/null || true
|
|
84
|
+
}
|
|
85
|
+
trap 'cleanup_tail; finish_install_timer' EXIT INT TERM
|
|
86
|
+
|
|
87
|
+
# =============================================================================
|
|
88
|
+
# Cache configuration: Use persistent Docker layer path
|
|
89
|
+
# =============================================================================
|
|
90
|
+
# Uses /cache/bun (persistent Docker layer path, not a mount).
|
|
91
|
+
# This avoids the "FileNotFound when create temporary directory" bug
|
|
92
|
+
# that occurs with Docker --mount=type=cache, while still persisting
|
|
93
|
+
# cache across rebuilds via Docker layer caching.
|
|
94
|
+
echo "🔧 Using /cache/bun for Bun cache (persistent Docker layer)..."
|
|
95
|
+
export BUN_CACHE_DIR="/cache/bun"
|
|
96
|
+
mkdir -p "$BUN_CACHE_DIR"
|
|
97
|
+
BUN_CACHE_FLAG="--cache-dir=/cache/bun"
|
|
98
|
+
echo "📁 Cache location: /cache/bun"
|
|
99
|
+
|
|
100
|
+
# =============================================================================
|
|
101
|
+
# Install function with timeout and logging
|
|
102
|
+
# Uses constrained concurrency to prevent "Resolving dependencies" hang
|
|
103
|
+
# =============================================================================
|
|
104
|
+
run_install() {
|
|
105
|
+
local args="$1"
|
|
106
|
+
local attempt="$2"
|
|
107
|
+
|
|
108
|
+
echo "📌 Attempt $attempt: bun install $args (concurrency: $BUN_INSTALL_CONCURRENCY)"
|
|
109
|
+
set +e
|
|
110
|
+
# Use timeout with explicit concurrency limit
|
|
111
|
+
timeout "$INSTALL_TIMEOUT_SECONDS" \
|
|
112
|
+
bun install $args \
|
|
113
|
+
--concurrent-tasks "$BUN_INSTALL_CONCURRENCY" \
|
|
114
|
+
--concurrent-scripts "$BUN_INSTALL_CONCURRENCY" \
|
|
115
|
+
$BUN_CACHE_FLAG $BUN_VERBOSE_FLAG >"$BUN_INSTALL_LOG" 2>&1
|
|
116
|
+
local code=$?
|
|
117
|
+
set -e
|
|
118
|
+
return $code
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# =============================================================================
|
|
122
|
+
# Install with lockfile but allow updates within resolved ranges
|
|
123
|
+
# =============================================================================
|
|
124
|
+
ATTEMPT=1
|
|
125
|
+
INSTALL_CODE=0
|
|
126
|
+
|
|
127
|
+
run_install "--force" $ATTEMPT
|
|
128
|
+
INSTALL_CODE=$?
|
|
129
|
+
ATTEMPT=$((ATTEMPT + 1))
|
|
130
|
+
|
|
131
|
+
cleanup_tail
|
|
132
|
+
|
|
133
|
+
# =============================================================================
|
|
134
|
+
# Final status check
|
|
135
|
+
# =============================================================================
|
|
136
|
+
if [ "$INSTALL_CODE" -ne 0 ]; then
|
|
137
|
+
echo "❌ Dependency installation failed after $((ATTEMPT - 1)) attempts (exit $INSTALL_CODE). Last ${FAIL_TAIL_LINES} lines:"
|
|
138
|
+
tail -n "$FAIL_TAIL_LINES" "$BUN_INSTALL_LOG"
|
|
139
|
+
exit 1
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
if [ ! -d "node_modules" ] || [ -z "$(ls -A node_modules 2>/dev/null)" ]; then
|
|
143
|
+
echo "❌ Dependency installation produced empty node_modules. Last ${FAIL_TAIL_LINES} lines:"
|
|
144
|
+
tail -n "$FAIL_TAIL_LINES" "$BUN_INSTALL_LOG"
|
|
145
|
+
exit 1
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
echo "✅ Dependency installation complete"
|
|
149
|
+
if [ "$INSTALL_DEPS_VERBOSE" = "1" ]; then
|
|
150
|
+
echo "📊 Total packages: $(ls node_modules 2>/dev/null | wc -l)"
|
|
151
|
+
du -sh node_modules 2>/dev/null || true
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# No cache cleanup needed (--no-cache flag used)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Copyright (c) 2026 Flisk contributors
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
# Fix Bun module resolution: .prisma/client must be reachable from .bun linker paths.
|
|
7
|
+
for dir in node_modules/.bun/@prisma+client*/node_modules; do
|
|
8
|
+
[ -d "$dir" ] && ln -sf "$(pwd)/node_modules/.prisma" "$dir/.prisma" || true
|
|
9
|
+
done
|
|
10
|
+
|
|
11
|
+
# Also fix malformed @prisma/client package.json in Bun cache if present.
|
|
12
|
+
for pkg in node_modules/.bun/@prisma+client*/node_modules/@prisma/client/package.json; do
|
|
13
|
+
[ -f "$pkg" ] && echo '{"name":"@prisma/client","main":"index.js","types":"index.d.ts"}' > "$pkg" || true
|
|
14
|
+
done
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Copyright (c) 2026 Flisk contributors
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
PRISMA_EXPORT_GENERATED_CLIENT="${PRISMA_EXPORT_GENERATED_CLIENT:-1}"
|
|
7
|
+
PRISMA_DOT_DIR="node_modules/.prisma"
|
|
8
|
+
PRISMA_DOT_CLIENT="node_modules/.prisma/client"
|
|
9
|
+
|
|
10
|
+
# Normalize Prisma output for both import styles: ../generated-client and node_modules/.prisma/client
|
|
11
|
+
if [ ! -d "$PRISMA_DOT_CLIENT" ] && [ -d /app/node_modules/.prisma/client ]; then
|
|
12
|
+
mkdir -p "$PRISMA_DOT_DIR"
|
|
13
|
+
cp -R /app/node_modules/.prisma/client "$PRISMA_DOT_CLIENT"
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if [ "$PRISMA_EXPORT_GENERATED_CLIENT" = "1" ] && [ -d "$PRISMA_DOT_CLIENT" ] && [ ! -d generated-client ] && [ ! -f generated-client.ts ]; then
|
|
17
|
+
printf "export * from './node_modules/.prisma/client/client';\n" > generated-client.ts
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
mkdir -p "$PRISMA_DOT_CLIENT"
|
|
21
|
+
if [ -d generated-client ] && [ -z "$(ls -A "$PRISMA_DOT_CLIENT" 2>/dev/null)" ]; then
|
|
22
|
+
cp -r generated-client/. "$PRISMA_DOT_CLIENT/"
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# Prisma v7 prisma-client may emit TS-only artifacts; add declaration/js entrypoints
|
|
26
|
+
if [ -f "$PRISMA_DOT_CLIENT/client.ts" ] && [ ! -f "$PRISMA_DOT_CLIENT/index.d.ts" ]; then
|
|
27
|
+
printf "export * from './client';\n" > "$PRISMA_DOT_CLIENT/index.d.ts"
|
|
28
|
+
fi
|
|
29
|
+
if [ -f "$PRISMA_DOT_CLIENT/client.ts" ] && [ ! -f "$PRISMA_DOT_CLIENT/default.d.ts" ]; then
|
|
30
|
+
printf "export * from './client';\n" > "$PRISMA_DOT_CLIENT/default.d.ts"
|
|
31
|
+
fi
|
|
32
|
+
if [ -f "$PRISMA_DOT_CLIENT/client.ts" ] && [ ! -f "$PRISMA_DOT_CLIENT/index.js" ]; then
|
|
33
|
+
printf "export * from './client.js';\n" > "$PRISMA_DOT_CLIENT/index.js"
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Prisma v7 may generate malformed package.json under Bun
|
|
37
|
+
if [ -f "$PRISMA_DOT_CLIENT/client.ts" ]; then
|
|
38
|
+
echo '{"name":"prisma-client-generated","types":"index.d.ts","main":"index.js"}' > "$PRISMA_DOT_CLIENT/package.json"
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Prisma v7: @prisma/client/default.js requires .prisma/client/default
|
|
42
|
+
if [ -d "$PRISMA_DOT_CLIENT" ] && [ ! -f "$PRISMA_DOT_CLIENT/default.js" ]; then
|
|
43
|
+
printf "module.exports = require('./client.js');\n" > "$PRISMA_DOT_CLIENT/default.js"
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Ensure @prisma/client package can resolve '.prisma/client/*' under Bun hoisting
|
|
47
|
+
if [ -d "$PRISMA_DOT_DIR" ]; then
|
|
48
|
+
for pkg in node_modules/@prisma/client node_modules/.bun/@prisma+client*/node_modules/@prisma/client; do
|
|
49
|
+
[ -d "$pkg" ] && ln -sfn "$(pwd)/$PRISMA_DOT_DIR" "$pkg/.prisma" || true
|
|
50
|
+
done
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Also fix corrupted package.json in .bun cache
|
|
54
|
+
for pkg in node_modules/.bun/@prisma+client*/node_modules/@prisma/client/package.json; do
|
|
55
|
+
[ -f "$pkg" ] && echo '{"name":"@prisma/client","main":"index.js","types":"index.d.ts"}' > "$pkg" || true
|
|
56
|
+
done
|
|
57
|
+
|
|
58
|
+
test -f "$PRISMA_DOT_CLIENT/client.ts" -o -f "$PRISMA_DOT_CLIENT/index.d.ts" || true
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# 🚫 Flisk CLI - TILT IGNORE FILE
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# SYSTEM-GENERATED BY Flisk CLI - DO NOT EDIT
|
|
5
|
+
# Source: .tdk/project.json
|
|
6
|
+
# Regenerate with: flisk config regenerate
|
|
7
|
+
# =============================================================================
|
|
8
|
+
#
|
|
9
|
+
# This file tells Tilt which directories to ignore during file watching.
|
|
10
|
+
# Prevents fsnotify buffer overflow and reduces unnecessary rebuilds.
|
|
11
|
+
#
|
|
12
|
+
# =============================================================================
|
|
13
|
+
|
|
14
|
+
# Dependency directories
|
|
15
|
+
**/node_modules
|
|
16
|
+
|
|
17
|
+
# Build outputs
|
|
18
|
+
**/dist
|
|
19
|
+
**/build
|
|
20
|
+
**/out
|
|
21
|
+
**/.output
|
|
22
|
+
|
|
23
|
+
# Version control
|
|
24
|
+
**/.git
|
|
25
|
+
|
|
26
|
+
# Generated files
|
|
27
|
+
**/.prisma
|
|
28
|
+
**/.turbo
|
|
29
|
+
**/coverage
|
|
30
|
+
**/tmp
|
|
31
|
+
**/temp
|
|
32
|
+
|
|
33
|
+
# IDE files
|
|
34
|
+
**/.idea
|
|
35
|
+
**/.vscode
|
|
36
|
+
**/*.swp
|
|
37
|
+
**/*.swo
|
|
38
|
+
|
|
39
|
+
# OS files
|
|
40
|
+
**/.DS_Store
|
|
41
|
+
**/Thumbs.db
|
|
42
|
+
|
|
43
|
+
# Docker volumes and data
|
|
44
|
+
**/postgres-data
|
|
45
|
+
**/redis-data
|
|
46
|
+
**/verdaccio-storage
|
|
47
|
+
**/verdaccio-conf
|
|
48
|
+
**/verdaccio-plugins
|
|
49
|
+
|
|
50
|
+
# Flisk generated outputs (avoid watching generated files)
|
|
51
|
+
**/.tdk/.tdk-out
|
|
52
|
+
**/.autogenerated/**
|
|
53
|
+
**/.autogenerated/*.autogenerated
|
|
54
|
+
**/.autogenerated/*.autogenerated.json
|
|
55
|
+
**/.autogenerated/*.autogenerated.yml
|
|
56
|
+
**/.autogenerated/*.autogenerated.toml
|
|
57
|
+
|
|
58
|
+
# Logs
|
|
59
|
+
**/*.log
|
|
60
|
+
**/logs
|
|
61
|
+
|
|
62
|
+
# Test outputs
|
|
63
|
+
**/test-results
|
|
64
|
+
**/playwright-report
|
|
65
|
+
**/.nyc_output
|
|
66
|
+
|
|
67
|
+
# Cache directories
|
|
68
|
+
**/.cache
|
|
69
|
+
**/.npm
|
|
70
|
+
**/.bun
|
|
71
|
+
**/bun.lockb
|
|
72
|
+
docker
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
#!/usr/bin/env starlark
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# 🔧 TILT SERVICE DEFAULTS MASTER CONFIG
|
|
5
|
+
# =============================================================================
|
|
6
|
+
# SYSTEM-GENERATED BY Flisk CLI - DO NOT EDIT
|
|
7
|
+
# Source: Flisk Platform Standards v{{version}}
|
|
8
|
+
# Output: .tdk/.tdk-out/
|
|
9
|
+
# Regenerate with: flisk config regenerate
|
|
10
|
+
# =============================================================================
|
|
11
|
+
|
|
12
|
+
# Port Configuration
|
|
13
|
+
BASE_PORT_FRONTEND = {{ports.frontend.base}}
|
|
14
|
+
BASE_PORT_BACKEND = {{ports.backend.base}}
|
|
15
|
+
BASE_PORT_HEALTH = {{ports.health.base}}
|
|
16
|
+
|
|
17
|
+
# Port ranges
|
|
18
|
+
PORT_RANGE_FRONTEND_START = {{ports.frontend.start}}
|
|
19
|
+
PORT_RANGE_FRONTEND_END = {{ports.frontend.end}}
|
|
20
|
+
PORT_RANGE_BACKEND_START = {{ports.backend.start}}
|
|
21
|
+
PORT_RANGE_BACKEND_END = {{ports.backend.end}}
|
|
22
|
+
PORT_RANGE_HEALTH_START = {{ports.health.start}}
|
|
23
|
+
PORT_RANGE_HEALTH_END = {{ports.health.end}}
|
|
24
|
+
|
|
25
|
+
# Service Naming Patterns (required by Flisk engine)
|
|
26
|
+
NAMING_PATTERNS = {
|
|
27
|
+
"backend_suffix": "{{naming.backend}}",
|
|
28
|
+
"frontend_suffix": "{{naming.frontend}}",
|
|
29
|
+
"migrator_suffix": "{{naming.migrator}}",
|
|
30
|
+
"library_suffix": "{{naming.library}}",
|
|
31
|
+
"sdk_suffix": "{{naming.sdk}}",
|
|
32
|
+
"worker_suffix": "{{naming.worker}}",
|
|
33
|
+
"valid_separators": {{starlarkArray naming.validSeparators}},
|
|
34
|
+
"max_length": {{naming.maxLength}},
|
|
35
|
+
"min_length": {{naming.minLength}},
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# Traefik Configuration (required by Flisk engine)
|
|
39
|
+
TRAEFIK_CONFIG = {
|
|
40
|
+
"entrypoint": "{{traefik.entrypoint}}",
|
|
41
|
+
"network": "{{traefik.network}}",
|
|
42
|
+
"default_host": "{{traefik.defaultHost}}",
|
|
43
|
+
"default_port": {{traefik.defaultPort}},
|
|
44
|
+
"tls_enabled": {{starlark traefik.tlsEnabled}},
|
|
45
|
+
"entrypoints": {{starlarkArray traefik.entrypoints}},
|
|
46
|
+
"middlewares": {{starlarkArray traefik.middlewares}},
|
|
47
|
+
"tls": {"enabled": {{starlark traefik.tlsEnabled}} },
|
|
48
|
+
"healthcheck_path": "{{traefik.healthcheckPath}}",
|
|
49
|
+
"healthcheck_interval": "{{traefik.healthcheckInterval}}",
|
|
50
|
+
"healthcheck_timeout": "{{traefik.healthcheckTimeout}}",
|
|
51
|
+
"frontend_priority_base": {{traefik.frontendPriorityBase}},
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Health Check Configuration
|
|
55
|
+
HEALTH_CHECK_PATH = "{{health.path}}"
|
|
56
|
+
HEALTH_CHECK_LIVE = "{{health.live}}"
|
|
57
|
+
HEALTH_CHECK_READY = "{{health.ready}}"
|
|
58
|
+
HEALTH_CHECK_TIMEOUT = {{health.timeout}}
|
|
59
|
+
|
|
60
|
+
# File watch ignore patterns (to prevent fsnotify buffer overflow)
|
|
61
|
+
def get_filewatch_ignore_patterns(resource_path="."):
|
|
62
|
+
"""
|
|
63
|
+
Returns list of file patterns to ignore for Tilt filewatch.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
resource_path: Base path of the service
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
List of patterns to ignore
|
|
70
|
+
"""
|
|
71
|
+
ignores = [
|
|
72
|
+
{{#each filewatchIgnores}}
|
|
73
|
+
resource_path + "/{{this}}",
|
|
74
|
+
{{/each}}
|
|
75
|
+
]
|
|
76
|
+
return ignores
|
|
77
|
+
|
|
78
|
+
def get_port_config():
|
|
79
|
+
"""Returns the complete port allocation strategy."""
|
|
80
|
+
return {
|
|
81
|
+
"frontend": {
|
|
82
|
+
"base": BASE_PORT_FRONTEND,
|
|
83
|
+
"range_start": PORT_RANGE_FRONTEND_START,
|
|
84
|
+
"range_end": PORT_RANGE_FRONTEND_END,
|
|
85
|
+
},
|
|
86
|
+
"backend": {
|
|
87
|
+
"base": BASE_PORT_BACKEND,
|
|
88
|
+
"range_start": PORT_RANGE_BACKEND_START,
|
|
89
|
+
"range_end": PORT_RANGE_BACKEND_END,
|
|
90
|
+
},
|
|
91
|
+
"health": {
|
|
92
|
+
"base": BASE_PORT_HEALTH,
|
|
93
|
+
"range_start": PORT_RANGE_HEALTH_START,
|
|
94
|
+
"range_end": PORT_RANGE_HEALTH_END,
|
|
95
|
+
},
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
def get_resource_port(resource_type, stack_index=0, resource_index=0):
|
|
99
|
+
"""
|
|
100
|
+
Calculate service port based on type and indices.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
resource_type: "frontend" or "backend"
|
|
104
|
+
stack_index: Index of the stack (for port allocation)
|
|
105
|
+
resource_index: Index of the service within stack
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
Port number
|
|
109
|
+
"""
|
|
110
|
+
if resource_type == "frontend":
|
|
111
|
+
base = BASE_PORT_FRONTEND
|
|
112
|
+
elif resource_type == "backend":
|
|
113
|
+
base = BASE_PORT_BACKEND
|
|
114
|
+
else:
|
|
115
|
+
fail("Unknown service type: {}".format(resource_type))
|
|
116
|
+
|
|
117
|
+
# Allocate ports: base + (stack_index * 100) + resource_index
|
|
118
|
+
return base + (stack_index * 100) + resource_index
|
|
119
|
+
|
|
120
|
+
def get_health_check_config():
|
|
121
|
+
"""Returns health check endpoint configuration."""
|
|
122
|
+
return {
|
|
123
|
+
"path": HEALTH_CHECK_PATH,
|
|
124
|
+
"live": HEALTH_CHECK_LIVE,
|
|
125
|
+
"ready": HEALTH_CHECK_READY,
|
|
126
|
+
"timeout": HEALTH_CHECK_TIMEOUT,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
def get_build_config():
|
|
130
|
+
"""Returns Docker build configuration."""
|
|
131
|
+
return {
|
|
132
|
+
"dockerfile": "{{docker.dockerfile}}",
|
|
133
|
+
"context": "{{docker.context}}",
|
|
134
|
+
{{#if docker.platform}}"platform": "{{docker.platform}}",{{/if}}
|
|
135
|
+
"cache_from": [],
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
def get_runtime_config():
|
|
139
|
+
"""Returns runtime command configuration."""
|
|
140
|
+
return {
|
|
141
|
+
"backend": {
|
|
142
|
+
"command": "{{runtime.backend.command}}",
|
|
143
|
+
"args": {{starlarkArray runtime.backend.args}},
|
|
144
|
+
"env": {{starlark runtime.backend.env}},
|
|
145
|
+
},
|
|
146
|
+
"frontend": {
|
|
147
|
+
"command": "{{runtime.frontend.command}}",
|
|
148
|
+
"args": {{starlarkArray runtime.frontend.args}},
|
|
149
|
+
"env": {{starlark runtime.frontend.env}},
|
|
150
|
+
},
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
def get_resource_defaults():
|
|
154
|
+
"""Returns complete service defaults."""
|
|
155
|
+
return {
|
|
156
|
+
"port": get_port_config(),
|
|
157
|
+
"health": get_health_check_config(),
|
|
158
|
+
"build": get_build_config(),
|
|
159
|
+
"runtime": get_runtime_config(),
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
def validate_resource_defaults(config):
|
|
163
|
+
"""
|
|
164
|
+
Validates service configuration against defaults.
|
|
165
|
+
|
|
166
|
+
Args:
|
|
167
|
+
config: Service configuration dict
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
Dict with validation results
|
|
171
|
+
"""
|
|
172
|
+
warnings = []
|
|
173
|
+
errors = []
|
|
174
|
+
|
|
175
|
+
# Validate port allocation
|
|
176
|
+
if "port" in config:
|
|
177
|
+
port = config["port"]
|
|
178
|
+
if port < 1024:
|
|
179
|
+
errors.append("Port {} is in reserved range (< 1024)".format(port))
|
|
180
|
+
elif port > 65535:
|
|
181
|
+
errors.append("Port {} exceeds maximum (65535)".format(port))
|
|
182
|
+
|
|
183
|
+
# Validate health check path
|
|
184
|
+
if "healthCheckPath" in config:
|
|
185
|
+
path = config["healthCheckPath"]
|
|
186
|
+
if not path.startswith("/"):
|
|
187
|
+
errors.append("Health check path must start with /: {}".format(path))
|
|
188
|
+
|
|
189
|
+
return {
|
|
190
|
+
"valid": len(errors) == 0,
|
|
191
|
+
"errors": errors,
|
|
192
|
+
"warnings": warnings,
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
# Export public API
|
|
196
|
+
__all__ = [
|
|
197
|
+
"get_port_config",
|
|
198
|
+
"get_resource_port",
|
|
199
|
+
"get_health_check_config",
|
|
200
|
+
"get_filewatch_ignore_patterns",
|
|
201
|
+
"get_build_config",
|
|
202
|
+
"get_runtime_config",
|
|
203
|
+
"get_resource_defaults",
|
|
204
|
+
"validate_resource_defaults",
|
|
205
|
+
"BASE_PORT_FRONTEND",
|
|
206
|
+
"BASE_PORT_BACKEND",
|
|
207
|
+
"BASE_PORT_HEALTH",
|
|
208
|
+
"PORT_RANGE_FRONTEND_START",
|
|
209
|
+
"PORT_RANGE_FRONTEND_END",
|
|
210
|
+
"PORT_RANGE_BACKEND_START",
|
|
211
|
+
"PORT_RANGE_BACKEND_END",
|
|
212
|
+
"PORT_RANGE_HEALTH_START",
|
|
213
|
+
"PORT_RANGE_HEALTH_END",
|
|
214
|
+
"HEALTH_CHECK_PATH",
|
|
215
|
+
"HEALTH_CHECK_LIVE",
|
|
216
|
+
"HEALTH_CHECK_READY",
|
|
217
|
+
"HEALTH_CHECK_TIMEOUT",
|
|
218
|
+
"NAMING_PATTERNS",
|
|
219
|
+
"TRAEFIK_CONFIG",
|
|
220
|
+
]
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#!/usr/bin/env starlark
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# 🏗️ TILT TECH STACK MASTER CONFIG
|
|
5
|
+
# =============================================================================
|
|
6
|
+
# SYSTEM-GENERATED BY Flisk CLI - DO NOT EDIT
|
|
7
|
+
# Source: Flisk Platform Standards v{{version}}
|
|
8
|
+
# Output: .tdk/.tdk-out/
|
|
9
|
+
# Regenerate with: flisk config regenerate
|
|
10
|
+
# =============================================================================
|
|
11
|
+
|
|
12
|
+
def get_tech_stack():
|
|
13
|
+
"""Returns the complete tech stack definition."""
|
|
14
|
+
return {
|
|
15
|
+
"bundler": "{{tech.bundler}}",
|
|
16
|
+
"runtime": "{{tech.runtime}}",
|
|
17
|
+
"language": "{{tech.language}}",
|
|
18
|
+
"orm": "{{tech.orm}}",
|
|
19
|
+
"messaging": "{{tech.messaging}}",
|
|
20
|
+
"linting": "{{tech.linting}}",
|
|
21
|
+
"testing": "{{tech.testing}}",
|
|
22
|
+
"web_framework": "{{tech.framework}}",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# Constants for direct import
|
|
26
|
+
BUNDLER = "{{tech.bundler}}"
|
|
27
|
+
RUNTIME = "{{tech.runtime}}"
|
|
28
|
+
ORM = "{{tech.orm}}"
|
|
29
|
+
MESSAGING = "{{tech.messaging}}"
|
|
30
|
+
LINTING = "{{tech.linting}}"
|
|
31
|
+
TESTING = "{{tech.testing}}"
|
|
32
|
+
WEB_FRAMEWORK = "{{tech.framework}}"
|
|
33
|
+
LANGUAGE = "{{tech.language}}"
|
|
34
|
+
|
|
35
|
+
TECH_STACK = get_tech_stack()
|
|
36
|
+
|
|
37
|
+
def validate_tech_stack(config, strict=False):
|
|
38
|
+
"""
|
|
39
|
+
Validates a configuration against the platform tech stack.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
config: Dict with tech stack choices to validate
|
|
43
|
+
strict: If True, fails on any non-compliance. If False, warns.
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
Dict with validation results: {"valid": bool, "errors": [], "warnings": []}
|
|
47
|
+
"""
|
|
48
|
+
errors = []
|
|
49
|
+
warnings = []
|
|
50
|
+
|
|
51
|
+
# Check for override reason
|
|
52
|
+
has_override = "_override_reason" in config and config["_override_reason"]
|
|
53
|
+
|
|
54
|
+
# Strict validations (must match platform standard)
|
|
55
|
+
strict_validations = {
|
|
56
|
+
"bundler": "{{tech.bundler}}",
|
|
57
|
+
"runtime": "{{tech.runtime}}",
|
|
58
|
+
"orm": "{{tech.orm}}",
|
|
59
|
+
"messaging": "{{tech.messaging}}",
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
for key, standard in strict_validations.items():
|
|
63
|
+
if key in config:
|
|
64
|
+
value = config[key]
|
|
65
|
+
if value.lower() != standard.lower():
|
|
66
|
+
if has_override:
|
|
67
|
+
warnings.append("Override active: {}='{}' (Reason: {})".format(
|
|
68
|
+
key, value, config["_override_reason"]
|
|
69
|
+
))
|
|
70
|
+
elif strict:
|
|
71
|
+
errors.append(
|
|
72
|
+
("❌ Tech Stack Error: {}: '{}' is not supported. " +
|
|
73
|
+
"Platform standard is '{}'. Use _override_reason to document exceptions.").format(
|
|
74
|
+
key, value, standard
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
else:
|
|
78
|
+
warnings.append(
|
|
79
|
+
("⚠️ Tech Stack Warning: {}: '{}' is not standard. " +
|
|
80
|
+
"Platform standard is '{}'.").format(key, value, standard)
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
# Optional validations (warnings if missing or different)
|
|
84
|
+
optional_validations = {
|
|
85
|
+
"linting": "{{tech.linting}}",
|
|
86
|
+
"testing": "{{tech.testing}}",
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
for key, standard in optional_validations.items():
|
|
90
|
+
if key in config:
|
|
91
|
+
value = config[key]
|
|
92
|
+
if value.lower() != standard.lower():
|
|
93
|
+
if has_override:
|
|
94
|
+
warnings.append("Override active: {}='{}' (Reason: {})".format(
|
|
95
|
+
key, value, config["_override_reason"]
|
|
96
|
+
))
|
|
97
|
+
else:
|
|
98
|
+
warnings.append(
|
|
99
|
+
"⚠️ Tech Stack Warning: {}: '{}' differs from standard '{}'.".format(
|
|
100
|
+
key, value, standard
|
|
101
|
+
)
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
"valid": len(errors) == 0,
|
|
106
|
+
"errors": errors,
|
|
107
|
+
"warnings": warnings,
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
def assert_tech_stack(config, strict=False):
|
|
111
|
+
"""
|
|
112
|
+
Validates tech stack and fails fast on errors.
|
|
113
|
+
|
|
114
|
+
Args:
|
|
115
|
+
config: Dict with tech stack choices to validate
|
|
116
|
+
strict: If True, fails on any non-compliance
|
|
117
|
+
|
|
118
|
+
Raises:
|
|
119
|
+
Exception: If validation fails with errors
|
|
120
|
+
"""
|
|
121
|
+
result = validate_tech_stack(config, strict)
|
|
122
|
+
|
|
123
|
+
# Print warnings
|
|
124
|
+
for warning in result["warnings"]:
|
|
125
|
+
print(warning)
|
|
126
|
+
|
|
127
|
+
# Fail on errors
|
|
128
|
+
if not result["valid"]:
|
|
129
|
+
for error in result["errors"]:
|
|
130
|
+
print(error)
|
|
131
|
+
fail("Tech stack validation failed. See errors above.")
|
|
132
|
+
|
|
133
|
+
return result
|
|
134
|
+
|
|
135
|
+
# Export public API
|
|
136
|
+
__all__ = [
|
|
137
|
+
"get_tech_stack",
|
|
138
|
+
"validate_tech_stack",
|
|
139
|
+
"assert_tech_stack",
|
|
140
|
+
"BUNDLER",
|
|
141
|
+
"RUNTIME",
|
|
142
|
+
"ORM",
|
|
143
|
+
"MESSAGING",
|
|
144
|
+
"LINTING",
|
|
145
|
+
"TESTING",
|
|
146
|
+
"WEB_FRAMEWORK",
|
|
147
|
+
"LANGUAGE",
|
|
148
|
+
"TECH_STACK",
|
|
149
|
+
]
|