Commit Graph

31 Commits

Author SHA1 Message Date
leubeem
e807e483ce Wire /pm to Python backend for stateful ATC training sessions
Replace the LLM-per-request flow in /pm with a stateful Python backend
(OpenSquawk-LiveATC-api). The backend owns session state, does regex-first
routing with readback evaluation, and returns the next state + ATC speech.
The frontend keeps its local cursor (communicationsEngine) for TTS and
monitoring UI, but no longer calls /api/llm/decide.

Changes:

app/composables/useRadioBackend.ts (new)
  Typed Nuxt composable wrapping the Python REST API:
  createSession, transmit, deleteSession, fetchFlows.
  Base URL read from NUXT_PUBLIC_RADIO_BACKEND_URL (default 127.0.0.1:8000).

nuxt.config.ts
  Expose radioBackendUrl as a public runtime config key so the composable
  and communicationsEngine can both reach the Python backend.

shared/utils/communicationsEngine.ts
  - fetchRuntimeTree now accepts an optional baseUrl so it fetches from the
    Python backend instead of the Nuxt server when a URL is provided.
  - renderTpl handles both {var} (old MongoDB schema) and {{var}} (new YAML
    schema) — double-brace matched first to avoid partial matches.
  - stateSayTpl / stateUtteranceTpl helpers unify say_tpl|say_template and
    utterance_tpl|expected_pilot_template across both schema versions.
  - auto_transitions from the new YAML schema are included when collecting
    eligible transitions in collectAtcStatesUntilPilotTurn.

shared/types/decision.ts
  RuntimeDecisionState extended with say_template and expected_pilot_template
  fields (new YAML schema field names alongside the existing legacy names).

app/pages/pm.vue
  - startMonitoring: loads tree from Python backend, then creates a backend
    session (backendSessionId). Cursor synced to session.current_state.
  - handlePilotTransmission: calls radioBackend.transmit instead of
    /api/llm/decide. Applies auto_advanced_states via moveToSilent, then
    the final state. Speaks controller_say_template via TTS.
  - Both fetchRuntimeTree calls now pass radioBackendUrl so they hit the
    Python backend, not the Nuxt flow-from-MongoDB path.

AGENTS.md (new)
  Project guide updated to document the new two-backend architecture,
  the Python backend session lifecycle, and the dual template schema.

docs/plans/2026-05-06-pm-python-runtime-contract.md (new)
  Implementation plan and API contract written before the work started.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 17:49:28 +02:00
itsrubberduck
36ad4677dc add the lidl dome light temporarily 2026-02-18 21:49:03 +01:00
itsrubberduck
4a01593612 fix typescript errors and update dependencies 2026-02-17 18:13:04 +01:00
itsrubberduck
57fc0e3150 Fix local sharp setup for Nuxt image processing 2026-02-15 15:47:06 +01:00
itsrubberduck
37dbfc17e9 feat(flightlab): add WebSocket handler for instructor-participant session sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:45:18 +01:00
Remi
1133dbb6e1 feat: integrate nuxt hotjar module 2025-10-18 14:31:16 +02:00
Remi
18f25998f5 Allow configuring OpenAI base URL 2025-10-16 11:15:31 +02:00
itsrubberduck
cccea3f8cf add nuxt-img 2025-10-12 16:53:12 +02:00
itsrubberduck
61edec95a2 minor design adjustments 2025-10-05 16:45:58 +02:00
itsrubberduck
8062deb60e insight into research 2025-10-04 16:49:44 +02:00
itsrubberduck
4ba95c998d use new favicon 2025-09-24 17:32:05 +02:00
Remi
c57eaeed4a Align Learn intro buttons with shared Learn styling 2025-09-22 18:19:41 +02:00
Remi
03b86ae637 Add ATIS quick actions and airport frequency data 2025-09-18 18:16:40 +02:00
Remi
7a44d67844 Harden runtime config and input validation 2025-09-18 14:03:25 +02:00
Remi
c20ed6b702 Fix Hotjar loading after cookie consent 2025-09-18 13:37:29 +02:00
Remi
e1d892af83 feat: add manual invitation generator 2025-09-17 20:26:33 +02:00
itsrubberduck
c01c7d2801 “Adopt Nuxt Image and replace landing video with static image 2025-09-17 20:07:02 +02:00
itsrubberduck
8eaace39d1 merge 2025-09-17 19:38:37 +02:00
itsrubberduck
9ff6f6c533 ⚖️ Update legal & privacy pages, add Nuxt Image module
* Updated  and  with new company details (Faktor Mensch MEDIA UG), updated email to , and refreshed  dates.
* Replaced references to old OpenSquawk UG with new entity information.
* Added  module to  for image optimization support.
* Adjusted  dependencies: added , ensured  is correctly listed.
* Regenerated  to include new dependencies (, High performance, secure and easy-to-use image optimizer. (ipx v2.1.1)

USAGE ipx serve

COMMANDS

  serve    Start IPX Server

Use ipx <command> --help for more information about a command., Usage: svgo [options] [INPUT...]

Nodejs-based tool for optimizing SVG vector graphics files

Arguments:
  INPUT                      Alias to --input

Options:
  -v, --version              output the version number
  -i, --input <INPUT...>     Input files, "-" for STDIN
  -s, --string <STRING>      Input SVG data string
  -f, --folder <FOLDER>      Input folder, optimize and rewrite all *.svg files
  -o, --output <OUTPUT...>   Output file or folder (by default the same as the
                             input), "-" for STDOUT
  -p, --precision <INTEGER>  Set number of digits in the fractional part,
                             overrides plugins params
  --config <CONFIG>          Custom config file, only .js is supported
  --datauri <FORMAT>         Output as Data URI string (base64), URI encoded
                             (enc) or unencoded (unenc)
  --multipass                Pass over SVGs multiple times to ensure all
                             optimizations are applied
  --pretty                   Make SVG pretty printed
  --indent <INTEGER>         Indent number when pretty printing SVGs
  --eol <EOL>                Line break to use when outputting SVG: lf, crlf.
                             If unspecified, uses platform default.
  --final-newline            Ensure SVG ends with a line break
  -r, --recursive            Use with '--folder'. Optimizes *.svg files in
                             folders recursively.
  --exclude <PATTERN...>     Use with '--folder'. Exclude files matching
                             regular expression pattern.
  -q, --quiet                Only output error messages, not regular status
                             messages
  --show-plugins             Show available plugins and exit
  --no-color                 Output plain text without color
  -h, --help                 display help for command, etc.).
2025-09-17 19:36:15 +02:00
itsrubberduck
c751d45090 add hotjar 2025-09-17 19:25:46 +02:00
Remi
e355d0ba18 Align public messaging and add news banners 2025-09-17 19:22:56 +02:00
Remi
19f253f53e Implement authentication, waitlist, and logging upgrades 2025-09-16 17:28:34 +02:00
itsrubberduck
ee90ebfe54 sehr schlechte erste version vom p 2025-09-15 20:04:04 +02:00
itsrubberduck
fff07663b9 add glas ui 2025-09-15 11:46:12 +02:00
itsrubberduck
d77ac4a25e globales css hinzu 2025-09-15 00:00:03 +02:00
itsrubberduck
99b8c87536 ssr false 2025-09-14 23:34:13 +02:00
itsrubberduck
8528b2518b kann ein bisschen normalized sprechen 2025-09-14 23:20:01 +02:00
itsrubberduck
70db201abd webseite sieht gut aus 2025-09-14 21:36:45 +02:00
itsrubberduck
f17624518d neue landing page 2025-09-14 21:14:20 +02:00
itsrubberduck
4a1e4df391 add tailwind 2025-09-14 21:10:30 +02:00
itsrubberduck
94ea407402 init 2025-09-14 21:09:47 +02:00