0ab78cb8bb
Add ptyConnectApiRoutes to createListenerRoutes so PTY WebSocket connections work through the Kilo listener layer. Bump gitlab-ai-provider to 6.8.0 and drop it from the supply-chain quarantine exclusion list. Realign kilocode_change comment markers to their correct lines across tui-schema, session.sql, and several test/story files. Update ACP auth tests to expect Kilo-branded agent name and method IDs, fix httpapi-ui test to assert 404 for the disabled fallback UI proxy, and point the OAuth branding test at the relocated codex plugin path. Add new test coverage for the ACP Agent interface contract and primaryWorktree resolution across normal repos, linked worktrees, submodules, and paths with spaces. Refresh TUI inline-tool-wrap snapshots and session recording fixtures to reflect current branding.
63 lines
2.8 KiB
TypeScript
63 lines
2.8 KiB
TypeScript
import { describe, expect } from "bun:test"
|
|
import type { AuthenticateResponse, InitializeResponse } from "@agentclientprotocol/sdk"
|
|
import { Effect } from "effect"
|
|
import { cliIt } from "../../lib/cli-process"
|
|
import { createAcpClient, expectErrorCode, initialize } from "./helpers"
|
|
|
|
describe("opencode acp initialize/auth subprocess", () => {
|
|
cliIt.live(
|
|
"initialize responds with capabilities",
|
|
({ opencode }) =>
|
|
Effect.gen(function* () {
|
|
const initialized = yield* initialize(yield* createAcpClient({ opencode }))
|
|
|
|
expect(initialized.protocolVersion).toBe(1)
|
|
expect(initialized.agentCapabilities?.promptCapabilities?.embeddedContext).toBe(true)
|
|
expect(initialized.agentCapabilities?.promptCapabilities?.image).toBe(true)
|
|
expect(initialized.agentCapabilities?.mcpCapabilities?.http).toBe(true)
|
|
expect(initialized.agentCapabilities?.mcpCapabilities?.sse).toBe(true)
|
|
expect(initialized.agentCapabilities?.loadSession).toBe(true)
|
|
expect(initialized.agentCapabilities?.sessionCapabilities?.close).toEqual({})
|
|
expect(initialized.agentCapabilities?.sessionCapabilities?.fork).toEqual({})
|
|
expect(initialized.agentCapabilities?.sessionCapabilities?.list).toEqual({})
|
|
expect(initialized.agentCapabilities?.sessionCapabilities?.resume).toEqual({})
|
|
expect(initialized.agentInfo?.name).toBe("Kilo") // kilocode_change
|
|
}),
|
|
60_000,
|
|
)
|
|
|
|
cliIt.live(
|
|
"auth negotiation is explicit and safe",
|
|
({ opencode }) =>
|
|
Effect.gen(function* () {
|
|
const acp = yield* createAcpClient({ opencode })
|
|
const initialized = yield* initialize(acp)
|
|
|
|
expect(initialized.authMethods?.[0]?.id).toBe("kilo-login") // kilocode_change
|
|
expect(initialized.authMethods?.[0]?._meta?.["terminal-auth"]).toBeDefined()
|
|
expect(yield* acp.request<AuthenticateResponse>("authenticate", { methodId: "kilo-login" })).toMatchObject({
|
|
// kilocode_change
|
|
result: {},
|
|
})
|
|
|
|
const rejected = yield* acp.request<AuthenticateResponse>("authenticate", { methodId: "missing-auth-method" })
|
|
expectErrorCode(rejected.error, -32602)
|
|
expect(JSON.stringify(rejected.error)).not.toContain(process.env.KILO_AUTH_CONTENT ?? "not-present")
|
|
}),
|
|
60_000,
|
|
)
|
|
|
|
cliIt.live(
|
|
"initialize without terminal-auth metadata keeps auth command implicit",
|
|
({ opencode }) =>
|
|
Effect.gen(function* () {
|
|
const acp = yield* createAcpClient({ opencode })
|
|
const initialized = yield* acp.request<InitializeResponse>("initialize", { protocolVersion: 1 })
|
|
|
|
expect(initialized.result?.authMethods?.[0]?.id).toBe("kilo-login") // kilocode_change
|
|
expect(initialized.result?.authMethods?.[0]?._meta?.["terminal-auth"]).toBeUndefined()
|
|
}),
|
|
60_000,
|
|
)
|
|
})
|