xworkmate-app/lib/runtime/runtime_models_gateway_entities.dart

378 lines
8.9 KiB
Dart

// ignore_for_file: unused_import, unnecessary_import
import 'dart:convert';
import '../i18n/app_language.dart';
import '../models/app_models.dart';
import 'runtime_models_connection.dart';
import 'runtime_models_profiles.dart';
import 'runtime_models_configs.dart';
import 'runtime_models_settings_snapshot.dart';
import 'runtime_models_runtime_payloads.dart';
import 'runtime_models_multi_agent.dart';
class GatewayChatAttachmentPayload {
const GatewayChatAttachmentPayload({
required this.type,
required this.mimeType,
required this.fileName,
required this.content,
this.sha256 = '',
this.sourcePath = '',
});
final String type;
final String mimeType;
final String fileName;
final String content;
final String sha256;
final String sourcePath;
Map<String, dynamic> toJson() {
return {
'type': type,
'mimeType': mimeType,
'fileName': fileName,
'content': content,
if (sha256.trim().isNotEmpty) 'sha256': sha256.trim(),
if (sourcePath.trim().isNotEmpty) 'sourcePath': sourcePath.trim(),
};
}
}
class GatewayInstanceSummary {
const GatewayInstanceSummary({
required this.id,
required this.host,
required this.ip,
required this.version,
required this.platform,
required this.deviceFamily,
required this.modelIdentifier,
required this.lastInputSeconds,
required this.mode,
required this.reason,
required this.text,
required this.timestampMs,
});
final String id;
final String? host;
final String? ip;
final String? version;
final String? platform;
final String? deviceFamily;
final String? modelIdentifier;
final int? lastInputSeconds;
final String? mode;
final String? reason;
final String text;
final double timestampMs;
}
class GatewaySkillSummary {
const GatewaySkillSummary({
required this.name,
required this.description,
required this.source,
required this.skillKey,
required this.primaryEnv,
required this.eligible,
required this.disabled,
required this.missingBins,
required this.missingEnv,
required this.missingConfig,
});
final String name;
final String description;
final String source;
final String skillKey;
final String? primaryEnv;
final bool eligible;
final bool disabled;
final List<String> missingBins;
final List<String> missingEnv;
final List<String> missingConfig;
}
class GatewayConnectorSummary {
const GatewayConnectorSummary({
required this.id,
required this.label,
required this.detailLabel,
required this.accountName,
required this.configured,
required this.enabled,
required this.running,
required this.connected,
required this.status,
required this.lastError,
required this.meta,
});
final String id;
final String label;
final String detailLabel;
final String? accountName;
final bool configured;
final bool enabled;
final bool running;
final bool connected;
final String status;
final String? lastError;
final List<String> meta;
}
class GatewayModelSummary {
const GatewayModelSummary({
required this.id,
required this.name,
required this.provider,
required this.contextWindow,
required this.maxOutputTokens,
});
final String id;
final String name;
final String provider;
final int? contextWindow;
final int? maxOutputTokens;
}
class GatewayCronJobSummary {
const GatewayCronJobSummary({
required this.id,
required this.name,
required this.description,
required this.enabled,
required this.agentId,
required this.scheduleLabel,
required this.nextRunAtMs,
required this.lastRunAtMs,
required this.lastStatus,
required this.lastError,
});
final String id;
final String name;
final String? description;
final bool enabled;
final String? agentId;
final String scheduleLabel;
final int? nextRunAtMs;
final int? lastRunAtMs;
final String? lastStatus;
final String? lastError;
}
class GatewayDevicePairingList {
const GatewayDevicePairingList({required this.pending, required this.paired});
final List<GatewayPendingDevice> pending;
final List<GatewayPairedDevice> paired;
const GatewayDevicePairingList.empty()
: pending = const <GatewayPendingDevice>[],
paired = const <GatewayPairedDevice>[];
}
class GatewayPendingDevice {
const GatewayPendingDevice({
required this.requestId,
required this.deviceId,
required this.displayName,
required this.role,
required this.scopes,
required this.remoteIp,
required this.isRepair,
required this.requestedAtMs,
});
final String requestId;
final String deviceId;
final String? displayName;
final String? role;
final List<String> scopes;
final String? remoteIp;
final bool isRepair;
final int? requestedAtMs;
String get label {
final display = displayName?.trim() ?? '';
return display.isEmpty ? deviceId : display;
}
}
class GatewayPairedDevice {
const GatewayPairedDevice({
required this.deviceId,
required this.displayName,
required this.roles,
required this.scopes,
required this.remoteIp,
required this.tokens,
required this.createdAtMs,
required this.approvedAtMs,
required this.currentDevice,
});
final String deviceId;
final String? displayName;
final List<String> roles;
final List<String> scopes;
final String? remoteIp;
final List<GatewayDeviceTokenSummary> tokens;
final int? createdAtMs;
final int? approvedAtMs;
final bool currentDevice;
String get label {
final display = displayName?.trim() ?? '';
return display.isEmpty ? deviceId : display;
}
}
class GatewayDeviceTokenSummary {
const GatewayDeviceTokenSummary({
required this.role,
required this.scopes,
required this.createdAtMs,
required this.rotatedAtMs,
required this.revokedAtMs,
required this.lastUsedAtMs,
});
final String role;
final List<String> scopes;
final int? createdAtMs;
final int? rotatedAtMs;
final int? revokedAtMs;
final int? lastUsedAtMs;
bool get revoked => revokedAtMs != null;
}
class SecretReferenceEntry {
const SecretReferenceEntry({
required this.name,
required this.provider,
required this.module,
required this.maskedValue,
required this.status,
});
final String name;
final String provider;
final String module;
final String maskedValue;
final String status;
}
class SecretAuditEntry {
const SecretAuditEntry({
required this.timeLabel,
required this.action,
required this.provider,
required this.target,
required this.module,
required this.status,
});
final String timeLabel;
final String action;
final String provider;
final String target;
final String module;
final String status;
Map<String, dynamic> toJson() {
return {
'timeLabel': timeLabel,
'action': action,
'provider': provider,
'target': target,
'module': module,
'status': status,
};
}
factory SecretAuditEntry.fromJson(Map<String, dynamic> json) {
return SecretAuditEntry(
timeLabel: json['timeLabel'] as String? ?? '',
action: json['action'] as String? ?? '',
provider: json['provider'] as String? ?? '',
target: json['target'] as String? ?? '',
module: json['module'] as String? ?? '',
status: json['status'] as String? ?? '',
);
}
}
class DerivedTaskItem {
const DerivedTaskItem({
required this.id,
required this.title,
required this.owner,
required this.status,
required this.surface,
required this.startedAtLabel,
required this.durationLabel,
required this.summary,
required this.sessionKey,
});
final String id;
final String title;
final String owner;
final String status;
final String surface;
final String startedAtLabel;
final String durationLabel;
final String summary;
final String sessionKey;
}
class LocalDeviceIdentity {
const LocalDeviceIdentity({
required this.deviceId,
required this.publicKeyBase64Url,
required this.privateKeyBase64Url,
required this.createdAtMs,
});
final String deviceId;
final String publicKeyBase64Url;
final String privateKeyBase64Url;
final int createdAtMs;
Map<String, dynamic> toJson() {
return <String, dynamic>{
'deviceId': deviceId,
'publicKeyBase64Url': publicKeyBase64Url,
'privateKeyBase64Url': privateKeyBase64Url,
'createdAtMs': createdAtMs,
};
}
factory LocalDeviceIdentity.fromJson(Map<String, dynamic> json) {
return LocalDeviceIdentity(
deviceId: json['deviceId'] as String? ?? '',
publicKeyBase64Url: json['publicKeyBase64Url'] as String? ?? '',
privateKeyBase64Url: json['privateKeyBase64Url'] as String? ?? '',
createdAtMs: (json['createdAtMs'] as num?)?.toInt() ?? 0,
);
}
}
class CollaborationAttachment {
const CollaborationAttachment({
required this.name,
required this.description,
required this.path,
});
final String name;
final String description;
final String path;
}