MCPcopy Create free account
hub / github.com/Zoo-Code-Org/Zoo-Code / taskMetadata

Function taskMetadata

src/core/task-persistence/taskMetadata.ts:30–118  ·  view source on GitHub ↗
({
	taskId: id,
	rootTaskId,
	parentTaskId,
	taskNumber,
	messages,
	globalStoragePath,
	workspace,
	mode,
	apiConfigName,
	initialStatus,
}: TaskMetadataOptions)

Source from the content-addressed store, hash-verified

28}
29
30export async function taskMetadata({
31 taskId: id,
32 rootTaskId,
33 parentTaskId,
34 taskNumber,
35 messages,
36 globalStoragePath,
37 workspace,
38 mode,
39 apiConfigName,
40 initialStatus,
41}: TaskMetadataOptions) {
42 const taskDir = await getTaskDirectoryPath(globalStoragePath, id)
43
44 // Determine message availability upfront
45 const hasMessages = messages && messages.length > 0
46
47 // Pre-calculate all values based on availability
48 let timestamp: number
49 let tokenUsage: ReturnType<typeof getApiMetrics>
50 let taskDirSize: number
51 let taskMessage: ClineMessage | undefined
52
53 if (!hasMessages) {
54 // Handle no messages case
55 timestamp = Date.now()
56 tokenUsage = {
57 totalTokensIn: 0,
58 totalTokensOut: 0,
59 totalCacheWrites: 0,
60 totalCacheReads: 0,
61 totalCost: 0,
62 contextTokens: 0,
63 }
64 taskDirSize = 0
65 } else {
66 // Handle messages case
67 taskMessage = messages[0] // First message is always the task say.
68
69 const lastRelevantMessage =
70 messages[findLastIndex(messages, (m) => !(m.ask === "resume_task" || m.ask === "resume_completed_task"))] ||
71 taskMessage
72
73 timestamp = lastRelevantMessage.ts
74
75 tokenUsage = getApiMetrics(combineApiRequests(combineCommandSequences(messages.slice(1))))
76
77 // Get task directory size
78 const cachedSize = taskSizeCache.get<number>(taskDir)
79
80 if (cachedSize === undefined) {
81 try {
82 taskDirSize = await getFolderSize.loose(taskDir)
83 taskSizeCache.set<number>(taskDir, taskDirSize)
84 } catch (error) {
85 taskDirSize = 0
86 }
87 } else {

Callers 1

saveClineMessagesMethod · 0.90

Calls 5

getTaskDirectoryPathFunction · 0.90
findLastIndexFunction · 0.90
tFunction · 0.90
getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected