test(keyword-detector): capture mode prompt baselines
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import { createHash } from "node:crypto"
|
||||
import { dirname, join } from "node:path"
|
||||
import { fileURLToPath } from "node:url"
|
||||
import { ANALYZE_MESSAGE, HYPERPLAN_MESSAGE, SEARCH_MESSAGE, TEAM_MESSAGE } from "./constants"
|
||||
|
||||
type PromptBaseline = {
|
||||
readonly name: string
|
||||
readonly message: string
|
||||
readonly sha256: string
|
||||
readonly byteLength: number
|
||||
}
|
||||
|
||||
type ShimBaseline = {
|
||||
readonly name: string
|
||||
readonly filePath: string
|
||||
}
|
||||
|
||||
const MODE_PROMPT_BASELINES: readonly PromptBaseline[] = [
|
||||
{
|
||||
name: "search",
|
||||
message: SEARCH_MESSAGE,
|
||||
sha256: "aa38d1011edcf083394441321564330661868411ec13b575e5994812fae27f62",
|
||||
byteLength: 311,
|
||||
},
|
||||
{
|
||||
name: "analyze",
|
||||
message: ANALYZE_MESSAGE,
|
||||
sha256: "63f9de6f7afb67ab68bc4abcc7e78c8450a6ce556378a7a5d2b9061a3c519d7f",
|
||||
byteLength: 865,
|
||||
},
|
||||
{
|
||||
name: "team",
|
||||
message: TEAM_MESSAGE,
|
||||
sha256: "21fd4110835ce380e307cf29e132753b04a58758b86cfaaf5dda26e0e3193d69",
|
||||
byteLength: 614,
|
||||
},
|
||||
{
|
||||
name: "hyperplan",
|
||||
message: HYPERPLAN_MESSAGE,
|
||||
sha256: "cea6f378370c736909be99bd9a66a06db1e4819848336dd7951298e949270ced",
|
||||
byteLength: 1500,
|
||||
},
|
||||
]
|
||||
|
||||
const KEYWORD_DETECTOR_DIR = dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
const MODE_SHIMS: readonly ShimBaseline[] = [
|
||||
{ name: "search", filePath: join(KEYWORD_DETECTOR_DIR, "search", "default.ts") },
|
||||
{ name: "analyze", filePath: join(KEYWORD_DETECTOR_DIR, "analyze", "default.ts") },
|
||||
{ name: "team", filePath: join(KEYWORD_DETECTOR_DIR, "team", "default.ts") },
|
||||
{ name: "hyperplan", filePath: join(KEYWORD_DETECTOR_DIR, "hyperplan", "default.ts") },
|
||||
]
|
||||
|
||||
describe("keyword-detector mode prompt baselines", () => {
|
||||
test("#given captured prompt baselines #then each mode message keeps the same bytes", () => {
|
||||
for (const baseline of MODE_PROMPT_BASELINES) {
|
||||
expect(hashPrompt(baseline.message), baseline.name).toBe(baseline.sha256)
|
||||
expect(Buffer.byteLength(baseline.message, "utf8"), baseline.name).toBe(baseline.byteLength)
|
||||
}
|
||||
})
|
||||
|
||||
test("#given migrated mode shims #then each shim stays within the LOC ceiling", async () => {
|
||||
for (const shim of MODE_SHIMS) {
|
||||
const source = await Bun.file(shim.filePath).text()
|
||||
|
||||
expect(countPureLoc(source), shim.name).toBeLessThanOrEqual(20)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
function hashPrompt(prompt: string): string {
|
||||
return createHash("sha256").update(prompt, "utf8").digest("hex")
|
||||
}
|
||||
|
||||
function countPureLoc(source: string): number {
|
||||
let pureLoc = 0
|
||||
let insideBlockComment = false
|
||||
|
||||
for (const rawLine of source.split("\n")) {
|
||||
const line = rawLine.trim()
|
||||
if (line.length === 0) continue
|
||||
if (insideBlockComment) {
|
||||
insideBlockComment = !line.includes("*/")
|
||||
continue
|
||||
}
|
||||
if (line.startsWith("/*")) {
|
||||
insideBlockComment = !line.includes("*/")
|
||||
continue
|
||||
}
|
||||
if (line.startsWith("//")) continue
|
||||
pureLoc += 1
|
||||
}
|
||||
|
||||
return pureLoc
|
||||
}
|
||||
Reference in New Issue
Block a user