(session: Session, permissionMode: PermissionMode)
| 861 | } |
| 862 | |
| 863 | private persistPreferredPermissionMode(session: Session, permissionMode: PermissionMode): void { |
| 864 | const currentMetadata = session.metadata |
| 865 | if (!currentMetadata || currentMetadata.preferredPermissionMode === permissionMode) { |
| 866 | return |
| 867 | } |
| 868 | |
| 869 | const nextMetadata = { ...currentMetadata, preferredPermissionMode: permissionMode } |
| 870 | const result = this.store.sessions.updateSessionMetadata( |
| 871 | session.id, |
| 872 | nextMetadata, |
| 873 | session.metadataVersion, |
| 874 | session.namespace, |
| 875 | { touchUpdatedAt: false } |
| 876 | ) |
| 877 | |
| 878 | if (result.result === 'error') { |
| 879 | return |
| 880 | } |
| 881 | |
| 882 | const parsed = MetadataSchema.safeParse(result.value) |
| 883 | if (!parsed.success) { |
| 884 | return |
| 885 | } |
| 886 | |
| 887 | session.metadata = parsed.data |
| 888 | session.metadataVersion = result.version |
| 889 | } |
| 890 | |
| 891 | private mergeAgentState(oldState: unknown | null, newState: unknown | null): unknown | null { |
| 892 | if (oldState === null) return newState |
no test coverage detected