* feat(ai): add HarnessAgent sidecar foundation * feat(ai): integrate Pi as a Harness provider * fix(ai): harden Harness provider integration * fix(ai): address Harness integration review * fix(ai): align Harness code with project conventions * fix(ai): preserve Harness sessions on cancellation * test(ai): cover Harness JSONL framing * refactor(ai): generalize Harness sidecar adapters * fix(ci): build Harness sidecar for native checks
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
|
|
import { MAX_PROMPT_LENGTH, parseHarnessRequest } from '../src/protocol'
|
|
|
|
describe('harness sidecar protocol', () => {
|
|
test('parses a provider-neutral session configuration', () => {
|
|
expect(
|
|
parseHarnessRequest(
|
|
JSON.stringify({
|
|
id: 'request-1',
|
|
method: 'session.create',
|
|
params: {
|
|
sessionId: 'session-1',
|
|
configuration: {
|
|
adapter: 'pi',
|
|
sandbox: 'just-bash',
|
|
model: 'provider/model',
|
|
settings: { thinkingLevel: 'high' }
|
|
}
|
|
}
|
|
})
|
|
)
|
|
).toMatchObject({
|
|
method: 'session.create',
|
|
params: {
|
|
configuration: { adapter: 'pi', sandbox: 'just-bash', model: 'provider/model' }
|
|
}
|
|
})
|
|
})
|
|
|
|
test('parses a turn request', () => {
|
|
expect(
|
|
parseHarnessRequest(
|
|
JSON.stringify({
|
|
id: 'request-1',
|
|
method: 'session.turn',
|
|
params: { sessionId: 'session-1', prompt: 'Inspect the document' }
|
|
})
|
|
)
|
|
).toEqual({
|
|
id: 'request-1',
|
|
method: 'session.turn',
|
|
params: { sessionId: 'session-1', prompt: 'Inspect the document' }
|
|
})
|
|
})
|
|
|
|
test('rejects unknown methods and oversized prompts', () => {
|
|
expect(() =>
|
|
parseHarnessRequest(JSON.stringify({ id: 'request-1', method: 'unknown' }))
|
|
).toThrow('Unknown harness method')
|
|
expect(() =>
|
|
parseHarnessRequest(
|
|
JSON.stringify({
|
|
id: 'request-1',
|
|
method: 'session.turn',
|
|
params: { sessionId: 'session-1', prompt: 'x'.repeat(MAX_PROMPT_LENGTH + 1) }
|
|
})
|
|
)
|
|
).toThrow('prompt exceeds')
|
|
})
|
|
})
|