feat(desktop): name the computer an agent lives on — core (device identity, split from #6259) - #6698
feat(desktop): name the computer an agent lives on — core (device identity, split from #6259)#6698mfethe1 wants to merge 1 commit into
Conversation
94af576 to
6c46c27
Compare
|
DCO repaired tree-identically at This core is also the dependency for a follow-up owner-attested agent-directory capability/model surface (REG-4), which I will propose separately after this lands to keep each review focused. |
|
DCO is repaired at Ready for maintainer review whenever there's bandwidth; happy to rebase or address requested changes. |
6c46c27 to
365966c
Compare
🔐 Codex Security Review
|
…ble) Signed-off-by: Michael Fethe <mfethe1@gmail.com>
365966c to
1e4b870
Compare
|
Rebased onto current main ( |
Backend-only split of block#6259, assembled on current main (0720f53). Excludes the mention-UI half (MentionAutocomplete, useMentionSendFlow, useMentions, mentionCandidates, mentions.spec, e2eBridge) which conflicts with upstream block#6315/block#6337/block#6401 agentProvenance and needs a product decision, not a textual merge resolution. Also fixes 3 test-only RelayAgentInfo literals in relay_directory.rs that block#6259 head does not update; serde(default) does not fill struct literals, so cargo check --tests fails on 4e0764d without this. Gates: cargo fmt --check 0, cargo check --locked --tests 0, device_identity:: 16/16, managed_agents::agent_events:: 16/16, tsc --noEmit 0, agentDeviceLabel.test.mjs 4/4. Signed-off-by: Michael Feth <mfethe1@gmail.com>
1e4b870 to
8a8ad8c
Compare
Supersedes the conflict-free backend half of #6259 ("name the computer an agent lives on"). The mention-UI half of #6259 conflicts semantically with #6337/#6401 (
agentProvenance) and needs a product decision, so this PR carries only the parts that merge cleanly onto currentmain.What this adds
device_identity.rs(+551): opaque 32-hexdevice_idminted per install, user-editabledevice_label(validated: non-empty, ≤32 chars, control/format chars rejected), stable across restarts, persisted atomicallydevice_id/device_labelon kind:30177 records for local backends only — a provider-backed agent publishesdevice: null(it does not run on the owner's computer)RelayAgentInfogains optionaldevice_id/device_label(#[serde(default)]), projected from the directoryDeviceNameSettingsCardUI (Settings → Agents), mounted beforePreventSleepSettingsCardlistRelayAgentsmoves fromtauri.tstotauriRelayAgents.tswith the new fieldsWhy split from #6259
origin/mainmoved 38+ commits since feat(desktop): name the computer an agent lives on #6259's last rebase; all three textual conflicts are mention-UI files (MentionAutocomplete.tsx,useMentionSendFlow.ts,AgentsSettingsPanel.tsx) where feat(desktop-messages): keep agents addressed across messages #6315/fix(desktop): distinguish duplicate agent devices #6337/fix(desktop): simplify duplicate agent provenance #6401 landed a competing disambiguator. Resolving them textually would ship two disambiguators in one suggestion row.git merge-treeof feat(desktop): name the computer an agent lives on #6259 ×origin/main(preserving upstream's0.5.17→0.5.18bump andcustom_harness_dirinlib.rs), with the panel wiring applied semantically to currentmainrather than copying feat(desktop): name the computer an agent lives on #6259's stale whole-file version.RelayAgentInfoliterals inrelay_directory.rswere never updated for the new fields.#[serde(default)]does not fill struct literals, socargo check --testsfails on feat(desktop): name the computer an agent lives on #6259's head4e0764d4b(verified: exit 101, 3×E0063). This branch addsdevice_id: None, device_label: Noneto those three sites (detailed on feat(desktop): name the computer an agent lives on #6259: feat(desktop): name the computer an agent lives on #6259 (comment)).Verification (all on this branch's head, macOS 15.6 arm64, rustc 1.95.0)
cargo fmt --all -- --checkcargo check --locked --tests(tauri)device_identity::suitemanaged_agents::agent_events::suitetsc --noEmit(desktop)agentDeviceLabel.test.mjsNegative control on the core invariant: flipping only the
BackendKind::Providerarm of the device stamp tocurrent()fails exactly one test —projection_omits_the_device_for_a_provider_backend("a remote body must not be given this computer's id") — with 15/16 passing. Restored, 16/16. So the local-vs-provider gate is behaviorally pinned, not just compiled.Independently reproduced by @ScaleLeanChris on #6259 (macOS):
agentDeviceLabel.test.mjs4/4, focused Tauri device-identity tests 13/13, TS checking clean — the files exercised there are unchanged by the rebase.Scope / limitations
@autocomplete) intentionally remains unlanded pending reconciliation withagentProvenance(fix(desktop): distinguish duplicate agent devices #6337/fix(desktop): simplify duplicate agent provenance #6401).