feat: complete WorkBuddy parity and Windows release workflow
This commit is contained in:
1 parent
143516b3a8
commit
d5512df549
434 files changed
+54977
-1854
No files matched your search
@@ -0,0 +1,69 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import type { ChatMessage } from '../src/shared/types'
|
||||
import {
|
||||
deriveProjectTaskStatus,
|
||||
matchesProjectTaskFilter,
|
||||
projectTaskStatusClass,
|
||||
runningSessionIds,
|
||||
} from '../src/renderer/src/projects/project-task-model'
|
||||
import {
|
||||
projectCapabilityRefKey,
|
||||
uniqueProjectCapabilityRefs,
|
||||
} from '../src/renderer/src/projects/project-capability-model'
|
||||
|
||||
function assistant(overrides: Partial<ChatMessage>): ChatMessage {
|
||||
return {
|
||||
id: `assistant-${Math.random()}`,
|
||||
role: 'assistant',
|
||||
content: '',
|
||||
createdAt: 1,
|
||||
...overrides,
|
||||
}
|
||||
}
|
||||
|
||||
assert.deepEqual(
|
||||
[...runningSessionIds({
|
||||
byRunId: { sessionId: 'session-a' },
|
||||
orphan: {},
|
||||
duplicate: { sessionId: 'session-a' },
|
||||
})],
|
||||
['session-a'],
|
||||
)
|
||||
assert.equal(deriveProjectTaskStatus([], false), 'idle')
|
||||
assert.equal(deriveProjectTaskStatus([], true), 'running')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({ status: 'done' })], true), 'running')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({ status: 'done' })], false), 'completed')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({ status: 'streaming' })], true), 'running')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({ status: 'done', interrupted: true })], false), 'cancelled')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({ status: 'error' })], false), 'error')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({ status: 'cancelled' })], false), 'cancelled')
|
||||
assert.equal(deriveProjectTaskStatus([assistant({})], false), 'unknown')
|
||||
assert.equal(deriveProjectTaskStatus([
|
||||
assistant({ status: 'error' }),
|
||||
assistant({ status: 'done' }),
|
||||
{ id: 'user-latest', role: 'user', content: 'next', createdAt: 2 },
|
||||
], false), 'completed')
|
||||
|
||||
assert.equal(matchesProjectTaskFilter('running', 'active'), true)
|
||||
assert.equal(matchesProjectTaskFilter('completed', 'active'), false)
|
||||
assert.equal(matchesProjectTaskFilter('completed', 'completed'), true)
|
||||
assert.equal(matchesProjectTaskFilter('idle', 'completed'), false)
|
||||
assert.equal(matchesProjectTaskFilter('error', 'active'), false)
|
||||
assert.equal(matchesProjectTaskFilter('cancelled', 'completed'), false)
|
||||
assert.equal(matchesProjectTaskFilter('unknown', 'all'), true)
|
||||
assert.equal(projectTaskStatusClass('running'), '')
|
||||
assert.equal(projectTaskStatusClass('completed'), ' wb-status-dot--success')
|
||||
assert.equal(projectTaskStatusClass('error'), ' wb-status-dot--error')
|
||||
assert.equal(projectTaskStatusClass('cancelled'), ' wb-status-dot--error')
|
||||
assert.equal(projectTaskStatusClass('idle'), ' wb-status-dot--muted')
|
||||
assert.equal(projectTaskStatusClass('unknown'), ' wb-status-dot--muted')
|
||||
|
||||
const sameIdRefs = [
|
||||
{ id: 'shared-expert', source: 'market' as const, provider: 'provider-a' },
|
||||
{ id: 'shared-expert', source: 'market' as const, provider: 'provider-b' },
|
||||
{ id: 'shared-expert', source: 'market' as const, provider: 'provider-a' },
|
||||
]
|
||||
assert.notEqual(projectCapabilityRefKey(sameIdRefs[0]!), projectCapabilityRefKey(sameIdRefs[1]!))
|
||||
assert.deepEqual(uniqueProjectCapabilityRefs(sameIdRefs), sameIdRefs.slice(0, 2))
|
||||
|
||||
console.log('PROJECT_TASK_MODEL_PASS')
|
||||
Reference in new issue
Block a user