mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-15 12:55:51 +00:00
- /memory-stores: 远程记忆存储管理 - /vault: 密钥保险库管理 - /schedule: 云端定时触发器管理(cron) - /skill-store: 技能商店浏览和安装 - /agents-platform: 远程 agent 调度管理 Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
117 lines
3.3 KiB
TypeScript
117 lines
3.3 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
import { parseAgentsPlatformArgs, splitCronAndPrompt } from '../parseArgs.js'
|
|
|
|
describe('parseAgentsPlatformArgs', () => {
|
|
test('empty string returns list', () => {
|
|
const r = parseAgentsPlatformArgs('')
|
|
expect(r.action).toBe('list')
|
|
})
|
|
|
|
test('"list" returns list', () => {
|
|
const r = parseAgentsPlatformArgs('list')
|
|
expect(r.action).toBe('list')
|
|
})
|
|
|
|
test('whitespace-only returns list', () => {
|
|
const r = parseAgentsPlatformArgs(' ')
|
|
expect(r.action).toBe('list')
|
|
})
|
|
|
|
test('create with valid cron and prompt', () => {
|
|
const r = parseAgentsPlatformArgs('create 0 9 * * 1 Run daily standup')
|
|
expect(r.action).toBe('create')
|
|
if (r.action === 'create') {
|
|
expect(r.cron).toBe('0 9 * * 1')
|
|
expect(r.prompt).toBe('Run daily standup')
|
|
}
|
|
})
|
|
|
|
test('create with multi-word prompt', () => {
|
|
const r = parseAgentsPlatformArgs(
|
|
'create 30 8 * * * Check emails and summarize',
|
|
)
|
|
expect(r.action).toBe('create')
|
|
if (r.action === 'create') {
|
|
expect(r.cron).toBe('30 8 * * *')
|
|
expect(r.prompt).toBe('Check emails and summarize')
|
|
}
|
|
})
|
|
|
|
test('create with missing prompt is invalid', () => {
|
|
const r = parseAgentsPlatformArgs('create 0 9 * * 1')
|
|
expect(r.action).toBe('invalid')
|
|
if (r.action === 'invalid') {
|
|
expect(r.reason).toContain('5 cron fields')
|
|
}
|
|
})
|
|
|
|
test('create with no args is invalid', () => {
|
|
const r = parseAgentsPlatformArgs('create')
|
|
expect(r.action).toBe('invalid')
|
|
if (r.action === 'invalid') {
|
|
expect(r.reason).toContain('cron expression')
|
|
}
|
|
})
|
|
|
|
test('delete with id', () => {
|
|
const r = parseAgentsPlatformArgs('delete agt_abc123')
|
|
expect(r.action).toBe('delete')
|
|
if (r.action === 'delete') {
|
|
expect(r.id).toBe('agt_abc123')
|
|
}
|
|
})
|
|
|
|
test('delete without id is invalid', () => {
|
|
const r = parseAgentsPlatformArgs('delete')
|
|
expect(r.action).toBe('invalid')
|
|
if (r.action === 'invalid') {
|
|
expect(r.reason).toContain('agent id')
|
|
}
|
|
})
|
|
|
|
test('run with id', () => {
|
|
const r = parseAgentsPlatformArgs('run agt_xyz789')
|
|
expect(r.action).toBe('run')
|
|
if (r.action === 'run') {
|
|
expect(r.id).toBe('agt_xyz789')
|
|
}
|
|
})
|
|
|
|
test('run without id is invalid', () => {
|
|
const r = parseAgentsPlatformArgs('run')
|
|
expect(r.action).toBe('invalid')
|
|
if (r.action === 'invalid') {
|
|
expect(r.reason).toContain('agent id')
|
|
}
|
|
})
|
|
|
|
test('unknown sub-command is invalid', () => {
|
|
const r = parseAgentsPlatformArgs('foobar something')
|
|
expect(r.action).toBe('invalid')
|
|
if (r.action === 'invalid') {
|
|
expect(r.reason).toContain('Unknown sub-command')
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('splitCronAndPrompt', () => {
|
|
test('splits 5-field cron from prompt', () => {
|
|
const r = splitCronAndPrompt('0 9 * * 1 My prompt here')
|
|
expect(r).not.toBeNull()
|
|
expect(r?.cron).toBe('0 9 * * 1')
|
|
expect(r?.prompt).toBe('My prompt here')
|
|
})
|
|
|
|
test('returns null if fewer than 6 tokens', () => {
|
|
expect(splitCronAndPrompt('0 9 * * 1')).toBeNull()
|
|
expect(splitCronAndPrompt('0 9 *')).toBeNull()
|
|
})
|
|
|
|
test('handles extra spaces in input', () => {
|
|
const r = splitCronAndPrompt(' 0 9 * * 1 hello world ')
|
|
expect(r).not.toBeNull()
|
|
expect(r?.cron).toBe('0 9 * * 1')
|
|
expect(r?.prompt).toBe('hello world')
|
|
})
|
|
})
|