fix(runtime): isolate agent state by project (#101)

This commit is contained in:
2026-07-25 22:14:02 +02:00
parent 6a87c4635f
commit 6e98fd89f7
52 changed files with 1894 additions and 805 deletions

View File

@ -418,7 +418,10 @@ async fn save_then_list_then_delete() {
let store = FakeProfileStore::default();
let save = SaveProfile::new(Arc::new(store.clone()));
let list = ListProfiles::new(Arc::new(store.clone()));
let delete = DeleteProfile::new(Arc::new(store.clone()), Arc::new(FakeSecretStore::default()));
let delete = DeleteProfile::new(
Arc::new(store.clone()),
Arc::new(FakeSecretStore::default()),
);
let p = profile(1, "Claude", "claude");
let saved = save
@ -532,7 +535,10 @@ async fn save_opencode_provider_profile_drops_stale_local_backend() {
.await
.unwrap();
assert!(out.profile.opencode.is_none(), "stale local backend dropped");
assert!(
out.profile.opencode.is_none(),
"stale local backend dropped"
);
assert_eq!(
out.profile.opencode_provider.as_ref().unwrap().provider_id,
"anthropic"
@ -571,7 +577,13 @@ async fn delete_profile_with_opencode_provider_purges_its_secret() {
})
.await
.unwrap();
let secret_ref = saved.profile.opencode_provider.as_ref().unwrap().api_key_ref.clone();
let secret_ref = saved
.profile
.opencode_provider
.as_ref()
.unwrap()
.api_key_ref
.clone();
assert_eq!(
secrets.get(&secret_ref).await.unwrap(),
Some("sk-live-to-be-purged".to_owned())
@ -707,8 +719,14 @@ async fn clone_opencode_profile_accepts_a_cloud_provider_seed() {
)
.unwrap(),
);
assert!(cloud_seed.opencode.is_none(), "precondition: cloud seed has no local backend");
assert!(cloud_seed.opencode_provider.is_some(), "precondition: cloud seed has a provider");
assert!(
cloud_seed.opencode.is_none(),
"precondition: cloud seed has no local backend"
);
assert!(
cloud_seed.opencode_provider.is_some(),
"precondition: cloud seed has a provider"
);
SaveProfile::new(Arc::new(store.clone()))
.execute(SaveProfileInput {
@ -787,12 +805,13 @@ async fn clone_opencode_profile_falls_back_to_catalogue_when_persisted_seed_is_n
None,
)
.unwrap();
assert_eq!(squatter.structured_adapter, None, "precondition: not an OpenCode profile");
assert_eq!(
squatter.structured_adapter, None,
"precondition: not an OpenCode profile"
);
SaveProfile::new(Arc::new(store.clone()))
.execute(SaveProfileInput {
profile: squatter,
})
.execute(SaveProfileInput { profile: squatter })
.await
.unwrap();