dsh-ops-cron/test/preset.test.js
oliver 819feed310 Make origin session mirror opt-in per job.
Default mirrorToSession to false so cron summaries stay in run history unless the sidebar checkbox or mirror_to_session is enabled.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:00:20 +08:00

67 lines
2.2 KiB
JavaScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { normalizeAgentPresetId, resolveCreateAgentPreset } from '../lib/preset.js'
import { createJobRecord, emptyState } from '../lib/store.js'
test('normalizeAgentPresetId accepts empty and valid ids', () => {
assert.equal(normalizeAgentPresetId(''), '')
assert.equal(normalizeAgentPresetId(' ops-desk '), 'ops-desk')
assert.throws(() => normalizeAgentPresetId('bad preset'), /agentPreset/)
})
test('createJobRecord persists agentPreset', () => {
const job = createJobRecord({
name: 'n',
prompt: 'p',
schedule: { kind: 'cron', expr: '0 9 * * *', timezone: 'Asia/Shanghai' },
agentPreset: 'ops-desk',
}, emptyState(), Date.now())
assert.equal(job.agentPreset, 'ops-desk')
})
test('createJobRecord defaults mirrorToSession off and accepts explicit true', () => {
const base = {
name: 'n',
prompt: 'p',
schedule: { kind: 'cron', expr: '0 9 * * *', timezone: 'Asia/Shanghai' },
}
assert.equal(createJobRecord(base, emptyState(), Date.now()).mirrorToSession, false)
assert.equal(
createJobRecord({ ...base, mirrorToSession: true }, emptyState(), Date.now()).mirrorToSession,
true,
)
assert.equal(
createJobRecord({ ...base, mirror_to_session: true }, emptyState(), Date.now()).mirrorToSession,
true,
)
assert.equal(
createJobRecord({ ...base, mirrorToSession: 'yes' }, emptyState(), Date.now()).mirrorToSession,
false,
)
})
test('resolveCreateAgentPreset prefers explicit then peer then session then host default', async () => {
assert.equal(
await resolveCreateAgentPreset({ agent_preset: 'explicit' }, {}, {}),
'explicit',
)
const fromPeer = await resolveCreateAgentPreset({}, { agent: { session: { id: 's1' } } }, {
dshIm: {
resolveSessionPeer: async () => ({ agentPreset: 'from-peer' }),
},
})
assert.equal(fromPeer, 'from-peer')
const fromMeta = await resolveCreateAgentPreset({}, {
agent: { session: { meta: { agentPreset: 'from-meta' } } },
}, {})
assert.equal(fromMeta, 'from-meta')
const fromHost = await resolveCreateAgentPreset({}, {}, {
agentPresets: {
resolve: async () => ({ id: 'host-default' }),
},
})
assert.equal(fromHost, 'host-default')
})