Files
sproutclaw/packages/agent/test/scratch/simple.ts
Mario Zechner 90c017b05b Merge remote-tracking branch 'origin/main' into bigrefactor
# Conflicts:
#	package-lock.json
#	packages/agent/package.json
2026-05-08 13:38:20 +02:00

50 lines
1.7 KiB
TypeScript

import { homedir } from "node:os";
import { join } from "node:path";
import { getModel } from "@earendil-works/pi-ai";
import { InMemorySessionStorage } from "../../src/harness/session/storage/memory.js";
import {
createAgentHarness,
formatSkillsForSystemPrompt,
loadSourcedPromptTemplates,
loadSourcedSkills,
NodeExecutionEnv,
Session,
} from "../../src/index.js";
type Source = { type: "project" | "user" | "path"; dir: string };
const env = new NodeExecutionEnv({ cwd: process.cwd() });
const source = (type: Source["type"], dir: string) => ({ path: dir, source: { type, dir } });
const { skills: sourcedSkills } = await loadSourcedSkills<Source>(env, [
source("project", join(env.cwd, ".pi/skills")),
source("user", join(homedir(), ".pi/agent/skills")),
source("path", join(env.cwd, "../../../pi-skills")),
]);
const { promptTemplates: sourcedPromptTemplates } = await loadSourcedPromptTemplates<Source>(env, [
source("project", join(env.cwd, ".pi/prompts")),
source("user", join(homedir(), ".pi/agent/prompts")),
]);
const session = new Session(new InMemorySessionStorage());
const agent = createAgentHarness({
env,
session,
model: getModel("openai", "gpt-5.5"),
thinkingLevel: "low",
systemPrompt: ({ env, resources }) =>
[
"You are a helpful assistant.",
formatSkillsForSystemPrompt(resources.skills ?? []),
`Current working directory: ${env.cwd}`,
]
.filter((part) => part.length > 0)
.join("\n\n"),
resources: {
promptTemplates: sourcedPromptTemplates.map(({ promptTemplate }) => promptTemplate),
skills: sourcedSkills.map(({ skill }) => skill),
},
});
const response = await agent.prompt("What skills do you have? Any duplicates?");
console.log(response);