@flisk-sh/flisk 1.3.207 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +40 -37
- package/cli/dist/agent-runtimes/custom.js +3 -3
- package/cli/dist/agent-runtimes/registry.js +3 -3
- package/cli/dist/backend-frameworks/registry.js +8 -8
- package/cli/dist/backend-languages/python.js +4 -1
- package/cli/dist/backend-languages/registry.js +3 -3
- package/cli/dist/cli.js +4 -3
- package/cli/dist/commands/__tests__/project-e2e-helpers.js +6 -6
- package/cli/dist/commands/agent.js +8 -8
- package/cli/dist/commands/completion.js +26 -26
- package/cli/dist/commands/config.js +8 -8
- package/cli/dist/commands/doctor.js +18 -18
- package/cli/dist/commands/down.js +1 -1
- package/cli/dist/commands/eject.js +10 -10
- package/cli/dist/commands/help.js +2 -2
- package/cli/dist/commands/import.js +2 -2
- package/cli/dist/commands/logs.js +2 -2
- package/cli/dist/commands/mcp.js +2 -2
- package/cli/dist/commands/networks.js +2 -2
- package/cli/dist/commands/open.js +0 -1
- package/cli/dist/commands/project.js +19 -19
- package/cli/dist/commands/projects.js +1 -1
- package/cli/dist/commands/resource.js +21 -21
- package/cli/dist/commands/resources.js +2 -2
- package/cli/dist/commands/restart.js +7 -4
- package/cli/dist/commands/runtime.js +15 -3
- package/cli/dist/commands/stack.js +8 -8
- package/cli/dist/commands/up.js +23 -23
- package/cli/dist/commands/upgrade.js +44 -40
- package/cli/dist/frontend-frameworks/registry.js +3 -3
- package/cli/dist/generator/extension-fetch.js +12 -9
- package/cli/dist/generator/template-engine.js +66 -53
- package/cli/dist/mcp/tools.js +2 -2
- package/cli/dist/utils/agent-host.js +1 -1
- package/cli/dist/utils/cli-command.js +1 -1
- package/cli/dist/utils/cold-preflight.js +2 -2
- package/cli/dist/utils/constants.js +3 -3
- package/cli/dist/utils/discovery-paths.js +2 -2
- package/cli/dist/utils/doctor-fix.js +10 -10
- package/cli/dist/utils/doctor-report.js +3 -3
- package/cli/dist/utils/doctor-runtime.js +4 -3
- package/cli/dist/utils/doctor-starlark.js +3 -3
- package/cli/dist/utils/doctor-wiring.js +4 -4
- package/cli/dist/utils/down-cleanup.js +2 -2
- package/cli/dist/utils/env-compat-init.js +8 -0
- package/cli/dist/utils/env-compat.js +27 -0
- package/cli/dist/utils/env-selection.js +9 -9
- package/cli/dist/utils/errors.js +13 -13
- package/cli/dist/utils/file-helpers.js +5 -5
- package/cli/dist/utils/{tdk-version.js → flisk-version.js} +8 -8
- package/cli/dist/utils/generated-paths.js +6 -6
- package/cli/dist/utils/host-port-config.js +10 -10
- package/cli/dist/utils/host-port-plan.js +3 -3
- package/cli/dist/utils/machine-output.js +2 -2
- package/cli/dist/utils/native-windows.js +1 -1
- package/cli/dist/utils/paths.js +3 -3
- package/cli/dist/utils/platform.js +9 -9
- package/cli/dist/utils/port-conflict-fix.js +3 -3
- package/cli/dist/utils/port-fallback-notice.js +3 -3
- package/cli/dist/utils/project-config-defaults.js +1 -1
- package/cli/dist/utils/project-features.js +2 -2
- package/cli/dist/utils/resource-features.js +3 -3
- package/cli/dist/utils/runtime-layout.js +58 -0
- package/cli/dist/utils/schema-version-gate.js +3 -2
- package/cli/dist/utils/service-urls.js +3 -3
- package/cli/dist/utils/services.js +2 -2
- package/cli/dist/utils/shared-infra.js +2 -2
- package/cli/dist/utils/shared-platform-postgres.js +6 -6
- package/cli/dist/utils/tar.js +1 -1
- package/cli/dist/utils/tilt.js +1 -1
- package/cli/dist/utils/up-readiness.js +1 -1
- package/cli/dist/utils/windows-doctor.js +3 -3
- package/cli/dist-bundle/{chunk-D2DIEX5E.js → chunk-36SOQVAL.js} +2 -2
- package/cli/dist-bundle/{chunk-YZRPX76N.js → chunk-3J6XI3NX.js} +1 -1
- package/cli/dist-bundle/chunk-5EZ4EX6U.js +2 -0
- package/cli/dist-bundle/chunk-763VK575.js +54 -0
- package/cli/dist-bundle/{chunk-5LRMAY67.js → chunk-B6Q5VKL7.js} +13 -13
- package/cli/dist-bundle/{chunk-AGXA5DOQ.js → chunk-BWK6MPCB.js} +3 -3
- package/cli/dist-bundle/{chunk-SLKTM6ZO.js → chunk-D7N2GGJH.js} +14 -14
- package/cli/dist-bundle/chunk-HEMPQKD6.js +7 -0
- package/cli/dist-bundle/chunk-ICXF6PXA.js +35 -0
- package/cli/dist-bundle/chunk-K6SOCO6V.js +3 -0
- package/cli/dist-bundle/{chunk-6EA4DGCY.js → chunk-KJZUBHLO.js} +1 -1
- package/cli/dist-bundle/{chunk-GOEBYLFN.js → chunk-MINZ25AC.js} +1 -1
- package/cli/dist-bundle/{chunk-FAHNFTWN.js → chunk-PVBAGX5X.js} +2 -2
- package/cli/dist-bundle/chunk-QQEV6D74.js +2 -0
- package/cli/dist-bundle/chunk-VHFFSBVJ.js +10 -0
- package/cli/dist-bundle/chunk-VMB5673O.js +57 -0
- package/cli/dist-bundle/{chunk-53M5D4KE.js → chunk-XD3BBFZB.js} +1 -1
- package/cli/dist-bundle/{chunk-GIMHTZNR.js → chunk-YL56J2WX.js} +1 -1
- package/cli/dist-bundle/cli.js +254 -254
- package/cli/dist-bundle/cold-preflight-ABU26DYW.js +2 -0
- package/cli/dist-bundle/colima-GBURKN54.js +2 -0
- package/cli/dist-bundle/{demo-stage-ANHJKDZC.js → demo-stage-EBIUCJBX.js} +2 -2
- package/cli/dist-bundle/{devtools-MGITLOWZ.js → devtools-ZD6XIOLD.js} +2 -2
- package/cli/dist-bundle/extension-fetch-VEFSCG4B.js +2 -0
- package/cli/dist-bundle/native-windows-BWVEYVPO.js +2 -0
- package/cli/dist-bundle/{one-command-P6XVAXWV.js → one-command-VNKQAMFJ.js} +2 -2
- package/cli/dist-bundle/open-2KSAF6M2.js +2 -0
- package/cli/dist-bundle/project-YD3C4ZV3.js +2 -0
- package/cli/dist-bundle/project-templates-EYSQG2EO.js +2 -0
- package/cli/dist-bundle/{services-CBXN4SXC.js → services-V6Q55JR5.js} +2 -2
- package/cli/dist-bundle/{stack-progress-6GO2TCRH.js → stack-progress-NIFM5T2K.js} +2 -2
- package/cli/dist-bundle/tilt-port-owner-MWJ7P6NB.js +2 -0
- package/cli/dist-bundle/url-actions-HXJLBTX6.js +2 -0
- package/cli/package.json +5 -5
- package/cli/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +2 -2
- package/cli/shared-platform-engineering/docker-templates/install-deps.sh +2 -2
- package/cli/templates/.tiltignore.hbs +2 -2
- package/cli/templates/TILT_RESOURCE_DEFAULTS.star.hbs +1 -1
- package/cli/templates/TILT_TECH_STACK.star.hbs +1 -1
- package/cli/templates/Tiltfile.hbs +21 -21
- package/cli/templates/spec.master.hbs +4 -4
- package/examples/tdk-example/LICENSE +1 -1
- package/examples/tdk-example/Tiltfile +10 -10
- package/examples/tdk-example/services/platform/messaging/docker-compose.yml +7 -7
- package/examples/tdk-example/services/shop/orders-api/service.json +1 -1
- package/examples/tdk-example/services/shop/orders-api/src/index.ts +1 -1
- package/examples/tdk-example/services/shop/orders-app/index.html +1 -1
- package/examples/tdk-example/services/shop/orders-worker/service.json +1 -1
- package/examples/tdk-example/services/shop/orders-worker/src/index.ts +1 -1
- package/package.json +29 -11
- package/{Tiltfile → runtime/Tiltfile} +9 -5
- package/{discovery → runtime/discovery}/AGENTS.md +1 -1
- package/{discovery → runtime/discovery}/TILT_DISCOVERY.star +5 -5
- package/{discovery → runtime/discovery}/Tiltfile +5 -5
- package/{discovery → runtime/discovery}/config.star +5 -5
- package/{discovery → runtime/discovery}/constants.star +14 -14
- package/{discovery → runtime/discovery}/deterministic.star +1 -1
- package/{discovery → runtime/discovery}/discovery_daemon.star +2 -2
- package/{discovery → runtime/discovery}/discovery_orchestrator.star +17 -17
- package/{discovery → runtime/discovery}/identity-management-backend/service.yaml +2 -2
- package/{discovery → runtime/discovery}/incremental_discovery.star +1 -1
- package/{discovery → runtime/discovery}/json_manifest_scanner.star +2 -2
- package/{discovery → runtime/discovery}/libraries.star +1 -1
- package/{discovery → runtime/discovery}/manifest/constants.star +1 -1
- package/{discovery → runtime/discovery}/manifest/loading.star +7 -7
- package/{discovery → runtime/discovery}/manifest/normalize.star +12 -15
- package/{discovery → runtime/discovery}/registry.star +11 -11
- package/{discovery → runtime/discovery}/resource_snapshot.py +2 -2
- package/{discovery → runtime/discovery}/resource_snapshot.star +6 -6
- package/{discovery → runtime/discovery}/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +2 -2
- package/{discovery → runtime/discovery}/test_resource_snapshot.py +6 -6
- package/{engine → runtime/engine}/AGENTS.md +6 -6
- package/{engine → runtime/engine}/README.md +2 -2
- package/{engine → runtime/engine}/Tiltfile +5 -5
- package/{engine → runtime/engine}/assets/docker/golden-layers.Dockerfile +17 -17
- package/{engine → runtime/engine}/assets/docker/wake-gateway/Dockerfile +7 -0
- package/{engine → runtime/engine}/entrypoint.star +1 -1
- package/{engine → runtime/engine}/paths.star +5 -5
- package/{engine → runtime/engine}/schemas/project-schema.json +2 -2
- package/{engine → runtime/engine}/schemas/service-schema.json +5 -5
- package/{engine → runtime/engine}/scripts/debug-container.sh +3 -3
- package/{engine → runtime/engine}/spec.master +3 -3
- package/{engine → runtime/engine}/topologies/README.md +3 -3
- package/{engine → runtime/engine}/topologies/platform/docker/build/golden_image_build.star +5 -5
- package/{engine → runtime/engine}/topologies/platform/docker/build/golden_image_constants.star +7 -7
- package/{engine → runtime/engine}/topologies/platform/docker/build/golden_image_dockerfile.star +8 -8
- package/{engine → runtime/engine}/topologies/platform/docker/compose/compose.star +12 -12
- package/{engine → runtime/engine}/topologies/platform/docker/compose/traefik_standalone.star +21 -6
- package/{engine → runtime/engine}/topologies/platform/docker/config/healthcheck.star +7 -7
- package/{engine → runtime/engine}/topologies/platform/docker/constants.star +7 -7
- package/{engine → runtime/engine}/topologies/platform/docker/dockerfile/language_dockerfile.star +3 -3
- package/{engine → runtime/engine}/topologies/platform/docker/layers/l1_base_layers.star +5 -5
- package/{engine → runtime/engine}/topologies/platform/docker/layers/l2_dependency_layers.star +14 -14
- package/{engine → runtime/engine}/topologies/platform/docker/layers/l3_builder_layers.star +5 -5
- package/{engine → runtime/engine}/topologies/platform/docker/layers/l4_runtime_layers.star +8 -8
- package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/constants.star +5 -5
- package/{engine → runtime/engine}/topologies/platform/docker/networking/api_path_constants.star +5 -5
- package/{engine → runtime/engine}/topologies/platform/docker/networking/sablier_container_cycle.star +1 -1
- package/{engine → runtime/engine}/topologies/platform/docker/networking/traefik_static_routes.star +1 -1
- package/{engine → runtime/engine}/topologies/platform/docker/secrets/env_secrets.star +2 -2
- package/{engine → runtime/engine}/topologies/platform/docker/secrets/infisical.star +4 -4
- package/{engine → runtime/engine}/topologies/platform/registries/verdaccio_loader.star +1 -1
- package/{engine → runtime/engine}/topologies/platform/security/secrets.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/common/utils.star +9 -10
- package/{engine → runtime/engine}/topologies/tilt/common/utils_debug.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/common/utils_deterministic.star +2 -2
- package/{engine → runtime/engine}/topologies/tilt/common/utils_env.star +5 -5
- package/{engine → runtime/engine}/topologies/tilt/config/profiles.star +4 -4
- package/{engine → runtime/engine}/topologies/tilt/generators/agents_md.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/generators/infisical/README.md +1 -1
- package/{engine → runtime/engine}/topologies/tilt/generators/infisical/organization.star +6 -6
- package/{engine → runtime/engine}/topologies/tilt/generators/npmrc.star +5 -5
- package/{engine → runtime/engine}/topologies/tilt/generators/typescript/backend_tsconfig.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/generators/typescript/playwright_config.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/generators/vite/helpers.star +7 -7
- package/{engine → runtime/engine}/topologies/tilt/generators/vite/templates.star +5 -5
- package/{engine → runtime/engine}/topologies/tilt/manifest/json_to_yaml.py +2 -2
- package/{engine → runtime/engine}/topologies/tilt/manifest/loader.star +2 -2
- package/{engine → runtime/engine}/topologies/tilt/manifest/schema.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/manifest/yaml_to_json.py +1 -1
- package/{engine → runtime/engine}/topologies/tilt/resources/build_concurrency.star +3 -3
- package/{engine → runtime/engine}/topologies/tilt/resources/databases.star +7 -6
- package/{engine → runtime/engine}/topologies/tilt/resources/infra-loader.star +12 -12
- package/{engine → runtime/engine}/topologies/tilt/resources/libs_paths.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/resources/libs_resource_definition.star +2 -2
- package/{engine → runtime/engine}/topologies/tilt/resources/libs_setup.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +36 -28
- package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +1 -1
- package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/frontend.star +5 -5
- package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +4 -4
- package/{engine → runtime/engine}/topologies/tilt/resources/watchers.star +20 -20
- package/{engine → runtime/engine}/where-things-live.star +5 -5
- package/{ext → runtime/ext}/Tiltfile +5 -5
- package/{ext → runtime/ext}/ide-components/code_viewer/server.py +1 -1
- package/{ext → runtime/ext}/ide-components/config_inspector/server.py +2 -2
- package/{ext → runtime/ext}/ide-components/file_browser/server.py +1 -1
- package/{ext → runtime/ext}/ide-components/shared/config_service.py +2 -2
- package/{ext → runtime/ext}/ide-components/shared/file_utils.py +2 -2
- package/{ext → runtime/ext}/ide-components/shared/http_utils.py +1 -1
- package/{ext → runtime/ext}/ide-components/shared/syntax_highlighter.py +1 -1
- package/{ext → runtime/ext}/ide-components/shared/template_engine.py +1 -1
- package/{ext → runtime/ext}/ide-components/shared/templates/base.html +1 -1
- package/{ext → runtime/ext}/ide-components/shared/test_config_service.py +1 -1
- package/{ext → runtime/ext}/ide-components/shared/tilt_integration.py +1 -1
- package/{ext → runtime/ext}/ui-enhancements/tiltfile.py +1 -1
- package/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +2 -2
- package/shared-platform-engineering/docker-templates/install-deps.sh +2 -2
- package/cli/dist-bundle/chunk-42IVF3YT.js +0 -3
- package/cli/dist-bundle/chunk-AT5MFZ3D.js +0 -10
- package/cli/dist-bundle/chunk-BHWJU6HY.js +0 -2
- package/cli/dist-bundle/chunk-DWR3LLHS.js +0 -2
- package/cli/dist-bundle/chunk-GB6DJJ5N.js +0 -57
- package/cli/dist-bundle/chunk-ODYL6LET.js +0 -52
- package/cli/dist-bundle/chunk-YTXQPTCN.js +0 -35
- package/cli/dist-bundle/chunk-Z2C55UFP.js +0 -7
- package/cli/dist-bundle/cold-preflight-7PFKXNK7.js +0 -2
- package/cli/dist-bundle/colima-SVZX2UML.js +0 -2
- package/cli/dist-bundle/extension-fetch-6XNTDF44.js +0 -2
- package/cli/dist-bundle/native-windows-X5XVLFJS.js +0 -2
- package/cli/dist-bundle/open-VJZ7W4JR.js +0 -2
- package/cli/dist-bundle/project-QSH7LOWI.js +0 -2
- package/cli/dist-bundle/project-templates-JDRE7AVL.js +0 -2
- package/cli/dist-bundle/tilt-port-owner-SMN5SAQJ.js +0 -2
- package/cli/dist-bundle/url-actions-D6ROTHZG.js +0 -2
- /package/cli/bin/{tdk.js → flisk.js} +0 -0
- /package/{discovery → runtime/discovery}/filtering.star +0 -0
- /package/{discovery → runtime/discovery}/identity-management-frontend/service.yaml +0 -0
- /package/{discovery → runtime/discovery}/identity-sdk/service.yaml +0 -0
- /package/{discovery → runtime/discovery}/indexing.star +0 -0
- /package/{discovery → runtime/discovery}/loading.star +0 -0
- /package/{discovery → runtime/discovery}/manifest/validation.star +0 -0
- /package/{discovery → runtime/discovery}/normalization.star +0 -0
- /package/{discovery → runtime/discovery}/schemas.star +0 -0
- /package/{discovery → runtime/discovery}/services/platform/cdc/debezium/nats-connector/service.yaml +0 -0
- /package/{discovery → runtime/discovery}/services/platform/cdc/nats-http-bridge/service.yaml +0 -0
- /package/{discovery → runtime/discovery}/services/platform/synthetic-monitor/service.yaml +0 -0
- /package/{discovery → runtime/discovery}/validation.star +0 -0
- /package/{discovery → runtime/discovery}/versioning.star +0 -0
- /package/{engine → runtime/engine}/REFACTORING_MANIFEST_SYSTEM.md +0 -0
- /package/{engine → runtime/engine}/assets/docker/wake-gateway/decide.test.ts +0 -0
- /package/{engine → runtime/engine}/assets/docker/wake-gateway/decide.ts +0 -0
- /package/{engine → runtime/engine}/assets/docker/wake-gateway/server.ts +0 -0
- /package/{engine → runtime/engine}/assets/scripts/cleanup-completed-migrator-images.sh +0 -0
- /package/{engine → runtime/engine}/assets/scripts/cleanup-tilt-images.sh +0 -0
- /package/{engine → runtime/engine}/assets/scripts/mac-m1-resource-monitor.sh +0 -0
- /package/{engine → runtime/engine}/config.star +0 -0
- /package/{engine → runtime/engine}/lifecycle/orchestrator.star +0 -0
- /package/{engine → runtime/engine}/scripts/README.md +0 -0
- /package/{engine → runtime/engine}/scripts/build-and-publish-lib.sh +0 -0
- /package/{engine → runtime/engine}/scripts/check-lib-publish.sh +0 -0
- /package/{engine → runtime/engine}/scripts/generate-manifest.sh +0 -0
- /package/{engine → runtime/engine}/spec.master.example +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/auth/auth.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/build/frontend_build_plan.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/build/golden_image.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/compose/compose_helpers.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/compose/unsafe_value.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/config/bunignore.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/config/dockerignore.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/dockerfile/dockerfile.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/generators/golden_docker_generator_v2.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/index.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/bun_helpers.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/infisical/index.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/infisical/infisical_docker.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/db_readiness.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/filesystem_setup.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/migrate_script.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/prisma_build.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/prisma_runtime.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/layers/prisma/secret_resolution.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/networking/traefik.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/networking/traefik_constants.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/docker/networking/traefik_helpers.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/net/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/platform/net/proxy.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/registries/local.star +0 -0
- /package/{engine → runtime/engine}/topologies/platform/security/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/platform/state/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/platform/state/relational.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/common/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/common/utils_docker_networks.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/common/utils_output.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/config/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/config/defaults.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/config/feature_flags.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/config/global.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/api_gateway.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/index.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/infisical/examples.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/infisical/index.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/infisical/machine_identity.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/infisical/path_manager.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/infisical/secrets_generator.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/nginx_conf.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/tsconfig.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/typescript/backend_library_tsconfig.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/typescript/common.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/typescript/frontend_tsconfig.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/typescript/include.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/typescript/prisma_config.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/validators.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/backend.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/lit.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/preact.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/qwik.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/react.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/solid.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/svelte.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/vanilla.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frameworks/vue.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/frontend.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/generators.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/library.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite/sdk.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/generators/vite_config.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/README.md +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/__init__.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/constants.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/errors.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/integration.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/mapper.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/parser.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/tests/test_integration.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/tests/test_loader_parser.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/tests/test_manifest.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/tests/test_validator.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/manifest/validator.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/conditions.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/declaration.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/deps.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/libs.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/libs_discovery.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/libs_tsconfig.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/apply.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/apply_resource_validation.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/builders/typescript.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/dependencies/AGENTS.md +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/env.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/helpers.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/ordering.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/shared-platform-postgres.star +0 -0
- /package/{engine → runtime/engine}/topologies/tilt/resources/triggers.star +0 -0
- /package/{ext → runtime/ext}/ide-components/README.md +0 -0
- /package/{ext → runtime/ext}/ide-components/shared/static/styles.css +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/cron-status-server.sh +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/cron-status-tracker.sh +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/extension.yaml +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/ui/cron-jobs-tab.css +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/ui/help-panel.css +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/ui/icons.css +0 -0
- /package/{ext → runtime/ext}/ui-enhancements/ui/tooltips.css +0 -0
- /package/{specs → runtime/specs}/specs/TILT_SERVICE_DEFAULTS.star +0 -0
- /package/{specs → runtime/specs}/specs/TILT_TECH_STACK.star +0 -0
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
# =============================================================================
|
|
20
20
|
|
|
21
21
|
# Load project name for dynamic defaults
|
|
22
|
-
# Use
|
|
22
|
+
# Use FLISK_PROJECT_ROOT env var set by Tilt, fallback to current directory
|
|
23
23
|
def _load_project_names():
|
|
24
|
-
project_root = os.environ.get('
|
|
25
|
-
project_json_path = '.
|
|
24
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
25
|
+
project_json_path = '.flisk/project.json'
|
|
26
26
|
if project_root:
|
|
27
27
|
project_json_path = project_root + '/' + project_json_path
|
|
28
28
|
|
|
29
29
|
if os.path.exists(project_json_path):
|
|
30
30
|
_project_json = read_json(project_json_path)
|
|
31
|
-
_PROJECT_NAME = _project_json.get('project', {}).get('name', '
|
|
31
|
+
_PROJECT_NAME = _project_json.get('project', {}).get('name', 'flisk-project')
|
|
32
32
|
_PROJECT_NAME_DISPLAY = _PROJECT_NAME.replace('-', ' ').title()
|
|
33
33
|
return _PROJECT_NAME, _PROJECT_NAME_DISPLAY
|
|
34
|
-
return '
|
|
34
|
+
return 'flisk-project', 'Flisk Project'
|
|
35
35
|
|
|
36
36
|
_PROJECT_NAME, _PROJECT_NAME_DISPLAY = _load_project_names()
|
|
37
37
|
|
|
@@ -447,7 +447,7 @@ def _generate_organization_config(org_name=None, project_name=None, env_names=No
|
|
|
447
447
|
Generate complete organization configuration.
|
|
448
448
|
|
|
449
449
|
Args:
|
|
450
|
-
org_name: Organization name (default: from project.json or '
|
|
450
|
+
org_name: Organization name (default: from project.json or 'flisk-project')
|
|
451
451
|
project_name: Project name (default: {org_name}-secrets)
|
|
452
452
|
env_names: List of environments (default: [dev, staging, prod])
|
|
453
453
|
resource_names: List of services to create folders for
|
|
@@ -21,17 +21,17 @@ load("../../../topologies/tilt/common/utils.star", "Utils")
|
|
|
21
21
|
OUTPUT = struct(AUTOGENERATED_FOLDER = ".autogenerated")
|
|
22
22
|
|
|
23
23
|
# Load npm scope from project.json (or use project name as default)
|
|
24
|
-
# Use
|
|
24
|
+
# Use FLISK_PROJECT_ROOT env var set by Tilt, fallback to current directory
|
|
25
25
|
def _load_npm_scope():
|
|
26
|
-
project_root = os.environ.get('
|
|
27
|
-
project_json_path = '.
|
|
26
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
27
|
+
project_json_path = '.flisk/project.json'
|
|
28
28
|
if project_root:
|
|
29
29
|
project_json_path = project_root + '/' + project_json_path
|
|
30
30
|
|
|
31
31
|
if os.path.exists(project_json_path):
|
|
32
32
|
_project_json = read_json(project_json_path)
|
|
33
|
-
return _project_json.get('project', {}).get('name', '
|
|
34
|
-
return '
|
|
33
|
+
return _project_json.get('project', {}).get('name', 'flisk-project')
|
|
34
|
+
return 'flisk-project'
|
|
35
35
|
|
|
36
36
|
_NPM_SCOPE = _load_npm_scope()
|
|
37
37
|
load("../../../topologies/tilt/manifest/constants.star", "PACKAGE_CONFIG_FILENAMES")
|
package/{engine → runtime/engine}/topologies/tilt/generators/typescript/backend_tsconfig.star
RENAMED
|
@@ -32,7 +32,7 @@ def generate_backend_tsconfig(resource_path, prisma_path, write_fn, internal_dep
|
|
|
32
32
|
"@prisma/client": [prisma_path]
|
|
33
33
|
}
|
|
34
34
|
# DDD is premium - same gate as generate_backend_path_aliases() in vite/helpers.star.
|
|
35
|
-
ddd_enabled = features and 'ddd' in features and os.environ.get('
|
|
35
|
+
ddd_enabled = features and 'ddd' in features and os.environ.get('FLISK_LICENSE_KEY', '') != ''
|
|
36
36
|
if ddd_enabled:
|
|
37
37
|
paths["@application/*"] = ["../src/application/*"]
|
|
38
38
|
paths["@domain/*"] = ["../src/domain/*"]
|
package/{engine → runtime/engine}/topologies/tilt/generators/typescript/playwright_config.star
RENAMED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# =============================================================================
|
|
8
8
|
# The real generator is part of a paid Flisk license. When a valid license
|
|
9
9
|
# grants the "playwright" resource, cli/src/generator/template-engine.ts
|
|
10
|
-
# (
|
|
10
|
+
# (vendorFliskExtension) overwrites this file with the licensed version
|
|
11
11
|
# fetched via extension-fetch.ts before Tilt loads it. Same function
|
|
12
12
|
# signature either way, so nothing else in the generator pipeline changes.
|
|
13
13
|
# =============================================================================
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
load('../../../../topologies/tilt/common/utils.star', 'Utils')
|
|
11
11
|
|
|
12
12
|
# Load npm scope from project.json (or use project name as default)
|
|
13
|
-
# Use
|
|
13
|
+
# Use FLISK_PROJECT_ROOT env var set by Tilt, fallback to current directory
|
|
14
14
|
def _load_npm_scope():
|
|
15
|
-
project_root = os.environ.get('
|
|
16
|
-
project_json_path = '.
|
|
15
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
16
|
+
project_json_path = '.flisk/project.json'
|
|
17
17
|
if project_root:
|
|
18
18
|
project_json_path = project_root + '/' + project_json_path
|
|
19
19
|
|
|
20
20
|
if os.path.exists(project_json_path):
|
|
21
21
|
_project_json = read_json(project_json_path)
|
|
22
|
-
return _project_json.get('project', {}).get('name', '
|
|
23
|
-
return '
|
|
22
|
+
return _project_json.get('project', {}).get('name', 'flisk-project')
|
|
23
|
+
return 'flisk-project'
|
|
24
24
|
|
|
25
25
|
_NPM_SCOPE = _load_npm_scope()
|
|
26
26
|
# =============================================================================
|
|
@@ -156,7 +156,7 @@ def generate_proxy_block(api_base_path, backend_port, additional_routes, stack='
|
|
|
156
156
|
|
|
157
157
|
|
|
158
158
|
def generate_backend_path_aliases(resource_path, manifest):
|
|
159
|
-
"""Generate TypeScript path aliases for DDD architecture (Premium - requires
|
|
159
|
+
"""Generate TypeScript path aliases for DDD architecture (Premium - requires FLISK_LICENSE_KEY)."""
|
|
160
160
|
lines = []
|
|
161
161
|
|
|
162
162
|
# DDD is a premium feature: requires both "ddd" in the resource's service.json
|
|
@@ -166,7 +166,7 @@ def generate_backend_path_aliases(resource_path, manifest):
|
|
|
166
166
|
# hand-edited features: ["ddd"] with no key at all is still blocked, but real
|
|
167
167
|
# entitlement is checked client-side by hasDddLicense() in extension-fetch.ts
|
|
168
168
|
# before the CLI ever writes "ddd" into a resource's features array.
|
|
169
|
-
ddd_enabled = 'ddd' in manifest.get('featuresEnabled', []) and os.environ.get('
|
|
169
|
+
ddd_enabled = 'ddd' in manifest.get('featuresEnabled', []) and os.environ.get('FLISK_LICENSE_KEY', '') != ''
|
|
170
170
|
|
|
171
171
|
if ddd_enabled:
|
|
172
172
|
ddd_aliases = [
|
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
# =============================================================================
|
|
9
9
|
|
|
10
10
|
# Load npm scope from project.json (or use project name as default)
|
|
11
|
-
# Use
|
|
11
|
+
# Use FLISK_PROJECT_ROOT env var set by Tilt, fallback to current directory
|
|
12
12
|
def _load_npm_scope():
|
|
13
|
-
project_root = os.environ.get('
|
|
14
|
-
project_json_path = '.
|
|
13
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
14
|
+
project_json_path = '.flisk/project.json'
|
|
15
15
|
if project_root:
|
|
16
16
|
project_json_path = project_root + '/' + project_json_path
|
|
17
17
|
|
|
18
18
|
if os.path.exists(project_json_path):
|
|
19
19
|
_project_json = read_json(project_json_path)
|
|
20
|
-
return _project_json.get('project', {}).get('name', '
|
|
21
|
-
return '
|
|
20
|
+
return _project_json.get('project', {}).get('name', 'flisk-project')
|
|
21
|
+
return 'flisk-project'
|
|
22
22
|
|
|
23
23
|
_NPM_SCOPE = _load_npm_scope()
|
|
24
24
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
# Copyright (c) 2026
|
|
2
|
+
# Copyright (c) 2026 Flisk Landscape contributors
|
|
3
3
|
# SPDX-License-Identifier: MIT
|
|
4
4
|
"""Convert JSON manifest to Tilt-compatible YAML resource"""
|
|
5
5
|
import sys
|
|
@@ -17,7 +17,7 @@ try:
|
|
|
17
17
|
data = json.load(f)
|
|
18
18
|
|
|
19
19
|
# The YAML is a generated, committed mirror used only for Tilt resource tracking. A secret that someone put in service.json must
|
|
20
|
-
# not be copied into it (the JWT secret belongs in the project .env; `
|
|
20
|
+
# not be copied into it (the JWT secret belongs in the project .env; `flisk doctor` warns about it).
|
|
21
21
|
data = {key: value for key, value in data.items() if key not in ("jwtSecret",)}
|
|
22
22
|
|
|
23
23
|
# Deterministic: the mirror is regenerated on every run, so a wall-clock time or random uid would change the file each time.
|
|
@@ -38,7 +38,7 @@ def load_from_file(path):
|
|
|
38
38
|
YAML files are generated from JSON for Tilt resource tracking only.
|
|
39
39
|
"""
|
|
40
40
|
# Prepend project root to relative paths for correct resolution
|
|
41
|
-
project_root = os.environ.get('
|
|
41
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
42
42
|
if project_root and not path.startswith('/'):
|
|
43
43
|
full_path = project_root + '/' + path
|
|
44
44
|
else:
|
|
@@ -136,7 +136,7 @@ def _get_manifest_filename(resource_path):
|
|
|
136
136
|
Returns: filename if exists, None otherwise (triggers synthesis)
|
|
137
137
|
"""
|
|
138
138
|
# Prepend project root to relative paths for correct resolution
|
|
139
|
-
project_root = os.environ.get('
|
|
139
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
140
140
|
if project_root and not resource_path.startswith('/'):
|
|
141
141
|
base_path = project_root + '/' + resource_path
|
|
142
142
|
else:
|
|
@@ -284,7 +284,7 @@ MANIFEST_SCHEMA = {
|
|
|
284
284
|
'description': 'Skip this resource during flisk up entirely (no container is created or started); a Traefik static route wakes it and its dependencies on the first request instead. Requires enable: true.',
|
|
285
285
|
},
|
|
286
286
|
},
|
|
287
|
-
'description': 'On-demand scaling via Sablier: stop idle containers, wake them on the next request. Not recommended for stateful resources (databases) with in-flight writes. (Premium - requires
|
|
287
|
+
'description': 'On-demand scaling via Sablier: stop idle containers, wake them on the next request. Not recommended for stateful resources (databases) with in-flight writes. (Premium - requires FLISK_LICENSE_KEY; see hasSablierLicense() in extension-fetch.ts)',
|
|
288
288
|
},
|
|
289
289
|
}
|
|
290
290
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# memory, instead of Tilt's default, so a warm `flisk up` on a machine with spare
|
|
6
6
|
# capacity builds more than three images at once.
|
|
7
7
|
#
|
|
8
|
-
# Override with
|
|
8
|
+
# Override with FLISK_MAX_PARALLEL_BUILDS=<positive integer>.
|
|
9
9
|
# =============================================================================
|
|
10
10
|
|
|
11
11
|
MIN_PARALLEL_BUILDS = 3
|
|
@@ -42,10 +42,10 @@ def compute_max_parallel_builds(cpus, memory_bytes):
|
|
|
42
42
|
|
|
43
43
|
def configure_build_concurrency():
|
|
44
44
|
"""Calls update_settings once with the chosen max_parallel_updates. Call at Tiltfile load."""
|
|
45
|
-
override = os.environ.get('
|
|
45
|
+
override = os.environ.get('FLISK_MAX_PARALLEL_BUILDS', '').strip()
|
|
46
46
|
if _is_positive_int(override):
|
|
47
47
|
value = int(override)
|
|
48
|
-
print("🧮 Parallel builds: " + str(value) + " (
|
|
48
|
+
print("🧮 Parallel builds: " + str(value) + " (FLISK_MAX_PARALLEL_BUILDS)")
|
|
49
49
|
else:
|
|
50
50
|
resources = _engine_resources()
|
|
51
51
|
if resources == None:
|
|
@@ -37,7 +37,7 @@ def provision_database(resource_name, db_name=None):
|
|
|
37
37
|
|
|
38
38
|
Args:
|
|
39
39
|
resource_name: Service name (e.g., 'users', 'orders')
|
|
40
|
-
db_name: Optional custom database name (defaults to
|
|
40
|
+
db_name: Optional custom database name (defaults to FLISK_{resource_name})
|
|
41
41
|
|
|
42
42
|
Returns:
|
|
43
43
|
local_resource for the database provisioning task
|
|
@@ -155,25 +155,26 @@ def create_db_status_resource(should_enable_db_management):
|
|
|
155
155
|
Create a local_resource for database virtualization status.
|
|
156
156
|
"""
|
|
157
157
|
return local_resource('db-virtualization-status',
|
|
158
|
-
|
|
158
|
+
# Fixed script; names are passed as argv ($1 = host, $2 = user, $3 = database, $4 = project prefix).
|
|
159
|
+
cmd=['sh', '-c', '''
|
|
159
160
|
echo "🗃️ ═══════════════════════════════════════════════════════════════"
|
|
160
161
|
echo "🗃️ DATABASE VIRTUALIZATION STATUS (BigTech Pattern)"
|
|
161
162
|
echo "🗃️ ═══════════════════════════════════════════════════════════════"
|
|
162
163
|
echo ""
|
|
163
164
|
|
|
164
|
-
if ! docker exec
|
|
165
|
+
if ! docker exec $1 pg_isready -U $2 -d $3 >/dev/null 2>&1; then
|
|
165
166
|
echo "⚠️ PostgreSQL container not running"
|
|
166
167
|
exit 0
|
|
167
168
|
fi
|
|
168
169
|
|
|
169
170
|
echo "📊 LOGICAL DATABASES:"
|
|
170
|
-
docker exec
|
|
171
|
+
docker exec $1 psql -U $2 -d $3 -c "
|
|
171
172
|
SELECT
|
|
172
173
|
datname as \\"Database Name\\",
|
|
173
174
|
pg_size_pretty(pg_database_size(datname)) as \\"Size\\",
|
|
174
175
|
(SELECT count(*) FROM pg_stat_activity WHERE datname = d.datname) as \\"Active Connections\\"
|
|
175
176
|
FROM pg_database d
|
|
176
|
-
WHERE datname LIKE
|
|
177
|
+
WHERE datname LIKE '$4_%'
|
|
177
178
|
ORDER BY datname;
|
|
178
179
|
"
|
|
179
180
|
|
|
@@ -184,7 +185,7 @@ echo " ✅ Virtualized: 1 PostgreSQL container × ~512MB = ~512MB RAM"
|
|
|
184
185
|
echo " 📉 SAVINGS: ~98% RAM reduction!"
|
|
185
186
|
echo ""
|
|
186
187
|
echo "🗃️ ═══════════════════════════════════════════════════════════════"
|
|
187
|
-
''',
|
|
188
|
+
''', 'sh', PlatformDockerConstants.DB_HOST, PlatformDockerConstants.DB_USER, PlatformDockerConstants.get_db_name('example'), PlatformDockerConstants.PROJECT_NAME],
|
|
188
189
|
labels=['infra.database', 'virtualization'],
|
|
189
190
|
resource_deps=['postgres'] if should_enable_db_management else [],
|
|
190
191
|
auto_init=False
|
|
@@ -34,7 +34,7 @@ load("../../platform/registries/verdaccio_loader.star", "load_verdaccio")
|
|
|
34
34
|
|
|
35
35
|
def _file_exists(path):
|
|
36
36
|
"""Check if a file exists."""
|
|
37
|
-
result = str(local("test -f
|
|
37
|
+
result = str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", path], quiet=True, echo_off=True)).strip()
|
|
38
38
|
return result == 'yes'
|
|
39
39
|
|
|
40
40
|
|
|
@@ -68,7 +68,7 @@ def _generate_database_management_compose():
|
|
|
68
68
|
return """###############################################################################
|
|
69
69
|
# SYSTEM-GENERATED - DO NOT EDIT
|
|
70
70
|
# Stack feature: database-management
|
|
71
|
-
# Source: .
|
|
71
|
+
# Source: .flisk/project.json stacks.*.services includes "database-management"
|
|
72
72
|
###############################################################################
|
|
73
73
|
|
|
74
74
|
services:
|
|
@@ -99,15 +99,15 @@ networks:
|
|
|
99
99
|
|
|
100
100
|
volumes:
|
|
101
101
|
{name}_postgres_data:
|
|
102
|
-
""".format(name=name, database_network=database_network, host_port=os.environ.get('
|
|
102
|
+
""".format(name=name, database_network=database_network, host_port=os.environ.get('FLISK_POSTGRES_PORT', '15432'), bind_address=os.environ.get('FLISK_BIND_ADDRESS', '127.0.0.1'))
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
def _ensure_database_management_compose(root_prefix, write_fn):
|
|
106
106
|
"""Ensure the database-management stack feature has its compose file.
|
|
107
107
|
|
|
108
108
|
write_fn is expected to be Utils.write_file_if_changed, which prepends
|
|
109
|
-
|
|
110
|
-
the Tiltfile sets
|
|
109
|
+
FLISK_PROJECT_ROOT to relative paths — the same base as root_prefix when
|
|
110
|
+
the Tiltfile sets FLISK_PROJECT_ROOT = PROJECT_ROOT. A custom write_fn that
|
|
111
111
|
does not prepend may write a different file; if the path we return is
|
|
112
112
|
absolute and still missing after the relative write, write that exact
|
|
113
113
|
path once so the exists-check and the write cannot diverge.
|
|
@@ -238,16 +238,16 @@ def _load_infisical(should_enable, root_prefix="", env_file=None):
|
|
|
238
238
|
|
|
239
239
|
def _load_standalone_traefik(root_prefix, env_file, write_fn):
|
|
240
240
|
"""Generate and load a self-contained Traefik compose for standalone projects."""
|
|
241
|
-
compose_rel = ".
|
|
241
|
+
compose_rel = ".flisk/.flisk-out/docker-compose.traefik.yml"
|
|
242
242
|
# The free-tier stub always reports "disabled"; the licensed module reports
|
|
243
243
|
# enabled for a manifest that opts in. Probing it keeps this file free of any
|
|
244
244
|
# license logic while starting the sablier containers only when they can work.
|
|
245
245
|
_, sablier_enabled = sablier_middleware_suffix({"sablier": {"enable": True}}, "probe")
|
|
246
246
|
content = generate_standalone_traefik_compose(
|
|
247
247
|
sablier_enabled,
|
|
248
|
-
os.environ.get('
|
|
249
|
-
os.environ.get('
|
|
250
|
-
os.environ.get('
|
|
248
|
+
os.environ.get('FLISK_HTTP_PORT', '8080'),
|
|
249
|
+
os.environ.get('FLISK_HTTPS_PORT', '8443'),
|
|
250
|
+
os.environ.get('FLISK_BIND_ADDRESS', '127.0.0.1'),
|
|
251
251
|
)
|
|
252
252
|
if write_fn:
|
|
253
253
|
write_fn(compose_rel, content)
|
|
@@ -388,7 +388,7 @@ def _load_golden_image(should_enable, docker_provider, project_root='.'):
|
|
|
388
388
|
|
|
389
389
|
project_root must be passed through here the same way every other
|
|
390
390
|
infra loader below receives it (as root_prefix) - local_resource cmds
|
|
391
|
-
run relative to the Tiltfile's own directory (.
|
|
391
|
+
run relative to the Tiltfile's own directory (.flisk/.flisk-out/), not
|
|
392
392
|
the project root, so an unprefixed project-root-relative path like
|
|
393
393
|
GOLDEN_DOCKERFILE resolves to the wrong file otherwise.
|
|
394
394
|
"""
|
|
@@ -410,7 +410,7 @@ def _generate_golden_dockerfile(should_enable, docker_provider, write_fn):
|
|
|
410
410
|
if not should_enable('golden-image'):
|
|
411
411
|
return
|
|
412
412
|
|
|
413
|
-
dockerfile_path = '.
|
|
413
|
+
dockerfile_path = '.flisk/.flisk-out/golden-layers.Dockerfile'
|
|
414
414
|
content = docker_provider.golden_image.generate_dockerfile()
|
|
415
415
|
write_fn(dockerfile_path, content)
|
|
416
416
|
|
|
@@ -453,7 +453,7 @@ def load_all_infrastructure(should_enable, fix_docker_networks_fn=None, docker_p
|
|
|
453
453
|
_generate_golden_dockerfile(should_enable, docker_provider, write_fn)
|
|
454
454
|
golden_image_resource = _load_golden_image(should_enable, docker_provider, project_root=project_root or '.')
|
|
455
455
|
|
|
456
|
-
# Get project root prefix for paths (e.g., "../../" from .
|
|
456
|
+
# Get project root prefix for paths (e.g., "../../" from .flisk/.flisk-out/)
|
|
457
457
|
# Ensure root_prefix ends with / for proper path concatenation
|
|
458
458
|
root_prefix = project_root if project_root else ""
|
|
459
459
|
if root_prefix and not root_prefix.endswith('/'):
|
|
@@ -9,7 +9,7 @@ load('../../../topologies/tilt/common/utils.star', 'Utils')
|
|
|
9
9
|
|
|
10
10
|
def get_lib_path_from_package_name(ctx, package_name):
|
|
11
11
|
"""
|
|
12
|
-
Converts @
|
|
12
|
+
Converts @flisk/platform-logger -> shared-platform-engineering/platform-logger
|
|
13
13
|
|
|
14
14
|
Returns:
|
|
15
15
|
Tuple of (path, label, tilt_resource_name) or (None, None, None) if not a library
|
|
@@ -94,7 +94,7 @@ def define_library_resource(ctx, name, path, labels, internal_deps=None, consume
|
|
|
94
94
|
or global_config.get('verdaccio_url_local')
|
|
95
95
|
or PlatformDockerConstants.VERDACCIO_URL_DOCKER
|
|
96
96
|
)
|
|
97
|
-
internal_scope = ctx.get('internal_scope', '@
|
|
97
|
+
internal_scope = ctx.get('internal_scope', '@flisk/')
|
|
98
98
|
pkg_name = internal_scope + name
|
|
99
99
|
|
|
100
100
|
if write_fn and generate_vite_fn:
|
|
@@ -115,7 +115,7 @@ def define_library_resource(ctx, name, path, labels, internal_deps=None, consume
|
|
|
115
115
|
if consumer_paths:
|
|
116
116
|
consumer_paths_str = ','.join(consumer_paths)
|
|
117
117
|
|
|
118
|
-
publish_cmd = './engine/scripts/build-and-publish-lib.sh
|
|
118
|
+
publish_cmd = ['./engine/scripts/build-and-publish-lib.sh', path, registry, pkg_name, consumer_paths_str]
|
|
119
119
|
|
|
120
120
|
# Sanitize name to remove invalid characters for Tilt resource names
|
|
121
121
|
# e.g., "introvertic/ui" -> "introvertic-ui"
|
|
@@ -24,7 +24,7 @@ def setup_libraries(ctx, should_enable_fn, ddd_libs, platform_libs, product_libs
|
|
|
24
24
|
Dict mapping package_name -> tilt_resource_name
|
|
25
25
|
"""
|
|
26
26
|
library_map = {}
|
|
27
|
-
internal_scope = ctx.get('internal_scope', '@
|
|
27
|
+
internal_scope = ctx.get('internal_scope', '@flisk/')
|
|
28
28
|
library_roots = ctx.get('library_roots', {})
|
|
29
29
|
print("📚 setup_libraries called for " + str(len(platform_libs) + len(product_libs) + len(ddd_libs)) + " potential libraries")
|
|
30
30
|
|
|
@@ -83,7 +83,7 @@ def _env_file_if_exists(env_file):
|
|
|
83
83
|
""".env is gitignored (no .env.example shipped) across every Flisk example repo, so a
|
|
84
84
|
fresh clone must not hard-require it: docker_compose()'s env_file kwarg type-checks as
|
|
85
85
|
path|string (rejects None), so only return a path when the file actually exists."""
|
|
86
|
-
exists = str(local("
|
|
86
|
+
exists = str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", env_file], quiet=True, echo_off=True)).strip() == 'yes'
|
|
87
87
|
return env_file if exists else None
|
|
88
88
|
|
|
89
89
|
|
|
@@ -104,7 +104,7 @@ def _build_infra_dependencies(resource_name, should_enable, ctx, has_backend=Fal
|
|
|
104
104
|
if should_enable(PlatformDockerConstants.VERDACCIO_RESOURCE_NAME):
|
|
105
105
|
project_root = ctx.get('project_root', '')
|
|
106
106
|
verdaccio_compose = ((project_root.rstrip('/') + '/') if project_root else '') + 'docker-compose.verdaccio.yml'
|
|
107
|
-
if str(local("
|
|
107
|
+
if str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", verdaccio_compose], quiet=True, echo_off=True)).strip() == 'yes':
|
|
108
108
|
infra_deps.append(PlatformDockerConstants.VERDACCIO_RESOURCE_NAME)
|
|
109
109
|
if should_enable('golden-image') and ctx.get('golden_image_resource'):
|
|
110
110
|
infra_deps.append(ctx['golden_image_resource'])
|
|
@@ -226,7 +226,7 @@ def resource_defers_start(manifest):
|
|
|
226
226
|
"""True when a manifest opts into `sablier.enable` + `sablier.deferStart`
|
|
227
227
|
AND the licensed sablier module is actually active.
|
|
228
228
|
|
|
229
|
-
deferStart stays behind the same
|
|
229
|
+
deferStart stays behind the same FLISK_LICENSE_KEY gate as the rest of
|
|
230
230
|
`sablier` (an explicit product decision, not just the opt-in manifest
|
|
231
231
|
flag): the free-tier stub's sablier_middleware_suffix() always reports
|
|
232
232
|
`enabled=False` regardless of what the manifest says, so checking through
|
|
@@ -310,7 +310,7 @@ def _register_replicas(config, auto_init_apps):
|
|
|
310
310
|
def _live_update_sync_source(project_root, full_res_path, sync_path):
|
|
311
311
|
"""Local path Tilt watches for a live-update sync.
|
|
312
312
|
|
|
313
|
-
Tilt resolves sync() local paths against the Tiltfile directory (.
|
|
313
|
+
Tilt resolves sync() local paths against the Tiltfile directory (.flisk/.flisk-out), not
|
|
314
314
|
the docker_build context, so a project-relative path never matches the changed files
|
|
315
315
|
and every edit falls back to a full image rebuild ("Found file(s) not matching any
|
|
316
316
|
sync"). Anchor it at the project root, like the Dockerfile and build context.
|
|
@@ -335,7 +335,7 @@ def _build_live_update_rules(res_path, full_res_path, syncs, project_root='', la
|
|
|
335
335
|
return []
|
|
336
336
|
|
|
337
337
|
if go_live_reload:
|
|
338
|
-
# Opted-in Go development loop: sync the sources into the development image, where the
|
|
338
|
+
# Opted-in Go development loop: sync the sources into the development image, where the flisk-go-watch script rebuilds and restarts.
|
|
339
339
|
# Dependency and Dockerfile changes cannot be picked up by a restart, so they fall back to a full image rebuild.
|
|
340
340
|
source_dir = _live_update_sync_source(project_root, full_res_path, '')
|
|
341
341
|
return [
|
|
@@ -442,14 +442,18 @@ def _register_deferred_image_prebuild(config, auto_init_apps):
|
|
|
442
442
|
ignore_content = TypescriptBuilders.prebuild_dockerignore(dockerfile, project_root, config['res_path'])
|
|
443
443
|
# BuildKit reads `<dockerfile>.dockerignore` for `-f <dockerfile>`; the
|
|
444
444
|
# original Dockerfile already has a (denylist) one, hence the copy.
|
|
445
|
-
cmd =
|
|
446
|
-
"
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
445
|
+
cmd = [
|
|
446
|
+
"sh", "-c",
|
|
447
|
+
'cp "$1" "$2" && printf "%s" "$3" > "$2.dockerignore"' +
|
|
448
|
+
' && docker build --network host --target "$4" -f "$2" -t "$5" "$6"',
|
|
449
|
+
"sh",
|
|
450
|
+
dockerfile,
|
|
451
|
+
prebuild_dockerfile,
|
|
452
|
+
ignore_content,
|
|
453
|
+
target,
|
|
454
|
+
_app_image_name(config['resource_name'], config['res_name']),
|
|
455
|
+
project_root or '.',
|
|
456
|
+
]
|
|
453
457
|
local_resource(
|
|
454
458
|
name=config['res_name'] + '-image',
|
|
455
459
|
cmd=cmd,
|
|
@@ -494,23 +498,22 @@ def _register_run_only_resource(config, resource_path, compose_project_name, aut
|
|
|
494
498
|
compose_file = root + '/' + compose_file
|
|
495
499
|
port_override = root + '/' + port_override
|
|
496
500
|
env_file = project_env_file(root)
|
|
497
|
-
compose_files = '-f
|
|
498
|
-
if str(local("
|
|
499
|
-
compose_files = compose_files + '
|
|
501
|
+
compose_files = ['-f', compose_file]
|
|
502
|
+
if str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", port_override], quiet=True, echo_off=True)).strip() == 'yes':
|
|
503
|
+
compose_files = compose_files + ['-f', port_override]
|
|
500
504
|
# .env is gitignored (no .env.example shipped) across every Flisk example repo, so a
|
|
501
505
|
# fresh clone must not hard-require it: only pass --env-file when it actually exists.
|
|
502
|
-
env_file_flag =
|
|
503
|
-
if str(local("
|
|
504
|
-
env_file_flag = '
|
|
506
|
+
env_file_flag = []
|
|
507
|
+
if str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", env_file], quiet=True, echo_off=True)).strip() == 'yes':
|
|
508
|
+
env_file_flag = ['--env-file', env_file]
|
|
509
|
+
# Built as an argv list (extend, not `+`) so no argument is ever joined into shell text.
|
|
510
|
+
run_only_argv = ['docker', 'compose', '-p', compose_project_name]
|
|
511
|
+
run_only_argv.extend(compose_files)
|
|
512
|
+
run_only_argv.extend(env_file_flag)
|
|
513
|
+
run_only_argv.extend(['up', '-d', '--no-build', config['res_name']])
|
|
505
514
|
local_resource(
|
|
506
515
|
name=config['res_name'] + '-run-only',
|
|
507
|
-
cmd=
|
|
508
|
-
+ compose_project_name
|
|
509
|
-
+ ' '
|
|
510
|
-
+ compose_files
|
|
511
|
-
+ env_file_flag
|
|
512
|
-
+ ' up -d --no-build '
|
|
513
|
-
+ config['res_name'],
|
|
516
|
+
cmd=run_only_argv,
|
|
514
517
|
labels=config['labels'] + ['run-only'],
|
|
515
518
|
# The run-only Compose command uses the image produced by the main
|
|
516
519
|
# resource. Keep it behind that resource so --no-build cannot race
|
|
@@ -604,7 +607,12 @@ def _register_frontend_typecheck(res, service_dir, typecheck_cmd):
|
|
|
604
607
|
"""
|
|
605
608
|
local_resource(
|
|
606
609
|
name=res['name'] + '-typecheck',
|
|
607
|
-
|
|
610
|
+
# Fixed script, variable parts passed as argv ($1 = service dir, $2 = typecheck command), never spliced into the shell text.
|
|
611
|
+
cmd=[
|
|
612
|
+
'sh', '-c',
|
|
613
|
+
'cd "$1" && { bunx tsc --version >/dev/null 2>&1 || { echo "typecheck needs host dependencies: run bun install in $1"; exit 1; }; } && eval "$2"',
|
|
614
|
+
'sh', service_dir, typecheck_cmd,
|
|
615
|
+
],
|
|
608
616
|
deps=[service_dir + '/src', service_dir + '/tsconfig.json'],
|
|
609
617
|
labels=['app.' + res['name'], 'typecheck'],
|
|
610
618
|
# tsc --noEmit writes no files, so it can run alongside the image builds.
|
|
@@ -844,7 +852,7 @@ def register_compose_resources(resource_config, ctx, runtime_flags, manifest_sta
|
|
|
844
852
|
_docker_compose_app(compose_file, compose_project_name, env_file)
|
|
845
853
|
port_override_rel = resource_path + '/' + OUTPUT.AUTOGENERATED_FOLDER + '/docker-compose.port-override.yml'
|
|
846
854
|
port_override = project_root + '/' + port_override_rel if project_root else port_override_rel
|
|
847
|
-
if str(local("
|
|
855
|
+
if str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", port_override], quiet=True, echo_off=True)).strip() == 'yes':
|
|
848
856
|
debug_log("COMPOSE: Applying port override {}".format(port_override))
|
|
849
857
|
_docker_compose_app(port_override, compose_project_name, env_file)
|
|
850
858
|
else:
|
|
@@ -27,7 +27,7 @@ def _find_backend_resource_path(resource_config):
|
|
|
27
27
|
continue
|
|
28
28
|
|
|
29
29
|
candidate = resource_path + '/' + res['name']
|
|
30
|
-
prisma_check = local("
|
|
30
|
+
prisma_check = local(["sh", "-c", 'test -d "$1/prisma" && echo yes || echo no', "sh", candidate], quiet=True)
|
|
31
31
|
prisma_check_stdout = getattr(prisma_check, "stdout", prisma_check)
|
|
32
32
|
has_prisma = str(prisma_check_stdout).strip() == 'yes'
|
|
33
33
|
|
package/{engine → runtime/engine}/topologies/tilt/resources/orchestrator/generators/frontend.star
RENAMED
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
# =============================================================================
|
|
9
9
|
|
|
10
10
|
# Load npm scope from project.json
|
|
11
|
-
# Use
|
|
11
|
+
# Use FLISK_PROJECT_ROOT env var set by Tilt, fallback to current directory
|
|
12
12
|
def _load_npm_scope():
|
|
13
|
-
project_root = os.environ.get('
|
|
14
|
-
project_json_path = '.
|
|
13
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
14
|
+
project_json_path = '.flisk/project.json'
|
|
15
15
|
if project_root:
|
|
16
16
|
project_json_path = project_root + '/' + project_json_path
|
|
17
17
|
|
|
18
18
|
if os.path.exists(project_json_path):
|
|
19
19
|
_project_json = read_json(project_json_path)
|
|
20
|
-
return _project_json.get('project', {}).get('name', '
|
|
21
|
-
return '
|
|
20
|
+
return _project_json.get('project', {}).get('name', 'flisk-project')
|
|
21
|
+
return 'flisk-project'
|
|
22
22
|
|
|
23
23
|
_NPM_SCOPE = _load_npm_scope()
|
|
24
24
|
|
|
@@ -484,8 +484,8 @@ def _generate_yaml_manifest(resource_path, manifest, write_file):
|
|
|
484
484
|
|
|
485
485
|
# Check if YAML already exists and is up-to-date by comparing with JSON
|
|
486
486
|
json_path = resource_path + "/" + MANIFEST_FILENAME
|
|
487
|
-
json_mtime = local("stat -f %m "
|
|
488
|
-
yaml_mtime = local("stat -f %m "
|
|
487
|
+
json_mtime = local(["sh", "-c", "stat -f %m \"$1\" 2>/dev/null || stat -c %Y \"$1\" 2>/dev/null || echo 0", "sh", json_path], quiet=True)
|
|
488
|
+
yaml_mtime = local(["sh", "-c", "stat -f %m \"$1\" 2>/dev/null || stat -c %Y \"$1\" 2>/dev/null || echo 0", "sh", yaml_path], quiet=True)
|
|
489
489
|
|
|
490
490
|
if str(json_mtime).strip() <= str(yaml_mtime).strip() and yaml_mtime != "0":
|
|
491
491
|
# YAML is up-to-date, skip generation
|
|
@@ -493,9 +493,9 @@ def _generate_yaml_manifest(resource_path, manifest, write_file):
|
|
|
493
493
|
|
|
494
494
|
# Generate YAML using the json_to_yaml.py converter
|
|
495
495
|
# NOTE: Path relative to Flisk CLI installation root (where this file is located)
|
|
496
|
-
# json_to_yaml.py is in engine/topologies/tilt/manifest/ relative to
|
|
496
|
+
# json_to_yaml.py is in engine/topologies/tilt/manifest/ relative to flisk-cli root
|
|
497
497
|
converter_path = "engine/topologies/tilt/manifest/json_to_yaml.py"
|
|
498
|
-
yaml_content = str(local("python3
|
|
498
|
+
yaml_content = str(local(["python3", converter_path, json_path], quiet=True)).strip()
|
|
499
499
|
write_file(yaml_path, yaml_content)
|
|
500
500
|
|
|
501
501
|
|