refactor: remove session syncing metadata
parent
c0c20ebf3e
commit
ce04308c17
|
|
@ -5,8 +5,7 @@ enum SessionActions {
|
||||||
static func patchSession(
|
static func patchSession(
|
||||||
key: String,
|
key: String,
|
||||||
thinking: String?? = nil,
|
thinking: String?? = nil,
|
||||||
verbose: String?? = nil,
|
verbose: String?? = nil) async throws
|
||||||
syncing: SessionSyncingValue?? = nil) async throws
|
|
||||||
{
|
{
|
||||||
var params: [String: AnyHashable] = ["key": AnyHashable(key)]
|
var params: [String: AnyHashable] = ["key": AnyHashable(key)]
|
||||||
|
|
||||||
|
|
@ -16,20 +15,6 @@ enum SessionActions {
|
||||||
if let verbose {
|
if let verbose {
|
||||||
params["verboseLevel"] = verbose.map(AnyHashable.init) ?? AnyHashable(NSNull())
|
params["verboseLevel"] = verbose.map(AnyHashable.init) ?? AnyHashable(NSNull())
|
||||||
}
|
}
|
||||||
if let syncing {
|
|
||||||
let payload: AnyHashable = {
|
|
||||||
switch syncing {
|
|
||||||
case .none:
|
|
||||||
AnyHashable(NSNull())
|
|
||||||
case let .some(value):
|
|
||||||
switch value {
|
|
||||||
case let .bool(v): AnyHashable(v)
|
|
||||||
case let .string(v): AnyHashable(v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
params["syncing"] = payload
|
|
||||||
}
|
|
||||||
|
|
||||||
_ = try await ControlChannel.shared.request(method: "sessions.patch", params: params)
|
_ = try await ControlChannel.shared.request(method: "sessions.patch", params: params)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,65 +1,6 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
enum SessionSyncingValue: Codable, Equatable {
|
|
||||||
case bool(Bool)
|
|
||||||
case string(String)
|
|
||||||
|
|
||||||
init(from decoder: Decoder) throws {
|
|
||||||
let container = try decoder.singleValueContainer()
|
|
||||||
if let value = try? container.decode(Bool.self) {
|
|
||||||
self = .bool(value)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if let value = try? container.decode(String.self) {
|
|
||||||
self = .string(value)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
throw DecodingError.typeMismatch(
|
|
||||||
SessionSyncingValue.self,
|
|
||||||
DecodingError.Context(
|
|
||||||
codingPath: decoder.codingPath,
|
|
||||||
debugDescription: "Expected Bool or String"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func encode(to encoder: Encoder) throws {
|
|
||||||
var container = encoder.singleValueContainer()
|
|
||||||
switch self {
|
|
||||||
case let .bool(value):
|
|
||||||
try container.encode(value)
|
|
||||||
case let .string(value):
|
|
||||||
try container.encode(value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var isOn: Bool {
|
|
||||||
switch self {
|
|
||||||
case let .bool(value):
|
|
||||||
value
|
|
||||||
case let .string(value):
|
|
||||||
value.lowercased() == "on"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var isOff: Bool {
|
|
||||||
switch self {
|
|
||||||
case let .bool(value):
|
|
||||||
!value
|
|
||||||
case let .string(value):
|
|
||||||
value.lowercased() == "off"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var label: String {
|
|
||||||
switch self {
|
|
||||||
case let .bool(value):
|
|
||||||
value ? "on" : "off"
|
|
||||||
case let .string(value):
|
|
||||||
value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct GatewaySessionDefaultsRecord: Codable {
|
struct GatewaySessionDefaultsRecord: Codable {
|
||||||
let model: String?
|
let model: String?
|
||||||
let contextTokens: Int?
|
let contextTokens: Int?
|
||||||
|
|
@ -73,7 +14,6 @@ struct GatewaySessionEntryRecord: Codable {
|
||||||
let abortedLastRun: Bool?
|
let abortedLastRun: Bool?
|
||||||
let thinkingLevel: String?
|
let thinkingLevel: String?
|
||||||
let verboseLevel: String?
|
let verboseLevel: String?
|
||||||
let syncing: SessionSyncingValue?
|
|
||||||
let inputTokens: Int?
|
let inputTokens: Int?
|
||||||
let outputTokens: Int?
|
let outputTokens: Int?
|
||||||
let totalTokens: Int?
|
let totalTokens: Int?
|
||||||
|
|
@ -129,7 +69,6 @@ struct SessionRow: Identifiable {
|
||||||
let sessionId: String?
|
let sessionId: String?
|
||||||
let thinkingLevel: String?
|
let thinkingLevel: String?
|
||||||
let verboseLevel: String?
|
let verboseLevel: String?
|
||||||
let syncing: SessionSyncingValue?
|
|
||||||
let systemSent: Bool
|
let systemSent: Bool
|
||||||
let abortedLastRun: Bool
|
let abortedLastRun: Bool
|
||||||
let tokens: SessionTokenStats
|
let tokens: SessionTokenStats
|
||||||
|
|
@ -141,13 +80,6 @@ struct SessionRow: Identifiable {
|
||||||
var flags: [String] = []
|
var flags: [String] = []
|
||||||
if let thinkingLevel { flags.append("think \(thinkingLevel)") }
|
if let thinkingLevel { flags.append("think \(thinkingLevel)") }
|
||||||
if let verboseLevel { flags.append("verbose \(verboseLevel)") }
|
if let verboseLevel { flags.append("verbose \(verboseLevel)") }
|
||||||
if let syncing {
|
|
||||||
if syncing.isOn {
|
|
||||||
flags.append("syncing")
|
|
||||||
} else if !syncing.label.isEmpty {
|
|
||||||
flags.append("sync \(syncing.label)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if self.systemSent { flags.append("system sent") }
|
if self.systemSent { flags.append("system sent") }
|
||||||
if self.abortedLastRun { flags.append("aborted") }
|
if self.abortedLastRun { flags.append("aborted") }
|
||||||
return flags
|
return flags
|
||||||
|
|
@ -199,7 +131,6 @@ extension SessionRow {
|
||||||
sessionId: "sess-direct-1234",
|
sessionId: "sess-direct-1234",
|
||||||
thinkingLevel: "low",
|
thinkingLevel: "low",
|
||||||
verboseLevel: "info",
|
verboseLevel: "info",
|
||||||
syncing: .bool(true),
|
|
||||||
systemSent: false,
|
systemSent: false,
|
||||||
abortedLastRun: false,
|
abortedLastRun: false,
|
||||||
tokens: SessionTokenStats(input: 320, output: 680, total: 1000, contextTokens: 200_000),
|
tokens: SessionTokenStats(input: 320, output: 680, total: 1000, contextTokens: 200_000),
|
||||||
|
|
@ -212,7 +143,6 @@ extension SessionRow {
|
||||||
sessionId: "sess-group-4321",
|
sessionId: "sess-group-4321",
|
||||||
thinkingLevel: "medium",
|
thinkingLevel: "medium",
|
||||||
verboseLevel: nil,
|
verboseLevel: nil,
|
||||||
syncing: nil,
|
|
||||||
systemSent: true,
|
systemSent: true,
|
||||||
abortedLastRun: true,
|
abortedLastRun: true,
|
||||||
tokens: SessionTokenStats(input: 5000, output: 1200, total: 6200, contextTokens: 200_000),
|
tokens: SessionTokenStats(input: 5000, output: 1200, total: 6200, contextTokens: 200_000),
|
||||||
|
|
@ -225,7 +155,6 @@ extension SessionRow {
|
||||||
sessionId: nil,
|
sessionId: nil,
|
||||||
thinkingLevel: nil,
|
thinkingLevel: nil,
|
||||||
verboseLevel: nil,
|
verboseLevel: nil,
|
||||||
syncing: nil,
|
|
||||||
systemSent: false,
|
systemSent: false,
|
||||||
abortedLastRun: false,
|
abortedLastRun: false,
|
||||||
tokens: SessionTokenStats(input: 150, output: 220, total: 370, contextTokens: 200_000),
|
tokens: SessionTokenStats(input: 150, output: 220, total: 370, contextTokens: 200_000),
|
||||||
|
|
@ -344,7 +273,6 @@ enum SessionLoader {
|
||||||
sessionId: entry.sessionId,
|
sessionId: entry.sessionId,
|
||||||
thinkingLevel: entry.thinkingLevel,
|
thinkingLevel: entry.thinkingLevel,
|
||||||
verboseLevel: entry.verboseLevel,
|
verboseLevel: entry.verboseLevel,
|
||||||
syncing: entry.syncing,
|
|
||||||
systemSent: entry.systemSent ?? false,
|
systemSent: entry.systemSent ?? false,
|
||||||
abortedLastRun: entry.abortedLastRun ?? false,
|
abortedLastRun: entry.abortedLastRun ?? false,
|
||||||
tokens: SessionTokenStats(
|
tokens: SessionTokenStats(
|
||||||
|
|
|
||||||
|
|
@ -5,38 +5,6 @@ public struct ClawdisChatSessionsDefaults: Codable, Sendable {
|
||||||
public let contextTokens: Int?
|
public let contextTokens: Int?
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ClawdisChatSessionSyncing: Codable, Hashable, Sendable {
|
|
||||||
case bool(Bool)
|
|
||||||
case string(String)
|
|
||||||
|
|
||||||
public init(from decoder: Decoder) throws {
|
|
||||||
let container = try decoder.singleValueContainer()
|
|
||||||
if let b = try? container.decode(Bool.self) {
|
|
||||||
self = .bool(b)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if let s = try? container.decode(String.self) {
|
|
||||||
self = .string(s)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
throw DecodingError.typeMismatch(
|
|
||||||
ClawdisChatSessionSyncing.self,
|
|
||||||
DecodingError.Context(
|
|
||||||
codingPath: decoder.codingPath,
|
|
||||||
debugDescription: "Expected Bool or String"))
|
|
||||||
}
|
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
|
||||||
var container = encoder.singleValueContainer()
|
|
||||||
switch self {
|
|
||||||
case let .bool(b):
|
|
||||||
try container.encode(b)
|
|
||||||
case let .string(s):
|
|
||||||
try container.encode(s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public struct ClawdisChatSessionEntry: Codable, Identifiable, Sendable, Hashable {
|
public struct ClawdisChatSessionEntry: Codable, Identifiable, Sendable, Hashable {
|
||||||
public var id: String { self.key }
|
public var id: String { self.key }
|
||||||
|
|
||||||
|
|
@ -56,7 +24,6 @@ public struct ClawdisChatSessionEntry: Codable, Identifiable, Sendable, Hashable
|
||||||
|
|
||||||
public let model: String?
|
public let model: String?
|
||||||
public let contextTokens: Int?
|
public let contextTokens: Int?
|
||||||
public let syncing: ClawdisChatSessionSyncing?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct ClawdisChatSessionsListResponse: Codable, Sendable {
|
public struct ClawdisChatSessionsListResponse: Codable, Sendable {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ const mocks = vi.hoisted(() => ({
|
||||||
model: "pi:opus",
|
model: "pi:opus",
|
||||||
sessionId: "abc123",
|
sessionId: "abc123",
|
||||||
systemSent: true,
|
systemSent: true,
|
||||||
syncing: true,
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resolveStorePath: vi.fn().mockReturnValue("/tmp/sessions.json"),
|
resolveStorePath: vi.fn().mockReturnValue("/tmp/sessions.json"),
|
||||||
|
|
@ -56,7 +55,6 @@ describe("statusCommand", () => {
|
||||||
expect(payload.sessions.recent[0].percentUsed).toBe(50);
|
expect(payload.sessions.recent[0].percentUsed).toBe(50);
|
||||||
expect(payload.sessions.recent[0].remainingTokens).toBe(5000);
|
expect(payload.sessions.recent[0].remainingTokens).toBe(5000);
|
||||||
expect(payload.sessions.recent[0].flags).toContain("verbose:on");
|
expect(payload.sessions.recent[0].flags).toContain("verbose:on");
|
||||||
expect(payload.sessions.recent[0].flags).toContain("syncing");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("prints formatted lines otherwise", async () => {
|
it("prints formatted lines otherwise", async () => {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ export type SessionStatus = {
|
||||||
verboseLevel?: string;
|
verboseLevel?: string;
|
||||||
systemSent?: boolean;
|
systemSent?: boolean;
|
||||||
abortedLastRun?: boolean;
|
abortedLastRun?: boolean;
|
||||||
syncing?: boolean | string;
|
|
||||||
inputTokens?: number;
|
inputTokens?: number;
|
||||||
outputTokens?: number;
|
outputTokens?: number;
|
||||||
totalTokens: number | null;
|
totalTokens: number | null;
|
||||||
|
|
@ -101,7 +100,6 @@ export async function getStatusSummary(): Promise<StatusSummary> {
|
||||||
verboseLevel: entry?.verboseLevel,
|
verboseLevel: entry?.verboseLevel,
|
||||||
systemSent: entry?.systemSent,
|
systemSent: entry?.systemSent,
|
||||||
abortedLastRun: entry?.abortedLastRun,
|
abortedLastRun: entry?.abortedLastRun,
|
||||||
syncing: entry?.syncing,
|
|
||||||
inputTokens: entry?.inputTokens,
|
inputTokens: entry?.inputTokens,
|
||||||
outputTokens: entry?.outputTokens,
|
outputTokens: entry?.outputTokens,
|
||||||
totalTokens: total ?? null,
|
totalTokens: total ?? null,
|
||||||
|
|
@ -178,10 +176,6 @@ const buildFlags = (entry: SessionEntry): string[] => {
|
||||||
flags.push(`verbose:${verbose}`);
|
flags.push(`verbose:${verbose}`);
|
||||||
if (entry?.systemSent) flags.push("system");
|
if (entry?.systemSent) flags.push("system");
|
||||||
if (entry?.abortedLastRun) flags.push("aborted");
|
if (entry?.abortedLastRun) flags.push("aborted");
|
||||||
const syncing = entry?.syncing as unknown;
|
|
||||||
if (syncing === true || syncing === "on") flags.push("syncing");
|
|
||||||
else if (typeof syncing === "string" && syncing)
|
|
||||||
flags.push(`sync:${syncing}`);
|
|
||||||
const sessionId = entry?.sessionId as unknown;
|
const sessionId = entry?.sessionId as unknown;
|
||||||
if (typeof sessionId === "string" && sessionId.length > 0)
|
if (typeof sessionId === "string" && sessionId.length > 0)
|
||||||
flags.push(`id:${sessionId}`);
|
flags.push(`id:${sessionId}`);
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,6 @@ export type SessionEntry = {
|
||||||
contextTokens?: number;
|
contextTokens?: number;
|
||||||
lastChannel?: "whatsapp" | "telegram" | "webchat";
|
lastChannel?: "whatsapp" | "telegram" | "webchat";
|
||||||
lastTo?: string;
|
lastTo?: string;
|
||||||
// Optional flag to mirror Mac app UI and future sync states.
|
|
||||||
syncing?: boolean | string;
|
|
||||||
skillsSnapshot?: SessionSkillSnapshot;
|
skillsSnapshot?: SessionSkillSnapshot;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -134,7 +132,6 @@ export async function updateLastRoute(params: {
|
||||||
totalTokens: existing?.totalTokens,
|
totalTokens: existing?.totalTokens,
|
||||||
model: existing?.model,
|
model: existing?.model,
|
||||||
contextTokens: existing?.contextTokens,
|
contextTokens: existing?.contextTokens,
|
||||||
syncing: existing?.syncing,
|
|
||||||
skillsSnapshot: existing?.skillsSnapshot,
|
skillsSnapshot: existing?.skillsSnapshot,
|
||||||
lastChannel: channel,
|
lastChannel: channel,
|
||||||
lastTo: to?.trim() ? to.trim() : undefined,
|
lastTo: to?.trim() ? to.trim() : undefined,
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,6 @@ function resolveCronSession(params: {
|
||||||
contextTokens: entry?.contextTokens,
|
contextTokens: entry?.contextTokens,
|
||||||
lastChannel: entry?.lastChannel,
|
lastChannel: entry?.lastChannel,
|
||||||
lastTo: entry?.lastTo,
|
lastTo: entry?.lastTo,
|
||||||
syncing: entry?.syncing,
|
|
||||||
};
|
};
|
||||||
return { storePath, store, sessionEntry, systemSent, isNewSession: !fresh };
|
return { storePath, store, sessionEntry, systemSent, isNewSession: !fresh };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -298,9 +298,6 @@ export const SessionsPatchParamsSchema = Type.Object(
|
||||||
Type.Null(),
|
Type.Null(),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
syncing: Type.Optional(
|
|
||||||
Type.Union([Type.Boolean(), NonEmptyString, Type.Null()]),
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{ additionalProperties: false },
|
{ additionalProperties: false },
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -3506,20 +3506,6 @@ describe("gateway server", () => {
|
||||||
expect(main2?.thinkingLevel).toBe("medium");
|
expect(main2?.thinkingLevel).toBe("medium");
|
||||||
expect(main2?.verboseLevel).toBeUndefined();
|
expect(main2?.verboseLevel).toBeUndefined();
|
||||||
|
|
||||||
const syncPatched = await rpcReq<{ ok: true; key: string }>(
|
|
||||||
ws,
|
|
||||||
"sessions.patch",
|
|
||||||
{ key: "main", syncing: true },
|
|
||||||
);
|
|
||||||
expect(syncPatched.ok).toBe(true);
|
|
||||||
|
|
||||||
const list3 = await rpcReq<{
|
|
||||||
sessions: Array<{ key: string; syncing?: boolean | string }>;
|
|
||||||
}>(ws, "sessions.list", {});
|
|
||||||
expect(list3.ok).toBe(true);
|
|
||||||
const main3 = list3.payload?.sessions.find((s) => s.key === "main");
|
|
||||||
expect(main3?.syncing).toBe(true);
|
|
||||||
|
|
||||||
const compacted = await rpcReq<{ ok: true; compacted: boolean }>(
|
const compacted = await rpcReq<{ ok: true; compacted: boolean }>(
|
||||||
ws,
|
ws,
|
||||||
"sessions.compact",
|
"sessions.compact",
|
||||||
|
|
|
||||||
|
|
@ -364,7 +364,6 @@ type GatewaySessionRow = {
|
||||||
totalTokens?: number;
|
totalTokens?: number;
|
||||||
model?: string;
|
model?: string;
|
||||||
contextTokens?: number;
|
contextTokens?: number;
|
||||||
syncing?: boolean | string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
type SessionsListResult = {
|
type SessionsListResult = {
|
||||||
|
|
@ -843,7 +842,6 @@ function listSessionsFromStore(params: {
|
||||||
totalTokens: total,
|
totalTokens: total,
|
||||||
model: entry?.model,
|
model: entry?.model,
|
||||||
contextTokens: entry?.contextTokens,
|
contextTokens: entry?.contextTokens,
|
||||||
syncing: entry?.syncing,
|
|
||||||
} satisfies GatewaySessionRow;
|
} satisfies GatewaySessionRow;
|
||||||
})
|
})
|
||||||
.sort((a, b) => (b.updatedAt ?? 0) - (a.updatedAt ?? 0));
|
.sort((a, b) => (b.updatedAt ?? 0) - (a.updatedAt ?? 0));
|
||||||
|
|
@ -2014,15 +2012,6 @@ export async function startGatewayServer(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("syncing" in p) {
|
|
||||||
const raw = p.syncing;
|
|
||||||
if (raw === null) {
|
|
||||||
delete next.syncing;
|
|
||||||
} else if (raw !== undefined) {
|
|
||||||
next.syncing = raw as boolean | string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
store[key] = next;
|
store[key] = next;
|
||||||
await saveSessionStore(storePath, store);
|
await saveSessionStore(storePath, store);
|
||||||
const payload: SessionsPatchResult = {
|
const payload: SessionsPatchResult = {
|
||||||
|
|
@ -2066,7 +2055,6 @@ export async function startGatewayServer(
|
||||||
abortedLastRun: false,
|
abortedLastRun: false,
|
||||||
thinkingLevel: entry?.thinkingLevel,
|
thinkingLevel: entry?.thinkingLevel,
|
||||||
verboseLevel: entry?.verboseLevel,
|
verboseLevel: entry?.verboseLevel,
|
||||||
syncing: entry?.syncing,
|
|
||||||
model: entry?.model,
|
model: entry?.model,
|
||||||
contextTokens: entry?.contextTokens,
|
contextTokens: entry?.contextTokens,
|
||||||
lastChannel: entry?.lastChannel,
|
lastChannel: entry?.lastChannel,
|
||||||
|
|
@ -4321,15 +4309,6 @@ export async function startGatewayServer(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("syncing" in p) {
|
|
||||||
const raw = p.syncing;
|
|
||||||
if (raw === null) {
|
|
||||||
delete next.syncing;
|
|
||||||
} else if (raw !== undefined) {
|
|
||||||
next.syncing = raw as boolean | string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
store[key] = next;
|
store[key] = next;
|
||||||
await saveSessionStore(storePath, store);
|
await saveSessionStore(storePath, store);
|
||||||
const result: SessionsPatchResult = {
|
const result: SessionsPatchResult = {
|
||||||
|
|
@ -4374,7 +4353,6 @@ export async function startGatewayServer(
|
||||||
abortedLastRun: false,
|
abortedLastRun: false,
|
||||||
thinkingLevel: entry?.thinkingLevel,
|
thinkingLevel: entry?.thinkingLevel,
|
||||||
verboseLevel: entry?.verboseLevel,
|
verboseLevel: entry?.verboseLevel,
|
||||||
syncing: entry?.syncing,
|
|
||||||
model: entry?.model,
|
model: entry?.model,
|
||||||
contextTokens: entry?.contextTokens,
|
contextTokens: entry?.contextTokens,
|
||||||
lastChannel: entry?.lastChannel,
|
lastChannel: entry?.lastChannel,
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,6 @@ export type GatewaySessionRow = {
|
||||||
totalTokens?: number;
|
totalTokens?: number;
|
||||||
model?: string;
|
model?: string;
|
||||||
contextTokens?: number;
|
contextTokens?: number;
|
||||||
syncing?: boolean | string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type SessionsListResult = {
|
export type SessionsListResult = {
|
||||||
|
|
@ -131,7 +130,6 @@ export type SessionsPatchResult = {
|
||||||
updatedAt?: number;
|
updatedAt?: number;
|
||||||
thinkingLevel?: string;
|
thinkingLevel?: string;
|
||||||
verboseLevel?: string;
|
verboseLevel?: string;
|
||||||
syncing?: boolean | string;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -248,4 +246,3 @@ export type SkillStatusReport = {
|
||||||
export type StatusSummary = Record<string, unknown>;
|
export type StatusSummary = Record<string, unknown>;
|
||||||
|
|
||||||
export type HealthSnapshot = Record<string, unknown>;
|
export type HealthSnapshot = Record<string, unknown>;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue