@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
|
@@ -128,7 +128,7 @@ def get_synthesis_config():
|
|
|
128
128
|
|
|
129
129
|
# Database naming pattern: {project}_{domain}_{resource_function}
|
|
130
130
|
# Example: services/product/users/user-management-backend -> {project}_user_management
|
|
131
|
-
"database_name_pattern": "
|
|
131
|
+
"database_name_pattern": "FLISK_{domain}_{function}",
|
|
132
132
|
|
|
133
133
|
# Backend name pattern for frontends: {domain}-management-backend
|
|
134
134
|
"backend_name_pattern": "{domain}-management-backend",
|
|
@@ -144,7 +144,7 @@ def get_synthesis_config():
|
|
|
144
144
|
# =============================================================================
|
|
145
145
|
# DOMAIN CONFIGURATION
|
|
146
146
|
# =============================================================================
|
|
147
|
-
# Business stacks are defined in .
|
|
147
|
+
# Business stacks are defined in .flisk/project.json per project.
|
|
148
148
|
# This function returns an empty list - stacks are discovered dynamically.
|
|
149
149
|
|
|
150
150
|
|
|
@@ -152,7 +152,7 @@ def get_valid_stacks():
|
|
|
152
152
|
"""Return list of valid business stacks from project config.
|
|
153
153
|
|
|
154
154
|
Returns:
|
|
155
|
-
list: Valid stack names (loaded from .
|
|
155
|
+
list: Valid stack names (loaded from .flisk/project.json)
|
|
156
156
|
"""
|
|
157
157
|
# Stacks are project-specific and loaded from project.json
|
|
158
158
|
# Return empty list - actual stacks discovered from filesystem
|
|
@@ -213,7 +213,7 @@ def get_valid_resource_features():
|
|
|
213
213
|
"grpc",
|
|
214
214
|
"vite-node",
|
|
215
215
|
"maintenance",
|
|
216
|
-
# Premium (requires
|
|
216
|
+
# Premium (requires FLISK_LICENSE_KEY) - see generate_backend_path_aliases()
|
|
217
217
|
# in engine/topologies/tilt/generators/vite/helpers.star
|
|
218
218
|
"ddd",
|
|
219
219
|
]
|
|
@@ -265,7 +265,7 @@ def get_dependency_resolution_config():
|
|
|
265
265
|
|
|
266
266
|
# Library dependency patterns (package.json prefixes)
|
|
267
267
|
"library_dependency_prefixes": [
|
|
268
|
-
"@
|
|
268
|
+
"@flisk/",
|
|
269
269
|
],
|
|
270
270
|
|
|
271
271
|
# Default internal dependencies for service types
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# =============================================================================
|
|
2
|
-
# 🎯
|
|
2
|
+
# 🎯 Flisk-DISCOVERY - Service Discovery Plugin
|
|
3
3
|
# =============================================================================
|
|
4
|
-
# This is the Tiltfile entry point for the
|
|
4
|
+
# This is the Tiltfile entry point for the flisk-discovery repo.
|
|
5
5
|
# It exports manifest loading, registry, and auto-discovery daemon.
|
|
6
6
|
#
|
|
7
7
|
# Usage:
|
|
8
|
-
# v1alpha1.extension_repo(name='
|
|
9
|
-
# load('ext://
|
|
8
|
+
# v1alpha1.extension_repo(name='flisk-discovery', url='https://github.com/flisk-sh/flisk')
|
|
9
|
+
# load('ext://flisk-discovery', 'get_discovery_path', 'run_daemon', ...)
|
|
10
10
|
# =============================================================================
|
|
11
11
|
|
|
12
12
|
# Constants
|
|
@@ -55,4 +55,4 @@ def get_daemon_command():
|
|
|
55
55
|
"""Return the command to run the discovery daemon."""
|
|
56
56
|
return 'python3 ./resource_snapshot.py daemon'
|
|
57
57
|
|
|
58
|
-
print("✅
|
|
58
|
+
print("✅ Flisk Discovery loaded: manifest scanning and auto-discovery")
|
|
@@ -9,7 +9,7 @@ load("./constants.star", "RESOURCES_ROOT")
|
|
|
9
9
|
load("../engine/topologies/platform/docker/constants.star", "PlatformDockerConstants")
|
|
10
10
|
|
|
11
11
|
# NOTE: DEFAULTS and focus lists are now loaded dynamically in resource_registry.star
|
|
12
|
-
# from the project's spec.master (using
|
|
12
|
+
# from the project's spec.master (using FLISK_PROJECT_ROOT environment variable).
|
|
13
13
|
# This allows per-project resource configuration.
|
|
14
14
|
|
|
15
15
|
# Default empty values - will be populated by _load_project_defaults() in resource_registry.star
|
|
@@ -31,13 +31,13 @@ def load_project_defaults(project_root):
|
|
|
31
31
|
|
|
32
32
|
# Check multiple locations for spec.master (in order of preference)
|
|
33
33
|
spec_paths = [
|
|
34
|
-
project_root + "/.
|
|
34
|
+
project_root + "/.flisk/.flisk-out/generated/spec.master", # New unified output folder
|
|
35
35
|
project_root + "/spec.master", # Original location (legacy)
|
|
36
36
|
]
|
|
37
37
|
|
|
38
38
|
spec_path = None
|
|
39
39
|
for path in spec_paths:
|
|
40
|
-
check_cmd = "test -f
|
|
40
|
+
check_cmd = ["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", path]
|
|
41
41
|
exists = str(local(check_cmd, quiet=True, echo_off=True)).strip() == 'yes'
|
|
42
42
|
if exists:
|
|
43
43
|
spec_path = path
|
|
@@ -141,7 +141,7 @@ def load_project_defaults(project_root):
|
|
|
141
141
|
# 🎛️ RESOURCE DEFAULTS
|
|
142
142
|
# -----------------------------------------------------------------------------
|
|
143
143
|
# LOADED FROM: spec.master (searched in order):
|
|
144
|
-
# 1. .
|
|
144
|
+
# 1. .flisk/.flisk-out/generated/spec.master (new unified output folder)
|
|
145
145
|
# 2. spec.master (legacy location in project root)
|
|
146
146
|
# PURPOSE: Single source of truth for resource enable/disable configuration
|
|
147
147
|
#
|
|
@@ -156,7 +156,7 @@ def get_global_config():
|
|
|
156
156
|
)
|
|
157
157
|
# Verdaccio is a premium feature — only enabled when a license key is present.
|
|
158
158
|
# Without a key, scoped packages fall back to the public npm registry.
|
|
159
|
-
verdaccio_license_key = os.environ.get("
|
|
159
|
+
verdaccio_license_key = os.environ.get("FLISK_LICENSE_KEY", "")
|
|
160
160
|
verdaccio_enabled = verdaccio_license_key != ""
|
|
161
161
|
return {
|
|
162
162
|
"verdaccio_url_local": PlatformDockerConstants.VERDACCIO_URL_LOCAL,
|
|
@@ -22,18 +22,18 @@ RESOURCES_ROOT_PREFIX = ""
|
|
|
22
22
|
# Check for project-specific discovery patterns
|
|
23
23
|
def _get_project_discovery_roots():
|
|
24
24
|
"""Get discovery roots from project spec.master if available."""
|
|
25
|
-
project_root = os.environ.get('
|
|
25
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
26
26
|
if not project_root:
|
|
27
27
|
return []
|
|
28
28
|
|
|
29
29
|
# Try to read spec.master for custom discovery patterns
|
|
30
30
|
spec_paths = [
|
|
31
|
-
project_root + "/.
|
|
31
|
+
project_root + "/.flisk/.flisk-out/spec.master",
|
|
32
32
|
project_root + "/spec.master",
|
|
33
33
|
]
|
|
34
34
|
|
|
35
35
|
for spec_path in spec_paths:
|
|
36
|
-
check_cmd = "test -f
|
|
36
|
+
check_cmd = ["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", spec_path]
|
|
37
37
|
exists = str(local(check_cmd, quiet=True, echo_off=True)).strip() == 'yes'
|
|
38
38
|
if exists:
|
|
39
39
|
# Read and parse spec.master for RESOURCE_PATTERNS
|
|
@@ -60,13 +60,13 @@ def _get_project_discovery_roots():
|
|
|
60
60
|
_PROJECT_DISCOVERY_ROOTS = _get_project_discovery_roots()
|
|
61
61
|
|
|
62
62
|
def _get_enabled_project_stacks():
|
|
63
|
-
"""Read enabled stack names from .
|
|
64
|
-
project_root = os.environ.get('
|
|
63
|
+
"""Read enabled stack names from .flisk/project.json phases.*.enabledStacks."""
|
|
64
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
65
65
|
if not project_root:
|
|
66
66
|
return []
|
|
67
67
|
|
|
68
|
-
project_config_path = project_root + "/.
|
|
69
|
-
exists = str(local("test -f
|
|
68
|
+
project_config_path = project_root + "/.flisk/project.json"
|
|
69
|
+
exists = str(local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", project_config_path], quiet=True, echo_off=True)).strip() == 'yes'
|
|
70
70
|
if not exists:
|
|
71
71
|
return []
|
|
72
72
|
|
|
@@ -107,15 +107,15 @@ _DISCOVERY_ROOTS_RAW = _expand_enabled_stack_roots(_PROJECT_DISCOVERY_ROOTS) if
|
|
|
107
107
|
"cli-platform-engineering", # cli-platform-engineering/*/
|
|
108
108
|
]
|
|
109
109
|
|
|
110
|
-
# SAFETY: Filter out
|
|
110
|
+
# SAFETY: Filter out flisk-cli's own directories to prevent self-modification
|
|
111
111
|
# The CLI should never scan or write to its own installation directory
|
|
112
112
|
def _filter_cli_dirs(roots):
|
|
113
|
-
"""Remove
|
|
113
|
+
"""Remove flisk-cli internal directories from scan roots."""
|
|
114
114
|
filtered = []
|
|
115
115
|
for root in roots:
|
|
116
|
-
# Skip if path contains
|
|
117
|
-
if "
|
|
118
|
-
print("⚠️ Skipping
|
|
116
|
+
# Skip if path contains flisk-cli internal paths
|
|
117
|
+
if "flisk-cli" in root and "discovery" in root:
|
|
118
|
+
print("⚠️ Skipping flisk-cli internal directory: {}".format(root))
|
|
119
119
|
continue
|
|
120
120
|
if root.startswith("discovery/") or root == "discovery":
|
|
121
121
|
print("⚠️ Skipping discovery directory: {}".format(root))
|
|
@@ -151,7 +151,7 @@ MAX_SCAN_TIMEOUT_MS = 5000 # 5 seconds per root (warn if exceeded)
|
|
|
151
151
|
MAX_MANIFESTS_PER_ROOT = 110 # Warn if root has more manifests
|
|
152
152
|
|
|
153
153
|
# Autogenerated files directory (relative to this file's location)
|
|
154
|
-
PRODUCT_SNAPSHOT_DIR = ".
|
|
154
|
+
PRODUCT_SNAPSHOT_DIR = ".flisk/.flisk-out/product_autogenerated_resource_manifests"
|
|
155
155
|
|
|
156
156
|
PRODUCT_SNAPSHOT_FILES = {
|
|
157
157
|
"services": "services.autogenerated.star",
|
|
@@ -162,6 +162,6 @@ PRODUCT_SNAPSHOT_FILES = {
|
|
|
162
162
|
"readme": "README.autogenerated.md",
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
PRODUCT_TOPOLOGY_DIR = ".
|
|
165
|
+
PRODUCT_TOPOLOGY_DIR = ".flisk/.flisk-out/product_autogenerated_services_list"
|
|
166
166
|
PRODUCT_STACKS_INDEX_FILE = "stacks.autogenerated.star"
|
|
167
167
|
PRODUCT_STACK_RESOURCES_FILE = "resources.autogenerated.star"
|
|
@@ -35,7 +35,7 @@ def deterministic_find(path, pattern):
|
|
|
35
35
|
"""
|
|
36
36
|
# Always use | sort to ensure alphabetical ordering
|
|
37
37
|
# This makes output invariant to filesystem ordering (ext4 vs APFS vs NTFS)
|
|
38
|
-
cmd = "find
|
|
38
|
+
cmd = ["sh", "-c", 'find "$1" -type f -name "$2" 2>/dev/null | sort', "sh", path, pattern]
|
|
39
39
|
result = str(local(cmd, quiet=True, echo_off=True)).strip()
|
|
40
40
|
if result:
|
|
41
41
|
return result.split('\n')
|
|
@@ -172,7 +172,7 @@ def _handle_new_service(
|
|
|
172
172
|
def _file_exists(path):
|
|
173
173
|
"""Check if a file exists."""
|
|
174
174
|
result = local(
|
|
175
|
-
"test -f
|
|
175
|
+
["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", path],
|
|
176
176
|
quiet=True,
|
|
177
177
|
echo_off=True
|
|
178
178
|
)
|
|
@@ -185,7 +185,7 @@ def time_now():
|
|
|
185
185
|
|
|
186
186
|
def sleep(seconds):
|
|
187
187
|
"""Sleep for specified seconds."""
|
|
188
|
-
local("sleep
|
|
188
|
+
local(["sleep", str(seconds)], quiet=True, echo_off=True)
|
|
189
189
|
|
|
190
190
|
# Export daemon functions
|
|
191
191
|
DiscoveryDaemon = struct(
|
|
@@ -50,17 +50,17 @@ def _to_project_relative_path(path, project_root):
|
|
|
50
50
|
"""
|
|
51
51
|
if not path:
|
|
52
52
|
return path
|
|
53
|
-
root = project_root if project_root else os.environ.get("
|
|
53
|
+
root = project_root if project_root else os.environ.get("FLISK_PROJECT_ROOT", ".")
|
|
54
54
|
# Already project-relative (including ../sibling/...)
|
|
55
55
|
if not path.startswith("/"):
|
|
56
56
|
return path
|
|
57
|
-
cmd =
|
|
58
|
-
"python3
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
cmd = [
|
|
58
|
+
"python3",
|
|
59
|
+
"-c",
|
|
60
|
+
"import os, sys; print(os.path.relpath(os.path.realpath(sys.argv[1]), os.path.realpath(sys.argv[2])))",
|
|
61
|
+
path,
|
|
62
|
+
root,
|
|
63
|
+
]
|
|
64
64
|
relative = str(local(cmd, quiet=True, echo_off=True)).strip()
|
|
65
65
|
if relative:
|
|
66
66
|
return relative
|
|
@@ -250,13 +250,13 @@ def _scan_resources():
|
|
|
250
250
|
seen_paths[path] = True
|
|
251
251
|
manifest_paths.append(path)
|
|
252
252
|
|
|
253
|
-
# CRITICAL FIX: Filter out
|
|
254
|
-
# This prevents
|
|
255
|
-
def
|
|
256
|
-
"""Check if path is within
|
|
253
|
+
# CRITICAL FIX: Filter out flisk-cli internal paths to prevent self-scanning
|
|
254
|
+
# This prevents flisk-cli from discovering its own internal test stubs
|
|
255
|
+
def _is_flisk_cli_internal_path(path):
|
|
256
|
+
"""Check if path is within flisk-cli's own directory structure."""
|
|
257
257
|
internal_markers = [
|
|
258
|
-
"
|
|
259
|
-
"
|
|
258
|
+
"flisk-cli/discovery/services/",
|
|
259
|
+
"flisk-cli/discovery/identity-",
|
|
260
260
|
]
|
|
261
261
|
for marker in internal_markers:
|
|
262
262
|
if marker in path:
|
|
@@ -265,8 +265,8 @@ def _scan_resources():
|
|
|
265
265
|
|
|
266
266
|
filtered_manifest_paths = []
|
|
267
267
|
for path in manifest_paths:
|
|
268
|
-
if
|
|
269
|
-
print("⚠️ Skipping
|
|
268
|
+
if _is_flisk_cli_internal_path(path):
|
|
269
|
+
print("⚠️ Skipping flisk-cli internal stub: {}".format(path))
|
|
270
270
|
continue
|
|
271
271
|
filtered_manifest_paths.append(path)
|
|
272
272
|
|
|
@@ -275,7 +275,7 @@ def _scan_resources():
|
|
|
275
275
|
if not manifest_paths:
|
|
276
276
|
return resources
|
|
277
277
|
|
|
278
|
-
project_root = os.environ.get("
|
|
278
|
+
project_root = os.environ.get("FLISK_PROJECT_ROOT", ".")
|
|
279
279
|
|
|
280
280
|
for manifest_path in manifest_paths:
|
|
281
281
|
# manifest_path may be absolute (legacy find) or project-relative.
|
|
@@ -9,8 +9,8 @@ features:
|
|
|
9
9
|
healthCheck: True
|
|
10
10
|
healthCheckPath: /api/v1/health
|
|
11
11
|
params:
|
|
12
|
-
BASE_URL: http://identity.backend.
|
|
13
|
-
EMAIL_FROM: noreply@
|
|
12
|
+
BASE_URL: http://identity.backend.flisk-project.local
|
|
13
|
+
EMAIL_FROM: noreply@flisk-project.local
|
|
14
14
|
UPSTASH_REDIS_REST_URL: http://redis:6379
|
|
15
15
|
path: identity-management-backend
|
|
16
16
|
playwright: True
|
|
@@ -168,7 +168,7 @@ def validate_resource_structure(resource_path):
|
|
|
168
168
|
for filename in required_files:
|
|
169
169
|
filepath = resource_path + "/" + filename
|
|
170
170
|
result = local(
|
|
171
|
-
"test -f
|
|
171
|
+
["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", filepath],
|
|
172
172
|
quiet=True,
|
|
173
173
|
echo_off=True
|
|
174
174
|
)
|
|
@@ -16,14 +16,14 @@ def discover_json_manifests(root_path):
|
|
|
16
16
|
|
|
17
17
|
Args:
|
|
18
18
|
root_path: Path relative to project root (e.g., "services/product")
|
|
19
|
-
or absolute path. Uses
|
|
19
|
+
or absolute path. Uses FLISK_PROJECT_ROOT env var if set.
|
|
20
20
|
Supports glob patterns like "identity-*" for flat structures.
|
|
21
21
|
|
|
22
22
|
Returns:
|
|
23
23
|
List of manifest file paths (strings)
|
|
24
24
|
"""
|
|
25
25
|
# Get project root from environment variable set by main Tiltfile
|
|
26
|
-
project_root = os.environ.get('
|
|
26
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '.')
|
|
27
27
|
|
|
28
28
|
# Check if root_path contains glob patterns
|
|
29
29
|
if '*' in root_path or '?' in root_path:
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
def autodiscover_libraries(root_path, prefix):
|
|
13
13
|
libs = []
|
|
14
|
-
result = str(local("
|
|
14
|
+
result = str(local(["sh", "-c", 'ls -d "$1"/"$2"*/ 2>/dev/null || true', "sh", root_path, prefix], quiet=True, echo_off=True))
|
|
15
15
|
|
|
16
16
|
if result:
|
|
17
17
|
for line in result.strip().split("\n"):
|
|
@@ -26,7 +26,7 @@ def _check_prisma_folder(resource_path):
|
|
|
26
26
|
Check if prisma/ directory exists in resource path (silent).
|
|
27
27
|
Used to auto-detect has_migrator when not in features.
|
|
28
28
|
"""
|
|
29
|
-
check_cmd = "test -d
|
|
29
|
+
check_cmd = ["sh", "-c", 'test -d "$1/prisma" && echo yes || echo no', "sh", resource_path]
|
|
30
30
|
result = str(local(check_cmd, quiet=True, echo_off=True)).strip()
|
|
31
31
|
return result == 'yes'
|
|
32
32
|
|
|
@@ -91,7 +91,7 @@ def load_manifest(resource_path, persist_to_disk=False):
|
|
|
91
91
|
manifest_path = None
|
|
92
92
|
|
|
93
93
|
# Prepend project root to relative paths for correct resolution
|
|
94
|
-
project_root = os.environ.get('
|
|
94
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
95
95
|
if project_root and not resource_path.startswith('/'):
|
|
96
96
|
base_path = project_root + '/' + resource_path
|
|
97
97
|
else:
|
|
@@ -252,12 +252,12 @@ def _apply_manifest_defaults(manifest, resource_path):
|
|
|
252
252
|
dockerfile_path = resource_path + '/' + build_context + '/' + custom_dockerfile
|
|
253
253
|
else:
|
|
254
254
|
dockerfile_path = resource_path + '/' + custom_dockerfile
|
|
255
|
-
# BUG FIX: Run check from project root since Tilt may run from .
|
|
256
|
-
project_root = os.environ.get('
|
|
255
|
+
# BUG FIX: Run check from project root since Tilt may run from .flisk/.flisk-out/
|
|
256
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
257
257
|
if project_root:
|
|
258
|
-
dockerfile_exists = local("
|
|
258
|
+
dockerfile_exists = local(["sh", "-c", 'cd "$1" && test -f "$2" && echo yes || echo no', "sh", project_root, dockerfile_path], quiet=True, echo_off=True)
|
|
259
259
|
else:
|
|
260
|
-
dockerfile_exists = local("test -f
|
|
260
|
+
dockerfile_exists = local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", dockerfile_path], quiet=True, echo_off=True)
|
|
261
261
|
if str(dockerfile_exists).strip() != 'yes':
|
|
262
262
|
fail("""
|
|
263
263
|
❌ ═══════════════════════════════════════════════════════════════════
|
|
@@ -411,7 +411,7 @@ def get_manifest_filename(resource_path):
|
|
|
411
411
|
"""
|
|
412
412
|
# Check for manifest file (service.json)
|
|
413
413
|
manifest_path = resource_path + '/' + MANIFEST_FILENAME
|
|
414
|
-
if local("test -f
|
|
414
|
+
if local(["sh", "-c", 'test -f "$1" && echo yes || echo no', "sh", manifest_path], quiet=True, echo_off=True) == 'yes':
|
|
415
415
|
return MANIFEST_FILENAME
|
|
416
416
|
|
|
417
417
|
# Manifest not found - synthesis will be used
|
|
@@ -37,7 +37,7 @@ def _load_and_normalize(manifest_path, warn_only=True):
|
|
|
37
37
|
Normalized manifest dict or None on error (if warn_only=True)
|
|
38
38
|
"""
|
|
39
39
|
# Prepend project root to relative paths for correct resolution
|
|
40
|
-
project_root = os.environ.get('
|
|
40
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
41
41
|
if project_root and not manifest_path.startswith('/'):
|
|
42
42
|
full_path = project_root + '/' + manifest_path
|
|
43
43
|
else:
|
|
@@ -79,7 +79,7 @@ def _load_and_normalize(manifest_path, warn_only=True):
|
|
|
79
79
|
|
|
80
80
|
# BUG FIX: Normalize various path patterns to project-relative paths
|
|
81
81
|
# Pattern 1: Worktrees - .worktrees/task1-dry/services/platform/...
|
|
82
|
-
# Pattern 2: Flisk output - .
|
|
82
|
+
# Pattern 2: Flisk output - .flisk/.flisk-out/../.. or .flisk/.flisk-out/../../path
|
|
83
83
|
|
|
84
84
|
if resource_path.startswith('.worktrees/'):
|
|
85
85
|
# Extract the part after the worktree name
|
|
@@ -92,15 +92,15 @@ def _load_and_normalize(manifest_path, warn_only=True):
|
|
|
92
92
|
parts = after_worktree.split('/')
|
|
93
93
|
if len(parts) >= 3:
|
|
94
94
|
resource_path = '/'.join(parts[2:])
|
|
95
|
-
elif '.
|
|
96
|
-
# Handle Flisk output paths like: /path/to/.
|
|
97
|
-
|
|
98
|
-
if
|
|
99
|
-
|
|
100
|
-
if
|
|
101
|
-
|
|
102
|
-
resource_path =
|
|
103
|
-
elif resource_path.endswith('.
|
|
95
|
+
elif '.flisk/.flisk-out/../..' in resource_path:
|
|
96
|
+
# Handle Flisk output paths like: /path/to/.flisk/.flisk-out/../.. or .flisk/.flisk-out/../../services/...
|
|
97
|
+
flisk_idx = resource_path.find('.flisk/.flisk-out/../..')
|
|
98
|
+
if flisk_idx != -1:
|
|
99
|
+
after_flisk = resource_path[flisk_idx + len('.flisk/.flisk-out/../..'):]
|
|
100
|
+
if after_flisk.startswith('/'):
|
|
101
|
+
after_flisk = after_flisk[1:]
|
|
102
|
+
resource_path = after_flisk
|
|
103
|
+
elif resource_path.endswith('.flisk/.flisk-out/../..'):
|
|
104
104
|
# Handle bare Flisk output path that ends with just the resolution pattern
|
|
105
105
|
resource_path = ''
|
|
106
106
|
|
|
@@ -150,10 +150,7 @@ def _discover_manifests_in_path(root_path):
|
|
|
150
150
|
Returns:
|
|
151
151
|
List of manifest file paths
|
|
152
152
|
"""
|
|
153
|
-
find_cmd = "find
|
|
154
|
-
root=root_path,
|
|
155
|
-
filename=MANIFEST_FILENAME
|
|
156
|
-
)
|
|
153
|
+
find_cmd = ["sh", "-c", 'find "$1" -name "$2" -type f 2>/dev/null | sort', "sh", root_path, MANIFEST_FILENAME]
|
|
157
154
|
result = str(local(find_cmd, quiet=True, echo_off=True))
|
|
158
155
|
|
|
159
156
|
manifests = []
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# This module discovers services from service.json manifest files.
|
|
9
9
|
# It runs discovery at module load time to avoid frozen hash issues.
|
|
10
10
|
#
|
|
11
|
-
# IMPORTANT: Discovery runs when the module loads (if
|
|
11
|
+
# IMPORTANT: Discovery runs when the module loads (if FLISK_PROJECT_ROOT is set).
|
|
12
12
|
# This ensures APP_RESOURCES and related variables are populated before export.
|
|
13
13
|
# =============================================================================
|
|
14
14
|
|
|
@@ -75,10 +75,10 @@ def _run_discovery():
|
|
|
75
75
|
print("")
|
|
76
76
|
return working_cache
|
|
77
77
|
|
|
78
|
-
# Run discovery immediately if
|
|
78
|
+
# Run discovery immediately if FLISK_PROJECT_ROOT is set
|
|
79
79
|
# This ensures data is available before module is frozen
|
|
80
80
|
_DISCOVERY_RESULTS = {}
|
|
81
|
-
if os.environ.get('
|
|
81
|
+
if os.environ.get('FLISK_PROJECT_ROOT', ''):
|
|
82
82
|
_DISCOVERY_RESULTS = _run_discovery()
|
|
83
83
|
else:
|
|
84
84
|
# Empty results if no project root set
|
|
@@ -309,17 +309,17 @@ def _write_file_if_changed(path, content):
|
|
|
309
309
|
if '..' in normalized.split('/') or not (
|
|
310
310
|
'/.autogenerated/' in normalized or
|
|
311
311
|
normalized.startswith('.autogenerated/') or
|
|
312
|
-
normalized.startswith('.
|
|
312
|
+
normalized.startswith('.flisk/.flisk-out/') or
|
|
313
313
|
normalized in ['Tiltfile', '.tiltignore'] or
|
|
314
314
|
(normalized.startswith('TILT_') and normalized.endswith('.star') and '/' not in normalized)
|
|
315
315
|
):
|
|
316
316
|
fail("Flisk discovery refused to write outside its generated-file allowlist: " + path)
|
|
317
317
|
|
|
318
318
|
# Read existing file (returns empty string on error via shell)
|
|
319
|
-
existing = str(local("
|
|
319
|
+
existing = str(local(["sh", "-c", 'cat "$1" 2>/dev/null || echo ""', "sh", path], quiet=True, echo_off=True))
|
|
320
320
|
|
|
321
321
|
if existing != content:
|
|
322
|
-
local("mkdir -p $(dirname "
|
|
322
|
+
local(["sh", "-c", 'mkdir -p "$(dirname "$1")" && echo "$2" > "$1"', "sh", path, content], quiet=True, echo_off=True)
|
|
323
323
|
return True
|
|
324
324
|
return False
|
|
325
325
|
|
|
@@ -329,7 +329,7 @@ def _render_star_file(description, var_name, data):
|
|
|
329
329
|
|
|
330
330
|
def generate_product_stack_topology():
|
|
331
331
|
"""Generate product stack topology folders."""
|
|
332
|
-
local("mkdir -p
|
|
332
|
+
local(["mkdir", "-p", PRODUCT_TOPOLOGY_DIR], quiet=True)
|
|
333
333
|
|
|
334
334
|
changes = 0
|
|
335
335
|
for resource in APP_RESOURCES:
|
|
@@ -349,7 +349,7 @@ def generate_product_stack_topology():
|
|
|
349
349
|
|
|
350
350
|
def generate_product_snapshot_topology():
|
|
351
351
|
"""Generate product snapshot topology files."""
|
|
352
|
-
local("mkdir -p
|
|
352
|
+
local(["mkdir", "-p", PRODUCT_SNAPSHOT_DIR], quiet=True)
|
|
353
353
|
|
|
354
354
|
services_path = PRODUCT_SNAPSHOT_DIR + "/services.star"
|
|
355
355
|
deps_path = PRODUCT_SNAPSHOT_DIR + "/dependencies.star"
|
|
@@ -426,7 +426,7 @@ def _find_manifest_files(root, manifest_filename):
|
|
|
426
426
|
files = []
|
|
427
427
|
|
|
428
428
|
# Check if root contains glob patterns
|
|
429
|
-
project_root = os.environ.get('
|
|
429
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '.')
|
|
430
430
|
if '*' in root or '?' in root:
|
|
431
431
|
# Use bash to expand glob and find files
|
|
432
432
|
cmd = "cd " + project_root + " && bash -c 'for dir in " + root + "; do if [ -d \"$dir\" ]; then find \"$dir\" -maxdepth 3 -type f -name \"" + manifest_filename + "\" 2>/dev/null; fi; done'"
|
|
@@ -510,7 +510,7 @@ def load_yaml_manifests_as_resources():
|
|
|
510
510
|
|
|
511
511
|
local_resource(
|
|
512
512
|
name=resource_name,
|
|
513
|
-
cmd=
|
|
513
|
+
cmd=['echo', 'YAML manifest: ' + yaml_path_display],
|
|
514
514
|
deps=[yaml_file],
|
|
515
515
|
labels=["yaml-manifest"],
|
|
516
516
|
)
|
|
@@ -521,7 +521,7 @@ def load_yaml_manifests_as_resources():
|
|
|
521
521
|
load_yaml_manifests_as_resources()
|
|
522
522
|
|
|
523
523
|
# Load project defaults from spec.master if available
|
|
524
|
-
project_root = os.environ.get('
|
|
524
|
+
project_root = os.environ.get('FLISK_PROJECT_ROOT', '')
|
|
525
525
|
if project_root:
|
|
526
526
|
project_defaults = Config.load_project_defaults(project_root)
|
|
527
527
|
if project_defaults:
|
|
@@ -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
|
"""
|
|
5
5
|
Service Snapshot Utility
|
|
@@ -22,7 +22,7 @@ from datetime import datetime, timezone
|
|
|
22
22
|
logging.basicConfig(level=logging.WARNING, format='%(levelname)s: %(message)s')
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
24
24
|
|
|
25
|
-
SNAPSHOT_FILE = Path(".
|
|
25
|
+
SNAPSHOT_FILE = Path(".flisk/.flisk-out/snapshots/resource-snapshot.json")
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def compute_resource_hash(resource_path: str) -> Optional[str]:
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
# =============================================================================
|
|
8
8
|
|
|
9
9
|
# Python script path (relative to Tiltfile)
|
|
10
|
-
_SNAPSHOT_SCRIPT = ".
|
|
10
|
+
_SNAPSHOT_SCRIPT = ".flisk/.flisk-out/snapshots/resource_snapshot.py"
|
|
11
11
|
|
|
12
12
|
def _run_snapshot_command(cmd):
|
|
13
13
|
"""Run a snapshot command via Python script."""
|
|
14
14
|
result = local(
|
|
15
|
-
"python3
|
|
15
|
+
["python3", _SNAPSHOT_SCRIPT, cmd],
|
|
16
16
|
quiet=True,
|
|
17
17
|
echo_off=True
|
|
18
18
|
)
|
|
@@ -27,7 +27,7 @@ def save_snapshot(resources):
|
|
|
27
27
|
"""
|
|
28
28
|
# Use Python to save snapshot directly
|
|
29
29
|
result = local(
|
|
30
|
-
"
|
|
30
|
+
["sh", "-c", 'cd "$1" && python3 "$2" save', "sh", config.main_dir, _SNAPSHOT_SCRIPT],
|
|
31
31
|
quiet=True,
|
|
32
32
|
echo_off=True
|
|
33
33
|
)
|
|
@@ -109,7 +109,7 @@ def get_current_resources(scan_roots=["services/product"]):
|
|
|
109
109
|
|
|
110
110
|
for root in scan_roots:
|
|
111
111
|
# Use find command to locate service.json files
|
|
112
|
-
cmd = "
|
|
112
|
+
cmd = ["sh", "-c", 'find "$1" -type f -name service.json 2>/dev/null | sort', "sh", root]
|
|
113
113
|
result = local(cmd, quiet=True, echo_off=True)
|
|
114
114
|
|
|
115
115
|
if result:
|
|
@@ -124,7 +124,7 @@ def get_current_resources(scan_roots=["services/product"]):
|
|
|
124
124
|
def snapshot_exists():
|
|
125
125
|
"""Check if snapshot file exists."""
|
|
126
126
|
result = local(
|
|
127
|
-
"test -f .
|
|
127
|
+
"test -f .flisk/.flisk-out/snapshots/resource-snapshot.json && echo 'yes' || echo 'no'",
|
|
128
128
|
quiet=True,
|
|
129
129
|
echo_off=True
|
|
130
130
|
)
|
|
@@ -133,7 +133,7 @@ def snapshot_exists():
|
|
|
133
133
|
# Get the path to the resource snapshot file
|
|
134
134
|
def get_resource_snapshot_path():
|
|
135
135
|
"""Return the path to the resource snapshot JSON file."""
|
|
136
|
-
return ".
|
|
136
|
+
return ".flisk/.flisk-out/snapshots/resource-snapshot.json"
|
|
137
137
|
|
|
138
138
|
# Export public API
|
|
139
139
|
ResourceSnapshot = struct(
|
|
@@ -2,7 +2,7 @@ appName: orchestrator-glue-backend
|
|
|
2
2
|
appType: backend
|
|
3
3
|
stack: platform
|
|
4
4
|
port: 5001
|
|
5
|
-
databaseName:
|
|
5
|
+
databaseName: flisk_project_orchestrator
|
|
6
6
|
features:
|
|
7
7
|
- nats
|
|
8
8
|
- prisma
|
|
@@ -22,5 +22,5 @@ resources:
|
|
|
22
22
|
memory: 256Mi
|
|
23
23
|
runtime: bun
|
|
24
24
|
traefik:
|
|
25
|
-
host: orchestrator.backend.
|
|
25
|
+
host: orchestrator.backend.flisk-project.local
|
|
26
26
|
pathPrefix: /api/orchestrator
|