Compare commits

..

2 Commits

Author SHA1 Message Date
Alex Blank 9c4500f9cb Merge branch 'dev' of ssh://git.commumedia.org:2222/alex/headquarter into dev 2026-05-29 16:15:37 +02:00
Alex Blank 1e2c5a68cf fix: pass SSH keys and config profile to startInstance in create form
The create-session-form was calling startInstance() without passing the
selected config profile and SSH keys. This caused the backend to receive
ssh_key_ids=[] and clear the keys that were stored during createInstance.
The .ssh directory was never mounted because instance.ssh_key_ids was
wiped during the start call.

Also includes minor formatting cleanup on the data migration.

Quality gates: pytest (18 passed)
2026-05-29 16:14:40 +02:00
2 changed files with 29 additions and 13 deletions
@@ -25,14 +25,18 @@ def upgrade() -> None:
# Get the pi-agent manifest
result = conn.execute(
sa.text("SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'")
sa.text(
"SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'"
)
)
row = result.fetchone()
if not row:
return
manifest_id, manifest_json = row
manifest = manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
manifest = (
manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
)
mounts = manifest.get("mounts", [])
original_count = len(mounts)
@@ -58,14 +62,18 @@ def downgrade() -> None:
conn = op.get_bind()
result = conn.execute(
sa.text("SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'")
sa.text(
"SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'"
)
)
row = result.fetchone()
if not row:
return
manifest_id, manifest_json = row
manifest = manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
manifest = (
manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
)
mounts = manifest.get("mounts", [])
@@ -74,14 +82,16 @@ def downgrade() -> None:
return
# Add the ssh_keys mount back
mounts.append({
"name": "ssh_keys",
"target": "/home/user/.ssh",
"source_type": "ssh_key",
"mode": "0700",
"file_mode": "0600",
"readonly": True,
})
mounts.append(
{
"name": "ssh_keys",
"target": "/home/user/.ssh",
"source_type": "ssh_key",
"mode": "0700",
"file_mode": "0600",
"readonly": True,
}
)
manifest["mounts"] = mounts
conn.execute(
@@ -171,7 +171,13 @@ export const CreateSessionForm = ({
);
setProgress("Starting container...");
await startInstance(projectId, repoId, instance.id);
await startInstance(
projectId,
repoId,
instance.id,
selectedConfigProfile || undefined,
selectedSshKeyIds.length > 0 ? selectedSshKeyIds : undefined
);
// Reset form
if (!fixedProjectId) setSelectedProject("");