Merge nucleic/amber-harbor-egret into dev
This commit is contained in:
@@ -407,7 +407,7 @@ final class HostConnection {
|
|||||||
releaseChannel: BuildInfo.current.channel.releaseChannel,
|
releaseChannel: BuildInfo.current.channel.releaseChannel,
|
||||||
// Mesh "join": advertise roster gossip so a host pushes its group view — the phone
|
// Mesh "join": advertise roster gossip so a host pushes its group view — the phone
|
||||||
// then auto-learns and connects to every Mac in the mesh, not just the one it scanned.
|
// then auto-learns and connects to every Mac in the mesh, not just the one it scanned.
|
||||||
// Also offer this phone as a low-tier AFM executor (ANTIMATTER_RUNNER §5) when the
|
// Also offer this phone as a low-tier AFM executor (CARBON_RUNNER §5) when the
|
||||||
// OS has Foundation Models — a runner host's mesh queue may place background work
|
// OS has Foundation Models — a runner host's mesh queue may place background work
|
||||||
// here; the interactive tiers stay on desktop-class devices by the queue's rules.
|
// here; the interactive tiers stay on desktop-class devices by the queue's rules.
|
||||||
clientCaps: WireClientCapabilities(
|
clientCaps: WireClientCapabilities(
|
||||||
@@ -673,7 +673,7 @@ final class HostConnection {
|
|||||||
// resolves (success or failure). Correlation by requestID happens in RemoteStore.
|
// resolves (success or failure). Correlation by requestID happens in RemoteStore.
|
||||||
callbacks.projectCreated(outcome)
|
callbacks.projectCreated(outcome)
|
||||||
case .intelligenceRequest(let request):
|
case .intelligenceRequest(let request):
|
||||||
// A runner host delegated one AFM job here (docs/ANTIMATTER_RUNNER.md §5) — it only
|
// A runner host delegated one AFM job here (docs/CARBON_RUNNER.md §5) — it only
|
||||||
// ever sends these after this app advertised `canProvideIntelligence`. Generate off
|
// ever sends these after this app advertised `canProvideIntelligence`. Generate off
|
||||||
// the event stream (a model call takes seconds) and answer with the same id.
|
// the event stream (a model call takes seconds) and answer with the same id.
|
||||||
Task { [weak self] in
|
Task { [weak self] in
|
||||||
@@ -694,7 +694,7 @@ final class HostConnection {
|
|||||||
// The owner's runner-pool credential (item 4) — inert until the phone grows a
|
// The owner's runner-pool credential (item 4) — inert until the phone grows a
|
||||||
// pool-management surface; Macs are the managers today.
|
// pool-management surface; Macs are the managers today.
|
||||||
.runnerPoolCredential:
|
.runnerPoolCredential:
|
||||||
// Antimatter runner credential verbs (docs/ANTIMATTER_RUNNER.md §6): a runner host
|
// Carbon runner credential verbs (docs/CARBON_RUNNER.md §6): a runner host
|
||||||
// asking for / mirroring sealed credentials. Inert here until the phone-side vault
|
// asking for / mirroring sealed credentials. Inert here until the phone-side vault
|
||||||
// lands — and a host only sends these to clients that advertised the matching
|
// lands — and a host only sends these to clients that advertised the matching
|
||||||
// `WireClientCapabilities`, which this app doesn't yet.
|
// `WireClientCapabilities`, which this app doesn't yet.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import NucleicProtocol
|
|||||||
import FoundationModels
|
import FoundationModels
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// The phone-side executor for delegated intelligence work (docs/ANTIMATTER_RUNNER.md §5,
|
/// The phone-side executor for delegated intelligence work (docs/CARBON_RUNNER.md §5,
|
||||||
/// item 6): a runner host pushes `HostMsg.intelligenceRequest` at this device — the mesh AFM
|
/// item 6): a runner host pushes `HostMsg.intelligenceRequest` at this device — the mesh AFM
|
||||||
/// queue only ever sends it the lower tiers (`completion`/`background`), which don't need
|
/// queue only ever sends it the lower tiers (`completion`/`background`), which don't need
|
||||||
/// desktop tok/s — and this renders the shared `IntelligenceDelegate` template on the local
|
/// desktop tok/s — and this renders the shared `IntelligenceDelegate` template on the local
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ final class RemoteStore: ObservableObject {
|
|||||||
|
|
||||||
/// "Add a project" (Projects tab): the phone asks a connected host advertising
|
/// "Add a project" (Projects tab): the phone asks a connected host advertising
|
||||||
/// `canCreateProjects` to clone a git URL and register it (CLOUD_RUNTIME §4.3) — how a
|
/// `canCreateProjects` to clone a git URL and register it (CLOUD_RUNTIME §4.3) — how a
|
||||||
/// fresh Antimatter runner gets its first project. The outcome arrives asynchronously as
|
/// fresh Carbon runner gets its first project. The outcome arrives asynchronously as
|
||||||
/// `HostMsg.projectCreated`, correlated by the request id below; the project row itself
|
/// `HostMsg.projectCreated`, correlated by the request id below; the project row itself
|
||||||
/// rides the dashboard push.
|
/// rides the dashboard push.
|
||||||
enum AddProjectState: Equatable {
|
enum AddProjectState: Equatable {
|
||||||
@@ -1991,7 +1991,7 @@ final class RemoteStore: ObservableObject {
|
|||||||
// Never originated from here (connection-internal, or handled by dedicated loops).
|
// Never originated from here (connection-internal, or handled by dedicated loops).
|
||||||
// `requestPairingCode`/`cancelPairingCode` are sent straight to the chosen host by
|
// `requestPairingCode`/`cancelPairingCode` are sent straight to the chosen host by
|
||||||
// `requestPairingCode()`/`cancelPairingCode()`, not through this owner-routing switch.
|
// `requestPairingCode()`/`cancelPairingCode()`, not through this owner-routing switch.
|
||||||
// The runner verbs (intelligence results, credential mesh — ANTIMATTER_RUNNER §5–6) will
|
// The runner verbs (intelligence results, credential mesh — CARBON_RUNNER §5–6) will
|
||||||
// ride their own executor/vault loops when the phone side lands; nothing routes them here.
|
// ride their own executor/vault loops when the phone side lands; nothing routes them here.
|
||||||
// `createProject` (CLOUD_RUNTIME §4.3) will go straight to a user-chosen host when the
|
// `createProject` (CLOUD_RUNTIME §4.3) will go straight to a user-chosen host when the
|
||||||
// phone grows that UI — a brand-new project has no owner to route by.
|
// phone grows that UI — a brand-new project has no owner to route by.
|
||||||
@@ -2190,7 +2190,7 @@ final class RemoteStore: ObservableObject {
|
|||||||
// "Add a device" mint is handled directly against a live host, not via demoHandle;
|
// "Add a device" mint is handled directly against a live host, not via demoHandle;
|
||||||
// the demo path short-circuits in `requestPairingCode()` with a stand-in code.
|
// the demo path short-circuits in `requestPairingCode()` with a stand-in code.
|
||||||
.requestPairingCode, .cancelPairingCode, .respondMacPair,
|
.requestPairingCode, .cancelPairingCode, .respondMacPair,
|
||||||
// Antimatter runner verbs (ANTIMATTER_RUNNER §5–6) — demo has no runner host.
|
// Carbon runner verbs (CARBON_RUNNER §5–6) — demo has no runner host.
|
||||||
.intelligenceResult, .credentialManifest, .credentialProvision,
|
.intelligenceResult, .credentialManifest, .credentialProvision,
|
||||||
// Remote project creation (CLOUD_RUNTIME §4.3) — demo has no host to clone on.
|
// Remote project creation (CLOUD_RUNTIME §4.3) — demo has no host to clone on.
|
||||||
.createProject,
|
.createProject,
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ struct ProjectsView: View {
|
|||||||
.refreshable { store.refreshSessions() }
|
.refreshable { store.refreshSessions() }
|
||||||
.toolbar {
|
.toolbar {
|
||||||
// "Add a project" (CLOUD_RUNTIME §4.3): clone a git URL on a connected host —
|
// "Add a project" (CLOUD_RUNTIME §4.3): clone a git URL on a connected host —
|
||||||
// how a fresh Antimatter runner gets its first project. Hidden when no live
|
// how a fresh Carbon runner gets its first project. Hidden when no live
|
||||||
// host advertises `canCreateProjects` (an older Mac would reject the verb).
|
// host advertises `canCreateProjects` (an older Mac would reject the verb).
|
||||||
if store.canCreateProject {
|
if store.canCreateProject {
|
||||||
ToolbarItem(placement: .primaryAction) {
|
ToolbarItem(placement: .primaryAction) {
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ struct SettingsView: View {
|
|||||||
Button {
|
Button {
|
||||||
showScanner = true
|
showScanner = true
|
||||||
} label: {
|
} label: {
|
||||||
Label("Join an Antimatter mesh", systemImage: "qrcode.viewfinder")
|
Label("Join a Carbon mesh", systemImage: "circle.dotted.and.circle")
|
||||||
}
|
}
|
||||||
Button {
|
Button {
|
||||||
showManualPair = true
|
showManualPair = true
|
||||||
@@ -454,7 +454,7 @@ struct AddDeviceView: View {
|
|||||||
} header: {
|
} header: {
|
||||||
Text("Scan to join")
|
Text("Scan to join")
|
||||||
} footer: {
|
} footer: {
|
||||||
Text("On a new iPhone or iPad, open Nucleic Remote ▸ Join an Antimatter mesh and scan this. "
|
Text("On a new iPhone or iPad, open Nucleic Remote ▸ Join a Carbon mesh and scan this. "
|
||||||
+ "It joins the whole group — every Mac and device here.")
|
+ "It joins the whole group — every Mac and device here.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user