omega_architecture 1.1.0
omega_architecture: ^1.1.0 copied to clipboard
A reactive, agent-based architecture framework for Flutter applications.
1.1.0 #
- [OmegaTypedIntent] / [OmegaFlowManager.handleTypedIntent]: intents con tipo que implementan [OmegaIntentName]; el mismo objeto aporta el wire name y el payload. En el flow, lectura con [OmegaIntentTypedPayloadExtension.typedPayloadAs] (ver
omega_typed_intent.darty documentación en [OmegaFlowContext]). - [OmegaFlowManager]: ajustes en el ciclo de intents y navegación cableada al canal; pruebas ampliadas en
omega_flow_manager_test.dart. - [OmegaNavigator]: reglas más claras para ids de ruta y alineación con intents
navigate.*(documentado en la guía de navegación). - Semántica / eventos: refuerzos en [OmegaIntent], [OmegaEvent] y tipado de eventos; [OmegaSequencer] para ordenación en el canal.
- Ejemplo (
auth): alineado con el modelo de intents/eventos y navegación actual. - Documentación (sitio VitePress): guía Observability & statistics, diagrama SVG de panel de métricas (ilustrativo), componente
OmegaObservabilityDashboard, texto “What each panel means” en la home y en la guía; ampliación de Widgets y enlaces del inspector; README reestructurado.
1.0.5 #
- CLI
omega validate+ arranque en frío: Antes de analizar, aplica correcciones deterministas enomega_setup.dart(deduplicar listas,initialFlowId/initialNavigationIntentcuando hay rutas y flows). El parche ya no exige app tipo Auth + varias rutas: infiere el primer flow (super(id:…)), el intent desde losOmegaRoute(id:…)y elAppIntent, y puede añadir unnavigate…enapp_semantics.dartsi falta. Prompts de IA reforzados para no omitir esos campos en JSON. omega validate— ids de ruta: RechazaOmegaRoute(id: …)con mayúsculas en el string (contrato [OmegaNavigator] + wiresnavigate.*en minúsculas).- IA / HEAL — navegación: Reglas explícitas:
OmegaRoute.iden minúsculas; [OmegaNavigator] quita solo el prefijo inicialnavigate./navigate.push.(p. ej.navigate.user.profile→ iduser.profile); ejemplonavigateAuthPerfil→auth.perfil;registerInOmegaSetup(omega g ecosystem) calcula el id con la misma regla DottedCamel queOmegaIntentNameDottedCamel(ya no usa el nombre PascalCase del módulo salvo casos Auth/Home →login/home). - Documentación (Windows / PATH): README,
doc/COMANDOS_CLI.mdydoc/GUIA.mddetallan añadir%LOCALAPPDATA%\Pub\Cache\bin(ruta expandida típicaC:\Users\<usuario>\AppData\Local\Pub\Cache\bin) al Path del usuario, cierre de terminales y comprobación conwhere omega/omega --help. - Docs / Omega Studio: Pub no admite
dart pub global runniflutter pub global runpara paquetes con dependencia de Flutter; sinomegaen PATH hay que usar el shim (omega.bat/ ruta completa) odart run omega_architecture:omegadesde un proyecto. Omega Studio solo invoca ese shim enPub/Cache/bin(búsqueda ampliada en Windows).
1.0.4 #
omega validate: El bloqueroutes:se detecta también comoroutes: [...](sin<OmegaRoute>), igual queroutes: <OmegaRoute>[...], para extraerid:y aplicar duplicados + reglas de arranque en frío cuando hay rutas y flows. CompruebaAppIntent.navigateRoot↔OmegaRoute(id: 'root')si aparece en el setup.- IA / plantilla: Kickstart ya no fuerza módulos Auth/Home en el planner;
omega initdejaAppIntent.navigateRootpor defecto. Prompts_omegaAiColdStartShelly checklist: siempreinitialFlowId+initialNavigationIntentalineados con rutas; Login/Home solo si el producto lo pide. - CLI
omega create app: Tras generar módulos ymain.dart, se aplica un paso final sobrelib/omega/omega_setup.dart: renombrar rutas legacyAuth→loginyHome→home(contrato [OmegaNavigator] conAppIntent.navigateLogin/navigateHome) e insertarinitialFlowId+initialNavigationIntentcuando el setup califica (Auth + varias rutas).registerInOmegaSetupregistra yalogin/homepara los módulos Auth y Home. - Sanación / IA: Catálogo
tool/omega_heal_catalog.yaml— reglasmatch_groups+ textos HEAL; el CLI los inyecta tras “ANALYZER ERRORS”.bin/omega_heal_catalog.dartcarga el YAML desde la raíz del paquete (OMEGA_PACKAGE_ROOT/ script).OMEGA_HEAL_CATALOG=falsedesactiva; dependenciayaml. Incluye (entre otras): emit del canal,fromNameString vs enum, payloads falsos (OmegaIntentPayload),omega_setupsinagent,OmegaFlowContextsin APIs inventadas, imports Flow/Agent en setup,navigationIntent, enum Event /emitdel agente, equatable/intl/OmegaViewState/viewStateStream, tipos faltantes en*_events.dart, nullable en UI. Las recetas equivalentes dejaron de duplicarse enbin/omega.dart(solo quedan hints dinámicos del validador + pubspec).
1.0.3 #
- CLI / IA (
bin/omega.dart): Reglas y receta de heal para no confundirOmegaChannel.emit(OmegaEvent)conOmegaAgent.emit(String, {payload}); reforzarOmegaEvent.fromName(enum +payload:/ puente desdectx.intent?.payloadAs). - Documentación:
OmegaEventBus.emit,OmegaEvent.fromNameyOmegaIntent.fromNameaclaran firma y anti‑patrones en el paquete.
1.0.2 #
omega validate: DetectaOmegaRouteconid:duplicado dentro deroutes:; duplicados enagents:por la misma variable repetida (p. ej. dos vecesorderManagementAgent) además de dosFooAgent(channel); duplicados enflows:por tipo (UserManagementFlowdos veces). Los chequeos se limitan al cuerpo de cada lista (menos falsos positivos). Prompts MASTER + heal compact reforzados con ejemplo explícito y remisión aomega validate.- [OmegaAgent] / [OmegaFlow] (contratos en debug): El aviso “not in contract” en agentes solo aparece si el [OmegaAgentBehaviorEngine] tiene una reacción para ese evento/intent y el contrato no lo declara (evita ruido del bus compartido). En flows, el aviso por eventos solo si el flow escucha un [OmegaChannelNamespace] y el evento trae el mismo
namespace(no se avisa por globales u otros módulos); intents yemitExpressionsiguen comprobándose como antes. - [OmegaConfig] / [OmegaRuntime]: Campo opcional
initialNavigationIntent— declara enomega_setupla primera pantalla Omega (navigate.*) junto ainitialFlowId. [OmegaScope.initialNavigationIntent] + widget [OmegaInitialRoute] (solochild) evitan pasar el intent porMyApp; [OmegaInitialNavigationEmitter] sigue disponible para un intent explícito. Ejemplo y plantillaomega create appalineados. - [OmegaWorkflowFlow]: Default implementations of [onIntent] / [onEvent] (no-op) so subclasses that only use [defineStep] + [startAt]/[next] compile without being forced to add empty overrides ([OmegaFlow] still requires those members). IA / CLI: prompts for workflow flows now state that
supermust receiveid+channel, that [defineStep] does not run until [startAt] or [next], and that contracts should listworkflow.step/workflow.error/workflow.done. - IA / OmegaWorkflowFlow:
_omegaAiOmegaWorkflowFlowexigedefineStepcon handler sin argumentos (FutureOr<void> Function()— nunca(OmegaFlowContext ctx));ctxsolo enonIntent/onEvent; evitaremitExpression+nextduplicando el mismo tipo enonEventy en el step. Heal compact + MASTER CHECKLIST §4 alineados. - IA / documentación: Clase
OmegaAiCommanddocumentada (rol de cada_omegaAi*+ composición de prompts). Nuevo bloque de prompt_omegaAiConceptualArchitecture(scope mínimo,handleIntentvschannel, de dónde salen los agentes, por qué inventar APIs falla) en módulo y heal; comentarios///en fragmentos de prompt principales. - IA /
main.dart: Bloque_omegaAiMainDartEntry(heal + módulo): copiar estructura deexample/lib/main.dart(asyncmain, inspector web/VM,OmegaScopeconinitialNavigationIntent,OmegaInitialRoute+RootHandler); plantillaomega create appalineada. MASTER CHECKLIST +_omegaAiConceptualArchitecture/ heal compact citaninitialNavigationIntenten [OmegaScope]. - IA / navegación: Bloque
_omegaAiNavigationChannelEmit(módulo + heal): patrón canónicoAppEvent.navigationIntent+OmegaIntent.fromName(AppIntent.navigateHome)con import deapp_semantics; prohibidoOmegaIntent.fromName('navigate.home')y placeholders en string._omegaAiPagePassSanityaceptaAppIntent.además de intents del módulo cuando hayOmegaIntent.fromName. - IA / FlowActivator + FlowManager:
_omegaAiFlowActivatorAndFlowManagerdocumentaOmegaFlowActivator,OmegaFlowManager(singetAgent) yOmegaScopesinagentManager/agentManager.getAgent('…')(patrón inventado en formularios)._omegaAiAgentUiStateListening, heal compact y MASTER CHECKLIST §5 Forbidden refuerzan lo mismo. - IA / agent UI: Nuevo bloque
_omegaAiAgentUiStateListeningen prompts (módulo + heal): explicaviewState+setViewState,stateStream/viewStateStream, queOmegaAgentWidgetBuilderes solo(BuildContext, TState), queOmegaScopedAgentBuilderno admite firmas tipo Provider(context, agent, state, child); MASTER CHECKLIST +_omegaAiAgentBehaviorApi+ plantilla decoupled alineados. - IA / pasos: STEPWISE reforzado (pipeline events → behavior → agent → flow → page; prohibido adelantar página/flujo antes de fijar nombres en events).
reasoningdel módulo completo debe ir numerado 1)–5) por fase; heal pide arreglos mínimos por archivo en lugar de reescribir todo de golpe; UI-only deja claro que es un solo paso (solopage). - IA / fidelidad: Prompts añaden
_omegaAiOmegaSourceOfTruth: solo API públicapackage:omega_architecture/omega_architecture.dart, reglas del propio prompt y PACKAGE GROUND TRUTH; prohibido inventar APIs Omega, imports internos del paquete y capas extra (BLoC/Riverpod/GetX) salvo petición explícita; priorizar solución mínima que compile. Heal y system strings refuerzan “solo lo adjunto + ejemplos”. - IA / tokens: Heal ya no pega el MASTER CHECKLIST completo ni el bloque largo duplicado de API; usa
_omegaAiHealPromptCompactOmega+ roles + canal + SCREEN ENTRY. Generación de módulo deja de incluir el bloque repetidoOMEGA SCOPE(queda en el MASTER CHECKLIST). PACKAGE GROUND TRUTH: menos archivos de ejemplo (sinprovider_flow/orders_flow/ duplicadolib/omega/app_runtime_ids), límitesmaxEachExample/maxTotalmás bajos; README ydoc/ARQUITECTURA.mdsolo siOMEGA_AI_ATTACH_PACKAGE_DOCS=true(por defecto no se adjuntan para ahorrar tokens). - IA: MASTER CHECKLIST section 6 + generación de módulo citan
example/lib/omega/omega_setup.dartcomo registro canónico (agents:+flows:con la misma instancia de agente). PACKAGE GROUND TRUTH priorizaomega_setup+ flujo auth de ejemplo; flujos extra con deps nombradas se documentan en GUIA sin duplicar todo el ejemplo en el prompt. - IA / JSON: si el modelo emite en el JSON una barra invertida suelta delante de
$(p. ej. texto Dart tipoTotal: \\$+ interpolación),jsonDecodefallaba (FormatException: Unrecognized string escape). El CLI aplicasanitizeAiJsonTextForDecodeantes de parsear respuestas de módulo y heal; regla 10 en prompts pide concatenación u escapes JSON válidos. - IA / imports:
_providerGenerateModuleCoderecibe elname:real del pubspec (getPackageName) e inyecta PROJECT PUBSPEC NAME + pasos (events → behavior → agent → flow → page) y ejemplospackage:<id>/omega/...con ese id; el heal añade APP PUBSPEC. El MASTER CHECKLIST deja de usar<pubspec_name>literal — indica THE_EXACT_PUBSPEC_NAME / bloque del prompt para no inventardelivery_appcuando el proyecto esmy_ai_app.
1.0.1 #
- [OmegaFlow.uiScopeAgent]: optional getter (default
null). When a flow subclass returns its primary UI [OmegaAgent], [OmegaFlowExpressionBuilder] wraps thebuilderresult in [OmegaAgentScope] so [OmegaScopedAgentBuilder] resolves the agent without wrapping the whole route. Override in flows that own one agent for the screen (same instance the flow uses). - [OmegaFlowManager.getFlowFlexible]: resolves a flow when the id matches a registered key ignoring ASCII case (e.g. route
UserInterfacevs enum wireuserInterface). [OmegaFlowExpressionBuilder] uses it so [OmegaFlow.uiScopeAgent] / expressions still apply when ids differ only by casing. [OmegaFlowManager.registeredFlowIds] for debugging. Debug logs when no flow matches or whenuiScopeAgentis null but subtree may need scope. - CLI
registerInOmegaSetup: If*_flow.dartdeclaresrequired this.agentorrequired ModuleAgent agent, the setup now adds a singlefinal moduleAgent = ModuleAgent(channel), includes it inagents:, and registersModuleFlow(channel: channel, agent: moduleAgent)(same variable). Heal recipe notes the same. Exampleomega_setup.dartdocuments the pattern. - Example:
AuthFlow,ProviderFlowandOrdersFlowtake{required channel, required agent}(andOrdersFlowalsoofflineQueue); each overrides [OmegaFlow.uiScopeAgent]. AddedOrdersAgent+orders_behavior.dartandAppAgentId.orders.omega_setupwires one instance per agent intoagents:and into the matching flow. - CLI / IA (
bin/omega.dart): MASTER CHECKLIST y plantillaomega g ecosystemdocumentan dependencias extra en el flujo (p. ej.offlineQueue, repos): no son agentes; se crean una vez encreateOmegaConfigy se pasan nombradas al constructor; el ecosistema generado por defecto solo añadechannel+agent.
1.0.0 #
omega init: Also createslib/omega/app_runtime_ids.dart(enumsAppFlowId/AppAgentIdwith placeholder members) when missing, same asapp_semantics.dart.omega g ecosystem: Requires that file (runomega initfirst); merges new ids and generates flow/agent withAppFlowId.<id>.id/AppAgentId.<id>.id(invalid CLI name chars become_in the enum wire).- [OmegaFlowId] / [OmegaAgentId] with [OmegaFlowIdEnumWire] / [OmegaAgentIdEnumWire]: typed flow/agent ids (example
app_runtime_ids.dart). [OmegaFlowActivator] acceptsflowIdas [String] or [OmegaFlowId]; calls [activate]/[switchTo] once (OmegaLoginPage,_RootHandler,HomePage,ProviderPage). - Intent handlers: [OmegaFlowManager.registerIntentHandler] / [OmegaFlowManager.clearIntentHandlers] run before intents reach running flows;
consumeIntent: trueskips flow delivery. [Omega.handle] is a thin static alias; [OmegaIntentReducer] holds reducer-style state updates. [OmegaIntentHandlerPipeline] fluentvalidate→execute→onSuccess/onError/onPayloadMissing→register. doc/GUIA.md adds “Intent handlers: qué elegir (DX)”. OmegaIntentNameEnumWire/OmegaIntentNameDottedCamel: enum intents without per-case string literals; [OmegaIntentNameDottedCamel] derives dotted wires from camelCase (ordersCreate→orders.create) via [omegaWireNameFromCamelCaseEnumMember].OmegaEventNameEnumWire/OmegaEventNameDottedCamel: same for events. Demo:example/lib/demo/demo_counter_intent.dart.- Example
app_semantics:AppEvent/AppIntentmigrated to dotted-camel mixins;createOrderrenamed toordersCreatefor wireorders.create.omega initdefault template andomega g ecosystem_events.dartuse the same pattern. OmegaConfig.intentHandlerRegistrars: optionalOmegaIntentHandlerRegistrarlist run at end of [OmegaRuntime.bootstrap] (after [OmegaFlowManager.wireNavigator]) so [Omega.handle] registration lives next to flows/routes instead ofmain.- UI decoupling: [OmegaAgentScope] exposes an [OmegaAgent] to descendants without threading it through every widget constructor; [OmegaScopedAgentBuilder] is [OmegaAgentBuilder] that reads the agent from scope. [OmegaFlowExpressionBuilder] listens to [OmegaFlow.expressions] by flow id (uses [OmegaFlow.lastExpression] for initial [StreamBuilder] data). [OmegaFlow.lastExpression] getter added. doc/GUIA.md documents usage; Omega AI prompts in
bin/omega.dartinstruct models to prefer these APIs when decoupling pages from agents.
0.0.33 #
omega init: Createslib/omega/app_semantics.dartnext toomega_setup.dart(minimalAppEvent/AppIntent). Ifomega_setup.dartalready exists, runninginitagain adds only the missing semantics file (no--forceon setup).registerInOmegaSetup/ coach: Detects pages withrequired this.agentandfinal …Agent agent; upgrades routes fromconst FooPage()toFooPage(agent: …); strips and re-adds agent/flow/page imports in a loop to avoid duplicates; runsregisterInOmegaSetupagain after the advanced/IA template soomega_setupmatches the final page.- Self-healing: Includes each module’s
*_events.dartwhen errors touch that folder; recipes for missingViewState/ typed events, nullableOmegaAgentBuilderstate, andchannel.emitTypedvs bogus “methods” on the agent; optionaldart pub addwhen the analyzer reports missingpackage:URIs (OMEGA_AI_HEAL_PUB_ADD, default on); slightly larger file context and stricter prompts. - Imports: Deduplicates identical
import/exportlines when applying heal JSON and when writing coach module files; dedupe pass onomega_setupafter registration; heal + artifact guide forbid duplicate imports inomega_setup. - Docs in prompts:
omega_setupchecklist mentionsapp_semanticsand single import per URI.
0.0.32 (CLI & AI Redesign Support) #
- New Command
omega ai coach redesign: Dedicated command to redesign existing modules or UI screens by providing current code as context to the AI. - AI Redesign Support:
omega ai coach modulealso detects existing module files for evolutionary updates. - Improved AI Prompts: Strengthened instructions to prevent placeholder UIs and ensure consistent Material 3 usage.
- Contract Mismatch Reduction: Silence false-positive debug warnings on shared global channels.
- Audit Tool Fixes: Enhanced registration detection for agents, flows, and routes in
omega_setup.dart. - VS Code Extension Integration: Added
omega_studiofor one-click AI-powered module redesigns. - Self-Healing Enhancements: More robust parsing of analyzer output for iterative AI fixes.
- Docs: Added doc/COMANDOS_CLI.md (Spanish CLI reference for developers). README.md and doc/GUIA.md link to it; README Omega CLI section now includes
inspectorandai coach redesign/ coach flags. - Web docs: presentation/index.html and presentation/index-en.html — CLI section adds
inspectortab, link toCOMANDOS_CLI.md/ README, expandedai coach(module flags,redesign); feature card and “Other documentation” list updated.
0.0.31 (Module design & evolution) #
omega ai coach moduleimprovements:- Update existing modules: You can now use
--module <Name>or"Name: description"to update an existing module instead of creating a new one. - Immediate Self-Healing: The CLI now runs a self-healing pass right after generating a module with AI, ensuring the "designed" code actually compiles.
- Lenient validation: Sanity checks no longer discard the entire AI output on minor flaws, relying on the healing pass to fix them.
- Update existing modules: You can now use
omega ai coach auditimprovements:- Robust registration detection: Improved detection of flows, agents, and routes in
omega_setup.dart, supporting PascalCase/lowercase variations and namespaces. - Route audit: Added a check to verify if the module route is registered in
omega_setup.dart.
- Robust registration detection: Improved detection of flows, agents, and routes in
0.0.30 (CLI contracts & AI UX) #
- Advanced module template:
OmegaFlowContractforOmegaWorkflowFlownow includesworkflow.stepandworkflow.error, and lists*.requestedinlistenedEventNameswhen those events use the shared bus.OmegaAgentContractuses emptylistenedEventNameson the global channel to avoid spurious debug warnings across modules (with code comment). - AI generation: Kickstart text is passed as
productContextper module; prompts ask for real Material UI from the description; contract/namespace guidance for providers and self-heal.
0.0.29 (Generated app navigation) #
omega create appmain.dart: UsesOmegaFlowActivatorin_OmegaAppRootandOmegaScope.initialNavigationIntent+OmegaInitialRouteonMaterialApp.home, matchingexample/lib/main.dart— no bogusnavigate.$flowIdstring.
0.0.28 (CLI AI reliability) #
- Self-healing: Re-runs
dart analyzeafter AI fixes (up toOMEGA_AI_HEAL_MAX_PASSES, default 3); merges analyzer stdout+stderr; only treatsERROR|machine lines as blocking; prints remaining errors if healing fails. - Generated apps:
main.dartandwidget_test.dartuseOmegaRuntime.bootstrap((OmegaChannel c) => createOmegaConfig(c))for correct inference. - AI module generation: Prompts reference
OmegaIntentName/OmegaEventName,app_semantics.dartenum style, and correctOmegaIntent.fromName(enumValue)usage. - Validation fallback: If AI-written
*_events.dartor page code fails sanity checks, the CLI falls back to the default advanced scaffold (or default page only) sodart analyzeis less likely to break on bad AI output. - Default advanced template: Intent/event enums use
constconstructors andfinal String name, matching the example app.
0.0.27 (Autonomous Self-Healing) #
- Self-Healing Project Creation:
omega create appnow automatically runsdart analyzeafter generation.- If compilation errors are found, the CLI uses AI to diagnose and auto-fix the code.
- Ensures the generated project is 100% functional and error-free without manual intervention.
- Improved AI Logic: More precise prompts for AI-generated modules to minimize syntax errors.
0.0.26 (CLI Robustness & UX) #
omega create appimprovements:- Widget Test Fix: The generator now correctly overwrites
test/widget_test.dartwith a compatible smoke test usingOmegaAppandOmegaRuntime. - Automatic Route Registration: New modules generated via
g ecosystem(including AI kickstart) now automatically register their primary route and UI import inomega_setup.dart. - Windows Robustness: Improved path resolution and added forced file overwriting for a cleaner initial setup.
- Widget Test Fix: The generator now correctly overwrites
- Documentation & AI configuration:
- Quick Start: Added a dedicated section to
README.mdand web docs for instant onboarding. - AI Configuration Guide: Detailed instructions for setting up
OMEGA_AI_API_KEYand other environment variables indoc/GUIA.mdandREADME.md. - Web Docs Enhancement: Added "Steps for Success" to the CLI command panels.
- Quick Start: Added a dedicated section to
0.0.25 (Orchestration & App Creation) #
- omega create app: New top-level CLI command to bootstrap a full Flutter project with Omega pre-configured.
- AI Kickstart: Generates real business logic (agents, flows, UI) based on descriptions.
- Widget Test Fix: The generator now correctly overwrites
test/widget_test.dartwith a compatible smoke test, avoidingMyApperrors. - AI Auth Fix: Corrected
$apiKeyescaping in provider calls. - OmegaNavigator compatibility: Added
onGenerateRoutesupport. - Exported Bootstrap:
OmegaRuntimeandOmegaConfigare now exported from the main entry point.
0.0.24 #
- The official Omega documentation was added.
0.0.23 (AI Evolution) #
- omega ai coach module: New AI-guided command to generate complete ecosystems with advanced boilerplate. Use
--template advancedto generateOmegaWorkflowFlow,OmegaStatefulAgent, typed events, declarative contracts, and initial test files. - AI-assisted diagnosis and auditing: Added
omega ai coach start(step-by-step guidance) andomega ai coach audit(project gap analysis for features). - Plug-and-play UI templates: Generated UI pages now dynamically connect to
OmegaFlowManagerviaOmegaScopeand useStreamBuilder<OmegaFlowExpression>for a reactive, decoupled experience. - Improved generator accuracy: Fixed null-safety issues (
ctx.intent?.name) and API usage (OmegaEvent.fromName) in all generated templates. - AI CLI output options: AI commands now default to opening a temporary Markdown report in the editor for better readability, with a
--stdoutflag for console output. - Localization for AI: AI reports and CLI messages now respect system locale or
OMEGA_AI_LANGenvironment variables.
0.0.22 #
- Reactive agent state (optional): Added [OmegaStatefulAgent] and [OmegaAgentBuilder]. Agents can expose a typed reactive
viewState(stateStream) for UI widgets while preserving Omega’s core event/intent model. - Workflow engine flow (optional): Added [OmegaWorkflowFlow] for explicit step-based flows with
defineStep,startAt,next,failStep, andcompleteWorkflowto model multi-step processes (e.g. checkout/onboarding) without replacing [OmegaFlow]. - Example auth updated:
example/lib/authnow demonstrates reactive agent state in practice (AuthAgent+AuthViewState+OmegaAgentBuilderin login UI) with flow semantics kept focused on milestones.
0.0.21 #
- Typed events (OmegaTypedEvent + emitTyped): New [OmegaTypedEvent] interface and [OmegaEventBus.emitTyped] method so you can model events as classes (e.g.
LoginRequestedEvent) instead of plain string names with loose payloads. The channel wraps them into [OmegaEvent] with the instance as payload; listeners useevent.payloadAs<LoginRequestedEvent>()for full type safety. Example app updated (AuthFlow, AuthAgent,auth/models.dart) and tests added inomega_channel_test.dart. - Docs (GUIA, README, ROADMAP): doc/GUIA.md now has a dedicated “Eventos tipados (clase como evento)” section with a full example; README’s feature list highlights typed events as the recommended style; doc/ROADMAP.md marks typed events as completed under “Contratos y convenciones”.
- Web docs — What’s new section:
presentation/index.htmlandindex-en.htmlinclude a new “Nuevas mejoras / What’s new” slide with a collapsible block per version (<details><summary>…</summary>) starting with 0.0.21 and a concrete code snippet forLoginRequestedEvent + emitTyped. Future releases can append new collapsibles there. - Analytics for documentation site: Both
presentation/index.htmlandindex-en.htmlnow embed Google Analytics 4 (G-Q2XTRMEHHH) so you can track visits to the Omega documentation pages.
0.0.20 #
- Inspector (VM Service + public web): [OmegaInspectorServer] now exposes Omega state via a VM Service extension instead of a local HTTP server. On Android/iOS/desktop it prints a URL of the form
https://yefersonsegura.com/projects/omega/inspector.html#<encoded-VM-URL>that opens the online Inspector and auto-connects; noadb reverseis required. - Inspector CLI: New CLI command
omega inspectoropens the hosted Inspector page in the browser. When combined with the URL printed by [OmegaInspectorServer], you can debug a device from the PC without searching for the HTML file. - Inspector UI refresh (web + public):
presentation/inspector.htmland the web receiver (OmegaInspectorReceiverinomega_inspector_receiver_web.dart) share a modern dark dashboard layout: flows sidebar, events list with timeline, and a JSON details panel for the selected event/flow. Layout adapts to desktop, tablet and mobile widths. - Inspector server (web stub): When [OmegaInspectorServer.start] is called on web, a debug message is printed explaining that the server is not available on web and to use [OmegaInspectorLauncher] instead.
0.0.19 #
- Channel namespaces: OmegaChannel.namespace and [OmegaChannelNamespace] for scoped events (e.g.
auth,checkout). [OmegaEvent] and [OmegaIntent] have optionalnamespace; [OmegaEventBus] abstraction so [OmegaFlow] and [OmegaAgent] accept either the global channel or a namespace view. Example app uses namespaces per domain (auth, provider, orders). ROADMAP and doc/GUIA.md updated. - Inspector server (web stub): When [OmegaInspectorServer.start] is called on web, a debug message is printed explaining that the server is not available on web and to use [OmegaInspectorLauncher] instead.
- Inspector example and docs: Example app shows overlay + launcher + server in debug; doc/INSPECTOR.md added with full copy-paste guide (overlay, launcher, server) and "Inspector not showing" troubleshooting.
- Inspector server (IO) encoding fix: Events whose payload is an [OmegaIntent] (e.g.
navigation.intent) are now serialized safely for WebSocket broadcast; fixes "Converting object to an encodable object failed: Instance of 'OmegaIntent'" when running on mobile or desktop with the Inspector server.
0.0.18 #
- CLI: Wrapped single-statement
ifbody inomega doctorin a block to satisfycurly_braces_in_flow_control_structureslint.
0.0.17 #
- OmegaInspectorServer: Inspector in browser (desktop/mobile): OmegaInspectorServer.start runs an HTTP/WebSocket server so you can open the Inspector at e.g.
http://localhost:9292without the in-app overlay. Stub on web (no-op). Example and doc/GUIA.md updated. - Inspector safe for production: [OmegaInspector], [OmegaInspectorLauncher], [OmegaInspectorReceiver] and [OmegaInspectorServer] guard with
kDebugMode: in release they do not subscribe, show the button, or start the server; receiver shows a short message. No inspector code runs in production. - CLI: Replaced
printwithstdout.writelninbin/omega.dartto satisfy theavoid_printlint. - Docs: README and example/README with Inspector usage (overlay, launcher, server). Web docs (ES/EN): "Uso del Inspector" in OmegaScope section and API section updated with OmegaInspectorServer and release behavior.
0.0.16 #
- omega trace: CLI command
omega trace view <file.json>(trace summary: events, initial snapshot) andomega trace validate <file.json>(validates structure; exit 0/1). Trace files are generated by saving [OmegaRecordedSession.toJson()] (e.g. after [OmegaTimeTravelRecorder.stopRecording]). - omega doctor: CLI command that checks project health: validates
omega_setup.dart(structure, duplicate IDs) and optionally lists flows/agents without a contract (recommendation). - Trace serialization: [OmegaEvent.toJson]/[OmegaEvent.fromJson] and [OmegaRecordedSession.toJson]/[OmegaRecordedSession.fromJson] to save and load recorded sessions (time-travel, debugging).
- CLI documentation: CLI section on the web (ES/EN) in tabs (doc, init, g ecosystem, g agent, g flow, validate, trace, doctor) with "Why", instruction (both forms when applicable), concept and examples. README: commands listed one under the other with Why, instruction, concept and examples;
omega doctorandomega initin both forms (with/without path, with/without--force). - Export session to JSON: In doc/TIME_TRAVEL.md section "Export session to JSON (trace file)" with examples for mobile (path_provider + File), web (blob + download) and minimal usage. README and trace tab on the web with snippet and link to TIME_TRAVEL.md.
- Example: Contracts added to OrdersFlow, ProviderFlow and ProviderAgent so
omega doctordoes not list them under "Optional (contracts)".
0.0.15 #
- Inspector: Visual tweaks for a cleaner, more modern look (softer colors, fewer shadows, clearer separation between event list and flow state), keeping all previous functionality.
0.0.14 #
- Declarative contracts: [OmegaFlowContract] and [OmegaAgentContract] to declare which events a flow listens to, which intents it accepts, and which expression types it emits (and for agents: events and intents). In debug mode Omega warns in the console when something undeclared is received or emitted. Optional
contractoverride on [OmegaFlow] and [OmegaAgent]; empty sets = no restriction. FactoryfromTypedfor [OmegaEventName]/[OmegaIntentName] enums. - Time-travel: [OmegaTimeTravelRecorder] records channel events and an initial snapshot; [OmegaRecordedSession] stores them.
replay(session, channel, flowManager, upToIndex: n)restores the snapshot and re-emits events up to index n for debugging or reproducing a session. See doc/TIME_TRAVEL.md. Web (presentation): "Time-travel" section in Spanish and English. - Offline-first (infra): New types [OmegaQueuedIntent], [OmegaOfflineQueue] and [OmegaMemoryOfflineQueue] to queue intents when the network fails and re-emit them when connectivity is restored. Example in
example/(OrdersFlow+ "Crear pedido (offline demo)" button onHomePage). - Inspector / DevTools: Cleaner dashboard-style inspector: two columns (events on the left, flow state on the right) with a small timeline of recent events above the list, in both overlay and web window.
- Docs: doc/CONTRACTS.md with guide and examples; doc/TIME_TRAVEL.md and Offline-first section in doc/GUIA.md; web (presentation) with glossary and mentions of contracts, time-travel, offline queue and timeline.
0.0.13 #
- Pub.dev: README with https links only (documentation points to pub.dev API reference). CLI:
ifbody inbin/omega.dartwrapped in a block to pass the lint and recover points.
0.0.12 #
- Favicon: SVG favicon with Omega symbol drawn by path (no font dependency). Link in
presentation/index.html. - CLI: Command
omega docopens the official web documentation in the browser. - Web documentation: Reading progress bar, copy button on code blocks, light/dark theme with persistence, scroll-to-top button, SEO meta, breadcrumbs, footer with version, accessibility (skip-link, focus-visible). Font Awesome icons in sidebar and navigation.
- Docs: GUIA.md, README with documentation badge, example with link to docs. pubspec: documentation, issue_tracker.
0.0.11 #
- Documentation: doc/COMPARATIVA.md with Omega vs BLoC vs Riverpod comparison and when to choose each. Web (presentation) declared as full documentation; "Comparativa" link in navigation. README and ROADMAP updated.
- Inspector: Modern design (blue theme, gradients, shadowed cards, pills for state and counts). Same style in overlay and remote (web) window.
- Inspector web: When closing the inspector window and reopening, a unique window name is used so the browser opens a new window correctly.
0.0.10 #
- Pub.dev static analysis: Inspector web migrated from
dart:htmltopackage:webanddart:js_interopto remove deprecation INFO and recover 10 points on "Pass static analysis". Dependencyweb: ^1.0.0added.
0.0.9 #
- Typed events and intents: [OmegaEventName] and [OmegaIntentName] (interfaces) + [OmegaEvent.fromName] and [OmegaIntent.fromName] to use enums or classes and avoid magic strings (autocomplete, refactors). Documentation in README, ARQUITECTURA and ROADMAP; tests in omega_channel_test and omega_intent_test.
- Example:
example/lib/omega/app_semantics.dartwith AppEvent and AppIntent enums; main, auth_flow, auth_agent, auth_behavior and auth_page use fromName and typed names. example/README.md updated.
0.0.8 #
- Persistence and restore: Snapshot serialization with
OmegaFlowSnapshot.toJson/fromJsonandOmegaAppSnapshot.toJson/fromJson.OmegaFlow.restoreMemoryandOmegaFlowManager.restoreFromSnapshotto restore state when opening the app. OptionalOmegaSnapshotStorageinterface (save/load). Documentation in README, ARQUITECTURA and ROADMAP. - Pub.dev:
dependency_overrides: meta: ^1.18.1to pass "Support up-to-date dependencies" in static analysis.
0.0.7 #
- Inspector in separate window (web, Isar-style): [OmegaInspectorLauncher] opens the inspector in another browser tab/window; the app sends data via BroadcastChannel. [OmegaInspectorReceiver] shows events and snapshots in that window. On non-web platforms the launcher opens the inspector in a dialog. Documentation in README and ARQUITECTURA.
0.0.6 #
- CLI fix: When running
g agent <Name>org flow <Name>separately, the CLI now only removes and re-adds the import for the artifact being registered (agent or flow), so the other import is preserved. Previously, runningg flow Ordersafterg agent Orderscould remove the agent import. - Snapshot (Step 2):
OmegaFlowSnapshotandOmegaAppSnapshotfor debugging, persistence, and time-travel.OmegaFlow.getSnapshot(),OmegaFlowManager.getFlowSnapshot,getSnapshots,getAppSnapshot. Documentation of purpose in dartdoc and ARQUITECTURA. - Logging (Step 3): Replaced
printwithdebugPrintinomega_navigator.dartandomega_bootstrap.dart(lib) so diagnostics only appear in debug mode. - Navigation (Step 4): Contract documented (
navigation.intent,navigate.*).navigate.<id>= pushReplacement,navigate.push.<id>= push. Intent payload passed asRouteSettings.arguments. ConstantnavigationIntentEvent. - Testing (Step 5): More unit tests (agent receiveIntent, flow receiveIntent running/idle, OmegaFlowExpression).
example/README.mdfor minimal login flow.doc/TESTING.mdfor testing agents and flows without Flutter. - CLI (Step 6): Clearer error messages (prefix "Error:", absolute paths). New generators:
omega g agent <Name>,omega g flow <Name>.omega validatechecks omega_setup.dart (structure, duplicate ids). All generators create files in the terminal's current directory (CWD). - Docs: ARQUITECTURA.md and README kept in sync with snapshot, navigation, testing, and CLI.
0.0.5 #
- Fix static analysis: enclose
whilebody in a block inbin/omega.dart(pub.dev lint).
0.0.4 #
- CLI
g ecosystem: create files in the current directory (where you run the command), not forced underlib/. - CLI: refresh imports in
omega_setup.dart(replace old paths with the correct one for the ecosystem). - CLI: register both Agent and Flow in
OmegaConfig; addflows:section if missing inomega_setup.dart. - Docs: README and web updated with CLI behavior (CWD, path refresh, flow registration).
0.0.3 #
- Add official example in
example/lib/main.dartfor pub.dev scoring. - Tweak documentation (README and website) to point to pub.dev installation.
0.0.2 #
- Publish on pub.dev and switch doc/install to pub.dev usage (
omega_architecture: ^0.0.2). - Add web documentation (presentation) and architecture diagram.
- Improve CLI behavior (flows/agents registration, no auto-route creation).
- Clarify runtime bootstrap and flow activation from the app host.
0.0.1 #
- Initial release of Omega Architecture: core agents/flows/channel runtime, basic CLI and auth example.