extends Node ## AtlasAgentBridge (T-971, D-226 item 4) — the ONE stable, always-reachable ## handle onto the live AtlasApp instance, so an in-process agent driver (a ## `-s` SceneTree script, a gdUnit suite, the T-1157 capture harness) has a ## fixed autoload address to start from instead of walking the scene tree ## itself. ## ## Deliberately a DUMB holder, per CLAUDE.md's autoload parse-order rule: an ## autoload script compiles before global `class_name` scripts are ## registered, so referencing a `class_name` type (AtlasApp, AtlasAgent ## Interface) at this file's top level or in _ready() would fail to ## resolve. This file therefore declares its field UNTYPED (`var ## current_app = null`) and does nothing else — every actual observe()/act() ## call is a STATIC method on AtlasAgentInterface ## (res://ui/implant/apps/atlas/atlas_agent_interface.gd), loaded via ## `load()` inline at call time by whatever script needs it (the same ## deferred-load pattern game_state.gd/sim_bridge.gd already use for their ## own class_name-typed fields). This autoload carries no logic of its own ## to keep that boundary clean — "dumb holder delegating to a static class", ## per the ruling. ## ## `current_app` is set by AtlasApp.on_install() (the same lifecycle point ## ImplantApp guarantees runs once, before any HudGroups open event) and ## cleared by nothing — an installed app instance lives for the process ## lifetime, matching every other ImplantApp subclass's own singleton-per- ## process posture (HudGroups.register() itself assumes one instance per ## app_path). var current_app = null # AtlasApp, set by atlas_app.gd's on_install()