pi-para 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +160 -0
- package/CHANGELOG.md +51 -0
- package/CONFIGURATION.md +243 -0
- package/README.md +140 -237
- package/SETUP.md +196 -112
- package/STRUCTURE.md +140 -0
- package/package.json +86 -18
- package/scripts/build-assets.mjs +29 -0
- package/scripts/install.ps1 +55 -0
- package/scripts/install.sh +63 -0
- package/scripts/smoke-install.mjs +63 -0
- package/skills/para/SKILL.md +1 -1
- package/skills/setup/SKILL.md +1 -1
- package/src/atomic-write.ts +17 -0
- package/src/capture.ts +4 -4
- package/src/cli-legacy.ts +43 -0
- package/src/cli.ts +133 -28
- package/src/commands.ts +203 -243
- package/src/config.ts +355 -0
- package/src/context.ts +29 -14
- package/src/credentials.ts +100 -0
- package/src/daemon.ts +1 -1
- package/src/doctor.ts +209 -0
- package/src/gepa/index.ts +1 -1
- package/src/index.ts +119 -40
- package/src/maintainer.ts +4 -4
- package/src/model-resolver.ts +96 -0
- package/src/paths.ts +48 -0
- package/src/processor.ts +4 -4
- package/src/qmd-providers.ts +63 -0
- package/src/query.ts +15 -1
- package/src/repair.ts +49 -0
- package/src/scheduler/controls.ts +125 -0
- package/src/scheduler/index.ts +210 -0
- package/src/scheduler/leases.ts +98 -0
- package/src/scheduler/session-capture.ts +146 -0
- package/src/scheduler/state.ts +304 -0
- package/src/session-tools.ts +1 -1
- package/src/settings.ts +126 -0
- package/src/setup.ts +116 -0
- package/src/status.ts +115 -0
- package/src/store.ts +116 -31
- package/src/summarize.ts +72 -16
- package/src/templates/prompts.ts +1 -1
- package/src/tools.ts +280 -90
- package/src/wiki-tool-guidance.ts +84 -0
- package/src/wiki.ts +98 -26
- package/dist/capture.d.ts +0 -34
- package/dist/capture.d.ts.map +0 -1
- package/dist/capture.js +0 -461
- package/dist/capture.js.map +0 -1
- package/dist/cli.d.ts +0 -15
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -405
- package/dist/cli.js.map +0 -1
- package/dist/commands.d.ts +0 -15
- package/dist/commands.d.ts.map +0 -1
- package/dist/commands.js +0 -786
- package/dist/commands.js.map +0 -1
- package/dist/context.d.ts +0 -61
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -289
- package/dist/context.js.map +0 -1
- package/dist/daemon.d.ts +0 -49
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js +0 -226
- package/dist/daemon.js.map +0 -1
- package/dist/frontmatter.d.ts +0 -59
- package/dist/frontmatter.d.ts.map +0 -1
- package/dist/frontmatter.js +0 -170
- package/dist/frontmatter.js.map +0 -1
- package/dist/gepa/dataset.d.ts +0 -36
- package/dist/gepa/dataset.d.ts.map +0 -1
- package/dist/gepa/dataset.js +0 -148
- package/dist/gepa/dataset.js.map +0 -1
- package/dist/gepa/evaluator.d.ts +0 -51
- package/dist/gepa/evaluator.d.ts.map +0 -1
- package/dist/gepa/evaluator.js +0 -317
- package/dist/gepa/evaluator.js.map +0 -1
- package/dist/gepa/index.d.ts +0 -66
- package/dist/gepa/index.d.ts.map +0 -1
- package/dist/gepa/index.js +0 -240
- package/dist/gepa/index.js.map +0 -1
- package/dist/gepa/llm.d.ts +0 -35
- package/dist/gepa/llm.d.ts.map +0 -1
- package/dist/gepa/llm.js +0 -268
- package/dist/gepa/llm.js.map +0 -1
- package/dist/gepa/optimized/capture-prompt.txt +0 -65
- package/dist/gepa/optimizer.d.ts +0 -29
- package/dist/gepa/optimizer.d.ts.map +0 -1
- package/dist/gepa/optimizer.js +0 -249
- package/dist/gepa/optimizer.js.map +0 -1
- package/dist/gepa/targets.d.ts +0 -39
- package/dist/gepa/targets.d.ts.map +0 -1
- package/dist/gepa/targets.js +0 -326
- package/dist/gepa/targets.js.map +0 -1
- package/dist/gepa/types.d.ts +0 -168
- package/dist/gepa/types.d.ts.map +0 -1
- package/dist/gepa/types.js +0 -124
- package/dist/gepa/types.js.map +0 -1
- package/dist/index.d.ts +0 -21
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -294
- package/dist/index.js.map +0 -1
- package/dist/ingest.d.ts +0 -88
- package/dist/ingest.d.ts.map +0 -1
- package/dist/ingest.js +0 -105
- package/dist/ingest.js.map +0 -1
- package/dist/link-discovery.d.ts +0 -40
- package/dist/link-discovery.d.ts.map +0 -1
- package/dist/link-discovery.js +0 -122
- package/dist/link-discovery.js.map +0 -1
- package/dist/link-utils.d.ts +0 -30
- package/dist/link-utils.d.ts.map +0 -1
- package/dist/link-utils.js +0 -145
- package/dist/link-utils.js.map +0 -1
- package/dist/lint.d.ts +0 -39
- package/dist/lint.d.ts.map +0 -1
- package/dist/lint.js +0 -827
- package/dist/lint.js.map +0 -1
- package/dist/maintainer.d.ts +0 -24
- package/dist/maintainer.d.ts.map +0 -1
- package/dist/maintainer.js +0 -358
- package/dist/maintainer.js.map +0 -1
- package/dist/processor.d.ts +0 -14
- package/dist/processor.d.ts.map +0 -1
- package/dist/processor.js +0 -361
- package/dist/processor.js.map +0 -1
- package/dist/query.d.ts +0 -69
- package/dist/query.d.ts.map +0 -1
- package/dist/query.js +0 -107
- package/dist/query.js.map +0 -1
- package/dist/raw.d.ts +0 -57
- package/dist/raw.d.ts.map +0 -1
- package/dist/raw.js +0 -219
- package/dist/raw.js.map +0 -1
- package/dist/redact.d.ts +0 -21
- package/dist/redact.d.ts.map +0 -1
- package/dist/redact.js +0 -143
- package/dist/redact.js.map +0 -1
- package/dist/scope.d.ts +0 -54
- package/dist/scope.d.ts.map +0 -1
- package/dist/scope.js +0 -161
- package/dist/scope.js.map +0 -1
- package/dist/scripts/bulk-link-fix.d.ts +0 -9
- package/dist/scripts/bulk-link-fix.d.ts.map +0 -1
- package/dist/scripts/bulk-link-fix.js +0 -106
- package/dist/scripts/bulk-link-fix.js.map +0 -1
- package/dist/session-tools.d.ts +0 -33
- package/dist/session-tools.d.ts.map +0 -1
- package/dist/session-tools.js +0 -211
- package/dist/session-tools.js.map +0 -1
- package/dist/state.d.ts +0 -54
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -176
- package/dist/state.js.map +0 -1
- package/dist/store.d.ts +0 -56
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -227
- package/dist/store.js.map +0 -1
- package/dist/summarize.d.ts +0 -56
- package/dist/summarize.d.ts.map +0 -1
- package/dist/summarize.js +0 -231
- package/dist/summarize.js.map +0 -1
- package/dist/tag-registry.d.ts +0 -56
- package/dist/tag-registry.d.ts.map +0 -1
- package/dist/tag-registry.js +0 -146
- package/dist/tag-registry.js.map +0 -1
- package/dist/templates/prompts.d.ts +0 -63
- package/dist/templates/prompts.d.ts.map +0 -1
- package/dist/templates/prompts.js +0 -260
- package/dist/templates/prompts.js.map +0 -1
- package/dist/tools.d.ts +0 -26
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -1033
- package/dist/tools.js.map +0 -1
- package/dist/watcher.d.ts +0 -25
- package/dist/watcher.d.ts.map +0 -1
- package/dist/watcher.js +0 -84
- package/dist/watcher.js.map +0 -1
- package/dist/webui/client/dist/index.html +0 -1885
- package/dist/webui/server.d.ts +0 -31
- package/dist/webui/server.d.ts.map +0 -1
- package/dist/webui/server.js +0 -566
- package/dist/webui/server.js.map +0 -1
- package/dist/wiki.d.ts +0 -103
- package/dist/wiki.d.ts.map +0 -1
- package/dist/wiki.js +0 -428
- package/dist/wiki.js.map +0 -1
- package/scripts/gepa/__pycache__/dataset.cpython-313.pyc +0 -0
- package/scripts/gepa/__pycache__/lm_providers.cpython-313.pyc +0 -0
- package/scripts/gepa/__pycache__/metric.cpython-313.pyc +0 -0
- package/scripts/gepa/__pycache__/program.cpython-313.pyc +0 -0
- package/scripts/gepa/__pycache__/wiki_reader.cpython-313.pyc +0 -0
- package/scripts/gepa/uv.lock +0 -2241
package/dist/gepa/index.js
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GEPA optimizer orchestrator — TypeScript side.
|
|
3
|
-
*
|
|
4
|
-
* 1. Extracts all prompt/tool/skill instruction texts from source
|
|
5
|
-
* 2. Writes targets.json for the Python DSPy GEPA script
|
|
6
|
-
* 3. Reads auth.json → passes API keys as env vars to uv subprocess
|
|
7
|
-
* 4. Calls `uv run scripts/gepa/optimize.py`
|
|
8
|
-
* 5. Reads results.json → saves optimized prompts to disk
|
|
9
|
-
*/
|
|
10
|
-
import { spawn } from "node:child_process";
|
|
11
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync } from "node:fs";
|
|
12
|
-
import { homedir } from "node:os";
|
|
13
|
-
import { dirname, join, resolve } from "node:path";
|
|
14
|
-
// -- Paths -------------------------------------------------------------------
|
|
15
|
-
const WIKI_DIR = join(homedir(), ".pi", "wiki");
|
|
16
|
-
const GEPA_DIR = join(WIKI_DIR, "gepa");
|
|
17
|
-
const INPUT_DIR = join(GEPA_DIR, "input");
|
|
18
|
-
const OUTPUT_DIR = join(GEPA_DIR, "output");
|
|
19
|
-
const OPTIMIZED_DIR = join(GEPA_DIR, "optimized");
|
|
20
|
-
const HISTORY_DIR = join(GEPA_DIR, "history");
|
|
21
|
-
// -- Package root ------------------------------------------------------------
|
|
22
|
-
function findPackageRoot() {
|
|
23
|
-
let dir = dirname(new URL(import.meta.url).pathname);
|
|
24
|
-
for (let i = 0; i < 5; i++) {
|
|
25
|
-
const pkgPath = join(dir, "package.json");
|
|
26
|
-
if (existsSync(pkgPath)) {
|
|
27
|
-
try {
|
|
28
|
-
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
29
|
-
if (pkg.name === "@picassio/pi-para")
|
|
30
|
-
return dir;
|
|
31
|
-
}
|
|
32
|
-
catch { }
|
|
33
|
-
}
|
|
34
|
-
dir = dirname(dir);
|
|
35
|
-
}
|
|
36
|
-
return resolve(dirname(new URL(import.meta.url).pathname), "../..");
|
|
37
|
-
}
|
|
38
|
-
// -- Helpers: extract strings from TS source ---------------------------------
|
|
39
|
-
function extractTSConst(source, name) {
|
|
40
|
-
const m = source.match(new RegExp(`(?:export\\s+)?const\\s+${name}\\s*=\\s*\`([\\s\\S]*?)\`;`));
|
|
41
|
-
return m ? m[1].trim() : null;
|
|
42
|
-
}
|
|
43
|
-
function extractToolInstructions(source) {
|
|
44
|
-
const tools = {};
|
|
45
|
-
const blocks = [...source.matchAll(/registerTool\(\{[\s\S]*?name:\s*"(wiki_\w+)"[\s\S]*?(?=registerTool\(\{|$)/g)];
|
|
46
|
-
for (const block of blocks) {
|
|
47
|
-
const name = block[1].replace("wiki_", "wiki-");
|
|
48
|
-
const text = block[0];
|
|
49
|
-
const descStrs = [...(text.match(/description:\s*\n?\s*([\s\S]*?)(?:promptSnippet:|promptGuidelines:|parameters:)/)?.[1] ?? "").matchAll(/["'`]([^"'`]+)["'`]/g)];
|
|
50
|
-
const desc = descStrs.map(s => s[1]).join(" ");
|
|
51
|
-
const snippet = text.match(/promptSnippet:\s*["'`]([^"'`]+)["'`]/)?.[1] ?? "";
|
|
52
|
-
const guideMatch = text.match(/promptGuidelines:\s*\[([\s\S]*?)\]/);
|
|
53
|
-
const guides = guideMatch ? [...guideMatch[1].matchAll(/["'`]([^"'`]+)["'`]/g)].map(s => s[1]).join("\n") : "";
|
|
54
|
-
const combined = [`Tool: ${name}`, desc && `Description: ${desc.trim()}`, snippet && `Snippet: ${snippet}`, guides && `Guidelines:\n${guides}`].filter(Boolean).join("\n");
|
|
55
|
-
if (combined.length > 50)
|
|
56
|
-
tools[name] = combined;
|
|
57
|
-
}
|
|
58
|
-
return tools;
|
|
59
|
-
}
|
|
60
|
-
function toKebab(name) {
|
|
61
|
-
return name.replace(/_/g, "-").replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
|
|
62
|
-
}
|
|
63
|
-
// -- Target extraction -------------------------------------------------------
|
|
64
|
-
export function extractTargets(packageRoot) {
|
|
65
|
-
const root = packageRoot ?? findPackageRoot();
|
|
66
|
-
const targets = [];
|
|
67
|
-
// Prompt templates
|
|
68
|
-
const promptsFile = join(root, "src", "templates", "prompts.ts");
|
|
69
|
-
if (existsSync(promptsFile)) {
|
|
70
|
-
const src = readFileSync(promptsFile, "utf-8");
|
|
71
|
-
for (const n of ["WIKI_SYSTEM_PROMPT", "INGEST_PROMPT", "QUERY_PROMPT", "CAPTURE_SYSTEM_PROMPT", "CAPTURE_PROMPT", "EXPLICIT_CAPTURE_PROMPT", "SUMMARIZE_SYSTEM_PROMPT", "ITERATIVE_UPDATE_PROMPT", "OVERVIEW_PROMPT", "LINT_PROMPT"]) {
|
|
72
|
-
const c = extractTSConst(src, n);
|
|
73
|
-
if (c)
|
|
74
|
-
targets.push({ name: toKebab(n), type: "prompt", content: c, sourceFile: promptsFile });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Maintainer + processor prompts
|
|
78
|
-
for (const [file, constName, targetName] of [
|
|
79
|
-
["src/maintainer.ts", "MAINTENANCE_SYSTEM_PROMPT", "maintenance-system-prompt"],
|
|
80
|
-
["src/processor.ts", "CAPTURE_SYSTEM_PROMPT", "processor-capture-prompt"],
|
|
81
|
-
]) {
|
|
82
|
-
const p = join(root, file);
|
|
83
|
-
if (existsSync(p)) {
|
|
84
|
-
const c = extractTSConst(readFileSync(p, "utf-8"), constName);
|
|
85
|
-
if (c)
|
|
86
|
-
targets.push({ name: targetName, type: "prompt", content: c, sourceFile: p });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// Tool instructions
|
|
90
|
-
const toolsFile = join(root, "src", "tools.ts");
|
|
91
|
-
if (existsSync(toolsFile)) {
|
|
92
|
-
for (const [n, c] of Object.entries(extractToolInstructions(readFileSync(toolsFile, "utf-8")))) {
|
|
93
|
-
targets.push({ name: `tool-${n}`, type: "tool", content: c, sourceFile: toolsFile });
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// Skills
|
|
97
|
-
for (const s of ["para", "setup"]) {
|
|
98
|
-
const p = join(root, "skills", s, "SKILL.md");
|
|
99
|
-
if (existsSync(p)) {
|
|
100
|
-
const raw = readFileSync(p, "utf-8");
|
|
101
|
-
const body = raw.match(/^---\s*\n[\s\S]*?\n---\s*\n([\s\S]*)$/)?.[1]?.trim() ?? raw;
|
|
102
|
-
targets.push({ name: `skill-${s}`, type: "skill", content: body, sourceFile: p });
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return targets;
|
|
106
|
-
}
|
|
107
|
-
// -- Auth env vars -----------------------------------------------------------
|
|
108
|
-
function getAuthEnvVars() {
|
|
109
|
-
const env = {};
|
|
110
|
-
try {
|
|
111
|
-
const auth = JSON.parse(readFileSync(join(homedir(), ".pi", "agent", "auth.json"), "utf-8"));
|
|
112
|
-
if (auth.anthropic?.access) {
|
|
113
|
-
env.ANTHROPIC_OAUTH_TOKEN = auth.anthropic.access;
|
|
114
|
-
env.ANTHROPIC_API_KEY = auth.anthropic.access;
|
|
115
|
-
}
|
|
116
|
-
else if (auth.anthropic?.key)
|
|
117
|
-
env.ANTHROPIC_API_KEY = auth.anthropic.key;
|
|
118
|
-
if (auth.minimax?.key)
|
|
119
|
-
env.MINIMAX_API_KEY = auth.minimax.key;
|
|
120
|
-
if (auth.openrouter?.key)
|
|
121
|
-
env.OPENROUTER_API_KEY = auth.openrouter.key;
|
|
122
|
-
else if (auth.openrouter?.openrouter_key)
|
|
123
|
-
env.OPENROUTER_API_KEY = auth.openrouter.openrouter_key;
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
try {
|
|
127
|
-
const raw = readFileSync(join(homedir(), ".config", "qmd", "index.yml"), "utf-8");
|
|
128
|
-
const m = raw.match(/chat:[\s\S]*?key:\s*(.+)/);
|
|
129
|
-
if (m) {
|
|
130
|
-
const k = m[1].trim();
|
|
131
|
-
if (raw.includes("minimaxi.com"))
|
|
132
|
-
env.MINIMAX_CN_API_KEY = k;
|
|
133
|
-
else
|
|
134
|
-
env.MINIMAX_API_KEY = k;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
catch { }
|
|
138
|
-
}
|
|
139
|
-
return env;
|
|
140
|
-
}
|
|
141
|
-
// -- Main orchestrator -------------------------------------------------------
|
|
142
|
-
export async function runGEPA(options = {}) {
|
|
143
|
-
const root = findPackageRoot();
|
|
144
|
-
const scriptsDir = join(root, "scripts", "gepa");
|
|
145
|
-
for (const d of [INPUT_DIR, OUTPUT_DIR, OPTIMIZED_DIR, HISTORY_DIR])
|
|
146
|
-
mkdirSync(d, { recursive: true });
|
|
147
|
-
// Load GEPA config from config.json (user-configurable defaults)
|
|
148
|
-
let gepaConfig = {};
|
|
149
|
-
try {
|
|
150
|
-
const cfg = JSON.parse(readFileSync(join(WIKI_DIR, "config.json"), "utf-8"));
|
|
151
|
-
gepaConfig = cfg.gepa ?? {};
|
|
152
|
-
}
|
|
153
|
-
catch { }
|
|
154
|
-
// Resolution: CLI flag → options → config.json → default
|
|
155
|
-
const studentModel = options.studentModel ?? options.model
|
|
156
|
-
?? gepaConfig.studentModel ?? "anthropic/claude-sonnet-4-20250514";
|
|
157
|
-
const teacherModel = options.teacherModel ?? options.reflectionModel
|
|
158
|
-
?? gepaConfig.teacherModel ?? "anthropic/claude-opus-4-6";
|
|
159
|
-
const judgeModel = options.judgeModel
|
|
160
|
-
?? gepaConfig.judgeModel ?? studentModel;
|
|
161
|
-
const auto = options.auto ?? gepaConfig.auto ?? "light";
|
|
162
|
-
const threads = options.threads ?? gepaConfig.threads ?? 2;
|
|
163
|
-
const seed = options.seed ?? gepaConfig.seed ?? 42;
|
|
164
|
-
const allTargets = extractTargets(root);
|
|
165
|
-
let targets = options.target ? allTargets.filter(t => t.name === options.target) : allTargets;
|
|
166
|
-
if (options.target && targets.length === 0)
|
|
167
|
-
throw new Error(`Target '${options.target}' not found. Available: ${allTargets.map(t => t.name).join(", ")}`);
|
|
168
|
-
console.log(`[gepa] Found ${targets.length} target(s) to optimize`);
|
|
169
|
-
console.log(`[gepa] Student: ${studentModel}, Teacher: ${teacherModel}, Judge: ${judgeModel}, Budget: ${auto}`);
|
|
170
|
-
const targetsFile = join(INPUT_DIR, "targets.json");
|
|
171
|
-
writeFileSync(targetsFile, JSON.stringify({ targets: targets.map(t => ({ name: t.name, type: t.type, content: t.content })) }, null, 2));
|
|
172
|
-
const outputFile = join(OUTPUT_DIR, "results.json");
|
|
173
|
-
const uvArgs = [
|
|
174
|
-
"run", "--project", scriptsDir, join(scriptsDir, "optimize.py"),
|
|
175
|
-
"--targets-file", targetsFile, "--wiki-dir", WIKI_DIR, "--output", outputFile,
|
|
176
|
-
"--model", studentModel,
|
|
177
|
-
"--reflection-model", teacherModel,
|
|
178
|
-
"--judge-model", judgeModel,
|
|
179
|
-
"--auto", auto,
|
|
180
|
-
"--threads", String(threads),
|
|
181
|
-
"--seed", String(seed),
|
|
182
|
-
...(options.maxMetricCalls ? ["--max-metric-calls", String(options.maxMetricCalls)] : []),
|
|
183
|
-
...(options.target ? ["--target", options.target] : []),
|
|
184
|
-
];
|
|
185
|
-
console.log(`[gepa] Running: uv ${uvArgs.slice(0, 6).join(" ")} ...`);
|
|
186
|
-
await new Promise((resolve, reject) => {
|
|
187
|
-
const proc = spawn("uv", uvArgs, { cwd: scriptsDir, env: { ...process.env, ...getAuthEnvVars() }, stdio: ["pipe", "inherit", "inherit"] });
|
|
188
|
-
proc.on("close", c => c === 0 ? resolve() : reject(new Error(`uv exited with code ${c}`)));
|
|
189
|
-
proc.on("error", e => reject(new Error(`Failed to spawn uv: ${e.message}`)));
|
|
190
|
-
});
|
|
191
|
-
if (!existsSync(outputFile))
|
|
192
|
-
throw new Error("Output file not created");
|
|
193
|
-
const output = JSON.parse(readFileSync(outputFile, "utf-8"));
|
|
194
|
-
for (const r of output.results) {
|
|
195
|
-
if (r.status === "success" && r.optimized_instruction) {
|
|
196
|
-
mkdirSync(OPTIMIZED_DIR, { recursive: true });
|
|
197
|
-
writeFileSync(join(OPTIMIZED_DIR, `${r.target}.txt`), r.optimized_instruction, "utf-8");
|
|
198
|
-
const hDir = join(HISTORY_DIR, r.target);
|
|
199
|
-
mkdirSync(hDir, { recursive: true });
|
|
200
|
-
writeFileSync(join(hDir, `${new Date().toISOString().replace(/[:.]/g, "-")}.json`), JSON.stringify(r, null, 2));
|
|
201
|
-
console.log(`[gepa] Saved optimized: ${r.target}`);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
return output;
|
|
205
|
-
}
|
|
206
|
-
// -- Query functions ---------------------------------------------------------
|
|
207
|
-
export function listOptimized() {
|
|
208
|
-
if (!existsSync(OPTIMIZED_DIR))
|
|
209
|
-
return [];
|
|
210
|
-
const results = [];
|
|
211
|
-
for (const f of readdirSync(OPTIMIZED_DIR).filter(f => f.endsWith(".txt"))) {
|
|
212
|
-
const name = f.replace(".txt", "");
|
|
213
|
-
let score = 0, timestamp = "", model = "";
|
|
214
|
-
try {
|
|
215
|
-
const entries = readdirSync(join(HISTORY_DIR, name)).filter(f => f.endsWith(".json")).sort().reverse();
|
|
216
|
-
if (entries[0]) {
|
|
217
|
-
const d = JSON.parse(readFileSync(join(HISTORY_DIR, name, entries[0]), "utf-8"));
|
|
218
|
-
score = d.optimized_score ?? 0;
|
|
219
|
-
timestamp = d.timestamp ?? "";
|
|
220
|
-
model = d.model ?? "";
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
catch { }
|
|
224
|
-
results.push({ name, score, timestamp, model });
|
|
225
|
-
}
|
|
226
|
-
return results;
|
|
227
|
-
}
|
|
228
|
-
export function compareTarget(targetName) {
|
|
229
|
-
const target = extractTargets().find(t => t.name === targetName);
|
|
230
|
-
if (!target)
|
|
231
|
-
return null;
|
|
232
|
-
try {
|
|
233
|
-
const opt = readFileSync(join(OPTIMIZED_DIR, `${targetName}.txt`), "utf-8");
|
|
234
|
-
return { original: target.content, optimized: opt };
|
|
235
|
-
}
|
|
236
|
-
catch {
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
//# sourceMappingURL=index.js.map
|
package/dist/gepa/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gepa/index.ts"],"names":[],"mappings":"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"}
|
package/dist/gepa/llm.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GEPA LLM provider abstraction.
|
|
3
|
-
*
|
|
4
|
-
* Uses pi's native model system (pi-ai + pi-coding-agent) for LLM calls.
|
|
5
|
-
* No DSPy, no LiteLLM — direct integration with the pi model stack.
|
|
6
|
-
*
|
|
7
|
-
* Resolution order for model selection:
|
|
8
|
-
* 1. config.json gepa.reflectionModel
|
|
9
|
-
* 2. config.json daemonModel
|
|
10
|
-
* 3. AuthStorage auto-detect (anthropic > openai > openrouter > google-antigravity > github-copilot)
|
|
11
|
-
* 4. qmd config (~/.config/qmd/index.yml)
|
|
12
|
-
*/
|
|
13
|
-
import type { Model, Api } from "@mariozechner/pi-ai";
|
|
14
|
-
import type { LLMClient, GEPAConfig } from "./types.js";
|
|
15
|
-
/** Resolved model + getApiKey pair, same shape as cli.ts createModel(). */
|
|
16
|
-
interface ResolvedModel {
|
|
17
|
-
model: Model<Api>;
|
|
18
|
-
getApiKey: (provider: string) => Promise<string>;
|
|
19
|
-
modelId: string;
|
|
20
|
-
}
|
|
21
|
-
/** Extract GEPA config with defaults applied. */
|
|
22
|
-
export declare function loadGEPAConfig(): GEPAConfig;
|
|
23
|
-
/**
|
|
24
|
-
* Resolve a model through the full resolution chain.
|
|
25
|
-
* Throws if no model is available.
|
|
26
|
-
*/
|
|
27
|
-
export declare function resolveModel(configOverride?: Partial<GEPAConfig>): Promise<ResolvedModel>;
|
|
28
|
-
/**
|
|
29
|
-
* Create an LLM client for GEPA operations.
|
|
30
|
-
*
|
|
31
|
-
* Uses pi-ai's `completeSimple()` for direct model calls — no Agent overhead.
|
|
32
|
-
*/
|
|
33
|
-
export declare function createLLMClient(configOverride?: Partial<GEPAConfig>): Promise<LLMClient>;
|
|
34
|
-
export {};
|
|
35
|
-
//# sourceMappingURL=llm.d.ts.map
|
package/dist/gepa/llm.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/gepa/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAoB,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxD,2EAA2E;AAC3E,UAAU,aAAa;IACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,iDAAiD;AACjD,wBAAgB,cAAc,IAAI,UAAU,CAM3C;AAiKD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAyD/F;AAID;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAgD9F"}
|
package/dist/gepa/llm.js
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GEPA LLM provider abstraction.
|
|
3
|
-
*
|
|
4
|
-
* Uses pi's native model system (pi-ai + pi-coding-agent) for LLM calls.
|
|
5
|
-
* No DSPy, no LiteLLM — direct integration with the pi model stack.
|
|
6
|
-
*
|
|
7
|
-
* Resolution order for model selection:
|
|
8
|
-
* 1. config.json gepa.reflectionModel
|
|
9
|
-
* 2. config.json daemonModel
|
|
10
|
-
* 3. AuthStorage auto-detect (anthropic > openai > openrouter > google-antigravity > github-copilot)
|
|
11
|
-
* 4. qmd config (~/.config/qmd/index.yml)
|
|
12
|
-
*/
|
|
13
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
14
|
-
import { join } from "node:path";
|
|
15
|
-
import { homedir } from "node:os";
|
|
16
|
-
import { DEFAULT_GEPA_CONFIG } from "./types.js";
|
|
17
|
-
// -- Config loading ----------------------------------------------------------
|
|
18
|
-
function loadParaConfig() {
|
|
19
|
-
try {
|
|
20
|
-
const configPath = join(homedir(), ".pi", "wiki", "config.json");
|
|
21
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
22
|
-
return JSON.parse(raw);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/** Extract GEPA config with defaults applied. */
|
|
29
|
-
export function loadGEPAConfig() {
|
|
30
|
-
const config = loadParaConfig();
|
|
31
|
-
return {
|
|
32
|
-
...DEFAULT_GEPA_CONFIG,
|
|
33
|
-
...config.gepa,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
// -- Model resolution --------------------------------------------------------
|
|
37
|
-
async function resolveNamedModel(modelSpec) {
|
|
38
|
-
const [provider, ...rest] = modelSpec.split("/");
|
|
39
|
-
const modelId = rest.join("/");
|
|
40
|
-
if (!provider || !modelId)
|
|
41
|
-
return null;
|
|
42
|
-
const { getModel } = await import("@mariozechner/pi-ai");
|
|
43
|
-
let model;
|
|
44
|
-
try {
|
|
45
|
-
model = getModel(provider, modelId);
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
// Model not found
|
|
49
|
-
}
|
|
50
|
-
if (!model)
|
|
51
|
-
return null;
|
|
52
|
-
const getApiKey = await buildApiKeyResolver();
|
|
53
|
-
return {
|
|
54
|
-
model,
|
|
55
|
-
getApiKey,
|
|
56
|
-
modelId: `${provider}/${modelId}`,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
async function autoDetectModel() {
|
|
60
|
-
try {
|
|
61
|
-
const { AuthStorage } = await import("@mariozechner/pi-coding-agent");
|
|
62
|
-
const { getModels, getEnvApiKey } = await import("@mariozechner/pi-ai");
|
|
63
|
-
const authStorage = AuthStorage.create();
|
|
64
|
-
const preferredProviders = [
|
|
65
|
-
"anthropic",
|
|
66
|
-
"openai",
|
|
67
|
-
"openrouter",
|
|
68
|
-
"google-antigravity",
|
|
69
|
-
"github-copilot",
|
|
70
|
-
];
|
|
71
|
-
for (const provider of preferredProviders) {
|
|
72
|
-
if (!authStorage.hasAuth(provider))
|
|
73
|
-
continue;
|
|
74
|
-
const key = await authStorage.getApiKey(provider);
|
|
75
|
-
if (!key)
|
|
76
|
-
continue;
|
|
77
|
-
const models = getModels(provider);
|
|
78
|
-
const sorted = [...models].sort((a, b) => (b.contextWindow ?? 0) - (a.contextWindow ?? 0));
|
|
79
|
-
const picked = sorted.find((m) => !m.reasoning) ?? sorted[0];
|
|
80
|
-
if (picked) {
|
|
81
|
-
const getApiKey = async (p) => {
|
|
82
|
-
const k = await authStorage.getApiKey(p);
|
|
83
|
-
return k ?? getEnvApiKey(p) ?? "";
|
|
84
|
-
};
|
|
85
|
-
return {
|
|
86
|
-
model: picked,
|
|
87
|
-
getApiKey,
|
|
88
|
-
modelId: `${provider}/${picked.id}`,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
// AuthStorage not available
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
async function envVarModel() {
|
|
99
|
-
const { getProviders, getModels, getEnvApiKey } = await import("@mariozechner/pi-ai");
|
|
100
|
-
const providers = getProviders();
|
|
101
|
-
for (const provider of providers) {
|
|
102
|
-
const key = getEnvApiKey(provider);
|
|
103
|
-
if (!key)
|
|
104
|
-
continue;
|
|
105
|
-
const models = getModels(provider);
|
|
106
|
-
const sorted = [...models].sort((a, b) => (b.contextWindow ?? 0) - (a.contextWindow ?? 0));
|
|
107
|
-
const picked = sorted.find((m) => !m.reasoning) ?? sorted[0];
|
|
108
|
-
if (picked) {
|
|
109
|
-
const getApiKeyFn = async (_p) => getEnvApiKey(_p) ?? "";
|
|
110
|
-
return {
|
|
111
|
-
model: picked,
|
|
112
|
-
getApiKey: getApiKeyFn,
|
|
113
|
-
modelId: `${provider}/${picked.id}`,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return null;
|
|
118
|
-
}
|
|
119
|
-
async function qmdConfigModel() {
|
|
120
|
-
const configPath = join(homedir(), ".config", "qmd", "index.yml");
|
|
121
|
-
if (!existsSync(configPath))
|
|
122
|
-
return null;
|
|
123
|
-
try {
|
|
124
|
-
const { parse } = await import("yaml");
|
|
125
|
-
const cfg = parse(readFileSync(configPath, "utf-8"));
|
|
126
|
-
const chat = cfg?.providers?.chat;
|
|
127
|
-
if (!chat?.url || !chat?.key)
|
|
128
|
-
return null;
|
|
129
|
-
const model = {
|
|
130
|
-
id: chat.model || "MiniMax-M2.7-highspeed",
|
|
131
|
-
name: chat.model || "MiniMax-M2.7-highspeed",
|
|
132
|
-
provider: "custom",
|
|
133
|
-
api: chat.api === "anthropic" ? "anthropic-messages" : "openai-completions",
|
|
134
|
-
baseUrl: chat.url,
|
|
135
|
-
reasoning: false,
|
|
136
|
-
input: ["text"],
|
|
137
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
138
|
-
contextWindow: 196_000,
|
|
139
|
-
maxTokens: 8192,
|
|
140
|
-
};
|
|
141
|
-
const apiKey = chat.key;
|
|
142
|
-
const getApiKey = async (_provider) => apiKey;
|
|
143
|
-
return {
|
|
144
|
-
model,
|
|
145
|
-
getApiKey,
|
|
146
|
-
modelId: `custom/${model.id}`,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
async function buildApiKeyResolver() {
|
|
154
|
-
let authStorage = null;
|
|
155
|
-
try {
|
|
156
|
-
const { AuthStorage } = await import("@mariozechner/pi-coding-agent");
|
|
157
|
-
authStorage = AuthStorage.create();
|
|
158
|
-
}
|
|
159
|
-
catch {
|
|
160
|
-
// AuthStorage not available
|
|
161
|
-
}
|
|
162
|
-
const { getEnvApiKey } = await import("@mariozechner/pi-ai");
|
|
163
|
-
return async (provider) => {
|
|
164
|
-
if (authStorage) {
|
|
165
|
-
const k = await authStorage.getApiKey(provider);
|
|
166
|
-
if (k)
|
|
167
|
-
return k;
|
|
168
|
-
}
|
|
169
|
-
return getEnvApiKey(provider) ?? "";
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
// -- Model resolution pipeline -----------------------------------------------
|
|
173
|
-
/**
|
|
174
|
-
* Resolve a model through the full resolution chain.
|
|
175
|
-
* Throws if no model is available.
|
|
176
|
-
*/
|
|
177
|
-
export async function resolveModel(configOverride) {
|
|
178
|
-
const config = loadParaConfig();
|
|
179
|
-
const gepaConfig = { ...DEFAULT_GEPA_CONFIG, ...config.gepa, ...configOverride };
|
|
180
|
-
// 1. Explicit GEPA reflection model
|
|
181
|
-
if (gepaConfig.reflectionModel) {
|
|
182
|
-
console.log(`[gepa] Trying gepa.reflectionModel: ${gepaConfig.reflectionModel}`);
|
|
183
|
-
const resolved = await resolveNamedModel(gepaConfig.reflectionModel);
|
|
184
|
-
if (resolved) {
|
|
185
|
-
console.log(`[gepa] Using reflection model: ${resolved.modelId} (context: ${resolved.model.contextWindow})`);
|
|
186
|
-
return resolved;
|
|
187
|
-
}
|
|
188
|
-
console.log(`[gepa] reflectionModel "${gepaConfig.reflectionModel}" not found, falling back`);
|
|
189
|
-
}
|
|
190
|
-
// 2. daemonModel from config
|
|
191
|
-
if (config.daemonModel) {
|
|
192
|
-
console.log(`[gepa] Trying daemonModel: ${config.daemonModel}`);
|
|
193
|
-
const resolved = await resolveNamedModel(config.daemonModel);
|
|
194
|
-
if (resolved) {
|
|
195
|
-
console.log(`[gepa] Using daemon model: ${resolved.modelId} (context: ${resolved.model.contextWindow})`);
|
|
196
|
-
return resolved;
|
|
197
|
-
}
|
|
198
|
-
console.log(`[gepa] daemonModel "${config.daemonModel}" not found, falling back`);
|
|
199
|
-
}
|
|
200
|
-
// 3. AuthStorage auto-detect
|
|
201
|
-
console.log(`[gepa] Auto-detecting model via AuthStorage...`);
|
|
202
|
-
const autoDetected = await autoDetectModel();
|
|
203
|
-
if (autoDetected) {
|
|
204
|
-
console.log(`[gepa] Using auto-detected model: ${autoDetected.modelId} (context: ${autoDetected.model.contextWindow})`);
|
|
205
|
-
return autoDetected;
|
|
206
|
-
}
|
|
207
|
-
// 4. Env var detection
|
|
208
|
-
console.log(`[gepa] Trying env var model detection...`);
|
|
209
|
-
const envModel = await envVarModel();
|
|
210
|
-
if (envModel) {
|
|
211
|
-
console.log(`[gepa] Using env model: ${envModel.modelId} (context: ${envModel.model.contextWindow})`);
|
|
212
|
-
return envModel;
|
|
213
|
-
}
|
|
214
|
-
// 5. qmd config fallback
|
|
215
|
-
console.log(`[gepa] Trying qmd config fallback...`);
|
|
216
|
-
const qmdModel = await qmdConfigModel();
|
|
217
|
-
if (qmdModel) {
|
|
218
|
-
console.log(`[gepa] Using qmd model: ${qmdModel.modelId} (context: ${qmdModel.model.contextWindow})`);
|
|
219
|
-
return qmdModel;
|
|
220
|
-
}
|
|
221
|
-
throw new Error("[gepa] No LLM model available. Configure one of:\n" +
|
|
222
|
-
" - gepa.reflectionModel in ~/.pi/wiki/config.json\n" +
|
|
223
|
-
" - daemonModel in ~/.pi/wiki/config.json\n" +
|
|
224
|
-
" - API keys (ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.)\n" +
|
|
225
|
-
" - ~/.config/qmd/index.yml chat provider");
|
|
226
|
-
}
|
|
227
|
-
// -- LLM Client creation -----------------------------------------------------
|
|
228
|
-
/**
|
|
229
|
-
* Create an LLM client for GEPA operations.
|
|
230
|
-
*
|
|
231
|
-
* Uses pi-ai's `completeSimple()` for direct model calls — no Agent overhead.
|
|
232
|
-
*/
|
|
233
|
-
export async function createLLMClient(configOverride) {
|
|
234
|
-
const resolved = await resolveModel(configOverride);
|
|
235
|
-
const { completeSimple } = await import("@mariozechner/pi-ai");
|
|
236
|
-
return {
|
|
237
|
-
modelId: resolved.modelId,
|
|
238
|
-
async complete(prompt, system) {
|
|
239
|
-
const apiKey = await resolved.getApiKey(resolved.model.provider);
|
|
240
|
-
const response = await completeSimple(resolved.model, {
|
|
241
|
-
systemPrompt: system,
|
|
242
|
-
messages: [
|
|
243
|
-
{
|
|
244
|
-
role: "user",
|
|
245
|
-
content: prompt,
|
|
246
|
-
timestamp: Date.now(),
|
|
247
|
-
},
|
|
248
|
-
],
|
|
249
|
-
}, {
|
|
250
|
-
apiKey,
|
|
251
|
-
maxTokens: resolved.model.maxTokens,
|
|
252
|
-
});
|
|
253
|
-
// Extract text from the assistant response content blocks
|
|
254
|
-
const textParts = [];
|
|
255
|
-
for (const block of response.content) {
|
|
256
|
-
if (block.type === "text") {
|
|
257
|
-
textParts.push(block.text);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
const result = textParts.join("\n");
|
|
261
|
-
if (!result.trim()) {
|
|
262
|
-
throw new Error(`[gepa] Empty response from ${resolved.modelId} (stop: ${response.stopReason})`);
|
|
263
|
-
}
|
|
264
|
-
return result;
|
|
265
|
-
},
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=llm.js.map
|
package/dist/gepa/llm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/gepa/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
You are a knowledge extraction specialist for technical project wikis. Your task is to analyze coding session conversations and capture ALL project-relevant knowledge into wiki pages.
|
|
2
|
-
|
|
3
|
-
## Input Format
|
|
4
|
-
You will receive:
|
|
5
|
-
- task_context: Brief description of the coding session topic and project
|
|
6
|
-
- session-conversation: The actual conversation content to analyze
|
|
7
|
-
|
|
8
|
-
## Wiki Page Structure Requirements
|
|
9
|
-
Create wiki pages using this exact structure:
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
# Page Title (kebab-case for technical terms)
|
|
13
|
-
|
|
14
|
-
## Topic
|
|
15
|
-
Brief description of what this page covers (1-2 sentences)
|
|
16
|
-
|
|
17
|
-
## Key Facts
|
|
18
|
-
- Bullet points with specific technical details
|
|
19
|
-
- Include paths, configs, server details, commands
|
|
20
|
-
- Use **bold** for important terms/concepts
|
|
21
|
-
- Capture operational facts - they're often most valuable
|
|
22
|
-
|
|
23
|
-
## Insights (Optional)
|
|
24
|
-
- Analysis of implications, patterns, or broader context
|
|
25
|
-
- How this connects to larger architectural patterns
|
|
26
|
-
- Lessons learned or best practices identified
|
|
27
|
-
|
|
28
|
-
## Connections
|
|
29
|
-
- [[Related Wiki Page]] - Brief description of relationship
|
|
30
|
-
- Use kebab-case for technical project names
|
|
31
|
-
- Include both specific project pages and general concept pages
|
|
32
|
-
|
|
33
|
-
## Sources
|
|
34
|
-
- Session file path or conversation source
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## PARA Compliance Requirements
|
|
38
|
-
- Use kebab-case for all project names and technical terms in page titles and connections
|
|
39
|
-
- Technical reference material should be categorized as Resources
|
|
40
|
-
- Include scope indicators through consistent naming and cross-references
|
|
41
|
-
|
|
42
|
-
## Knowledge Capture Bias
|
|
43
|
-
**Capture bias: when in doubt, capture it.**
|
|
44
|
-
- Small operational facts (paths, configs, commands) are often most valuable
|
|
45
|
-
- Technical architecture details, even if seemingly minor
|
|
46
|
-
- API findings, verification results, compatibility issues
|
|
47
|
-
- Extension systems, plugin architectures, integration points
|
|
48
|
-
- Security considerations and safeguards
|
|
49
|
-
|
|
50
|
-
## Wiki Management Strategy
|
|
51
|
-
1. **Search first**: Use wiki_query to find existing pages on the topic
|
|
52
|
-
2. **Update over create**: If matching page exists, use wiki_read then wiki_write with exact slug to update
|
|
53
|
-
3. **Create only if needed**: Only make new pages if wiki_query finds no relevant results
|
|
54
|
-
4. **Never pass indexContent**: The index auto-rebuilds from pages on disk
|
|
55
|
-
5. **Always include sources**: Add session file path to Sources section
|
|
56
|
-
|
|
57
|
-
## Special Project Context
|
|
58
|
-
Based on the examples, you're working with:
|
|
59
|
-
- **pi-mono/pi-para projects**: Modular knowledge management and agent systems
|
|
60
|
-
- **Extension architectures**: Plugin-based systems for AI agents and knowledge tools
|
|
61
|
-
- **Quarto integration**: .qmd files as first-class knowledge artifacts
|
|
62
|
-
- **API verification**: Testing and validation processes for extensions
|
|
63
|
-
- **Security considerations**: Prompt injection safeguards in agent systems
|
|
64
|
-
|
|
65
|
-
Only respond with "nothing to capture" if the session contains purely greetings or completely off-topic chitchat with zero project knowledge.
|