aboutsummaryrefslogtreecommitdiff
path: root/test-suite/unit/prompt-section.test.mjs
blob: b83f52690f607be4dadabb1becf5968b2f32649a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// The Chrome primer must be a structured prompt section, never a forced `systemPrompt` override.
// A forced override makes pi collapse all system messages into a new leading prompt every run,
// which busts the provider prompt cache.
import assert from "node:assert/strict";
import fs from "node:fs";
import vm from "node:vm";
import { stripTypeScriptTypes } from "node:module";
import { test } from "node:test";

const source = fs.readFileSync(new URL("../../extensions/chrome-profile-bridge/index.ts", import.meta.url), "utf8");
const from = source.indexOf('pi.on("before_agent_start",');
const to = source.indexOf("// Shared handlers,", from);
assert.ok(from >= 0 && to > from, "Missing before_agent_start section");
const handlerSource = stripTypeScriptTypes(source.slice(from, to));

function load({ registered = true, authorized = true } = {}) {
	let handler;
	const pi = { on: (name, fn) => { if (name === "before_agent_start") handler = fn; } };
	vm.runInNewContext(`${handlerSource}`, {
		pi,
		chromeToolsRegistered: registered,
		chromeControlAuthorized: () => authorized,
	});
	return handler;
}

test("authorized: adds primer section and does not force systemPrompt", () => {
	const event = { systemPrompt: "base", systemPromptOptions: { sections: {} } };
	const result = load()(event);
	assert.equal(result, undefined);
	const primer = event.systemPromptOptions.sections["chrome-profile-bridge"];
	assert.match(primer, /^Chrome control is available/);
	assert.doesNotMatch(primer, /<\/?chrome-profile-bridge>/, "pi wraps sections in their tag");
});

test("locked: removes primer section and does not force systemPrompt", () => {
	const event = { systemPrompt: "base", systemPromptOptions: { sections: { "chrome-profile-bridge": "stale", other: "keep" } } };
	assert.equal(load({ authorized: false })(event), undefined);
	assert.deepEqual(event.systemPromptOptions.sections, { other: "keep" });
});

test("tools not registered: no primer", () => {
	const event = { systemPrompt: "base", systemPromptOptions: { sections: {} } };
	assert.equal(load({ registered: false })(event), undefined);
	assert.deepEqual(event.systemPromptOptions.sections, {});
});

test("legacy pi without sections: appends only when authorized", () => {
	assert.equal(load({ authorized: false })({ systemPrompt: "base" }), undefined);
	const result = load()({ systemPrompt: "base" });
	assert.match(result.systemPrompt, /^base\n<chrome-profile-bridge>\nChrome control is available[\s\S]*<\/chrome-profile-bridge>$/);
});