v0.1.0: Electron 桌面端骨架 + pi SDK 聊天链路
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* pi SDK 集成冒烟测试(与 src/main/pi/agent-service.ts 相同的调用路径)
|
||||
* 用法:node scripts/smoke.mjs
|
||||
* 验证点:会话创建、事件订阅、prompt 在无凭据时的报错传播。
|
||||
*/
|
||||
import { createAgentSession } from '@earendil-works/pi-coding-agent'
|
||||
import { homedir } from 'node:os'
|
||||
|
||||
const events = []
|
||||
let settled = false
|
||||
|
||||
console.log('[smoke] creating session (cwd=%s)...', homedir())
|
||||
const { session } = await createAgentSession({ cwd: homedir() })
|
||||
console.log('[smoke] session created: id=%s model=%s/%s', session.sessionId, session.model?.provider ?? '-', session.model?.id ?? '-')
|
||||
|
||||
session.subscribe((event) => {
|
||||
events.push(event.type)
|
||||
if (event.type === 'message_update' && event.assistantMessageEvent?.type?.endsWith('_delta')) {
|
||||
const d = event.assistantMessageEvent.delta ?? ''
|
||||
process.stdout.write(d)
|
||||
}
|
||||
})
|
||||
|
||||
try {
|
||||
await session.prompt('回复"链路正常"两个字即可,不要调用任何工具。')
|
||||
console.log('\n[smoke] prompt resolved; event sequence:', [...new Set(events)].join(' -> '))
|
||||
const last = session.getLastAssistantText()
|
||||
console.log('[smoke] last assistant text:', last ? JSON.stringify(last.slice(0, 120)) : '(none)')
|
||||
settled = true
|
||||
} catch (err) {
|
||||
console.log('\n[smoke] prompt rejected as expected (no credentials):', err instanceof Error ? err.message : err)
|
||||
}
|
||||
|
||||
const stats = session.getSessionStats()
|
||||
console.log('[smoke] stats:', JSON.stringify({ messages: session.messages.length, cost: stats.cost }))
|
||||
console.log('[smoke] active tools:', session.getActiveToolNames().join(', '))
|
||||
session.dispose()
|
||||
console.log('[smoke] done, settled=%s', String(settled))
|
||||
process.exit(0)
|
||||
Reference in New Issue
Block a user