Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T04:10:28.560Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

full_auto_ui.rs

88 lines · 3.5 KB · rust
1//! Omega GPUI Full Auto launcher and concurrent run monitor (`OMEGA-FA-03`).
2//!
3//! Full Auto is a dedicated run surface. It is never a composer toggle.
4//! Durable mutation goes only through supervised `omega_effectd`.
5
6mod dispatch;
7mod draft;
8mod evidence_chain;
9mod issue31_adjunct;
10mod issue31_delivery;
11mod issue31_observation;
12mod panel;
13mod provider_roster;
14mod thread_run_link;
15
16pub use dispatch::{DispatchRefusal, FullAutoDispatch};
17pub use draft::{
18    validate_launcher_draft, FullAutoLauncherDraft, LauncherValidation, DEFAULT_DONE_CONDITION,
19    DEFAULT_TURN_CAP, FULL_AUTO_ACTIVE_LIMIT, FULL_AUTO_WORKSPACE_REF,
20};
21pub use evidence_chain::FullAutoEvidenceView;
22pub use issue31_adjunct::{
23    publish_issue31_host_snapshot, Issue31HostIdentitySource, Issue31HostProjectionError,
24    Issue31HostPublication,
25    project_issue31_full_auto_adjunct, Issue31FullAutoLiveSources, Issue31FullAutoProjectionError,
26};
27pub use issue31_delivery::{
28    issue31_host_projection_documents, issue31_host_projection_source,
29    issue31_provider_roster_source,
30    latest_issue31_live_reading, set_issue31_live_reading, Issue31FullAutoReading,
31};
32pub use issue31_observation::{
33    observe_issue31_full_auto, Issue31ObservationError, MAX_ISSUE31_PROJECTED_RUNS,
34};
35pub use panel::FullAutoPanel;
36pub use provider_roster::{parse_provider_accounts, ProviderAccountRow};
37pub use thread_run_link::{
38    project_thread_run_link, ThreadRunLink, ThreadRunRecords, THREAD_RUN_LINK_MAX_AGE_MS,
39};
40
41#[cfg(test)]
42mod tests {
43    use super::*;
44
45    #[test]
46    fn launcher_requires_objective_and_rejects_blank_mission() {
47        let mut draft = FullAutoLauncherDraft::default();
48        assert!(!validate_launcher_draft(&draft).ok);
49        draft.objective = "Ship the Omega Full Auto launcher.".into();
50        draft.done_condition = DEFAULT_DONE_CONDITION.into();
51        assert!(validate_launcher_draft(&draft).ok);
52    }
53
54    /// Product law, restated for `OMEGA-DELTA-0020`.
55    ///
56    /// The owner asked for Full Auto to be folded into the Omega chat UI, so
57    /// "dedicated panel" is no longer the right half of this law. The half
58    /// that survives is the one with teeth: Full Auto authority is a dedicated
59    /// *entry*, never a flag on a chat draft. A flag is a boolean the send
60    /// path reads, so anything that can set it can start a run — a slash
61    /// command, a restored draft, a model-authored composer insertion. Owner
62    /// gate 8 forbids exactly that.
63    ///
64    /// The earlier version of this test asserted `module_path!()` contains
65    /// `full_auto_ui`, which is true of any test in this crate and therefore
66    /// checked nothing. It is replaced with a check that can fail: the draft
67    /// carries no field the send path could read as "run this automatically".
68    #[test]
69    fn full_auto_is_not_a_composer_mode_flag() {
70        let draft = format!("{:?}", FullAutoLauncherDraft::default());
71        for flag in [
72            "full_auto: ",
73            "auto: true",
74            "autonomous",
75            "composer_mode",
76            "send_starts_run",
77        ] {
78            assert!(
79                !draft.contains(flag),
80                "FullAutoLauncherDraft grew {flag:?}: {draft}. Full Auto is \
81                 reached by a dedicated entry and started by a dedicated \
82                 button, never by a flag a send path reads."
83            );
84        }
85        assert_eq!(FULL_AUTO_ACTIVE_LIMIT, 8);
86    }
87}
88
Served at tenant.openagents/omega Member data and write actions are omitted.