pi-para 0.6.0 → 0.6.1
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 +0 -9
- package/CHANGELOG.md +13 -0
- package/CONFIGURATION.md +0 -23
- package/README.md +1 -29
- package/SETUP.md +1 -1
- package/STRUCTURE.md +0 -9
- package/dist/atomic-write.d.ts +2 -0
- package/dist/atomic-write.d.ts.map +1 -0
- package/dist/atomic-write.js +18 -0
- package/dist/atomic-write.js.map +1 -0
- package/dist/capture.d.ts +34 -0
- package/dist/capture.d.ts.map +1 -0
- package/dist/capture.js +461 -0
- package/dist/capture.js.map +1 -0
- package/dist/cli-legacy.d.ts +4 -0
- package/dist/cli-legacy.d.ts.map +1 -0
- package/dist/cli-legacy.js +41 -0
- package/dist/cli-legacy.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +427 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands.d.ts +15 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +719 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +94 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +228 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +63 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +311 -0
- package/dist/context.js.map +1 -0
- package/dist/credentials.d.ts +27 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +85 -0
- package/dist/credentials.js.map +1 -0
- package/dist/daemon.d.ts +49 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +226 -0
- package/dist/daemon.js.map +1 -0
- package/dist/doctor.d.ts +20 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +176 -0
- package/dist/doctor.js.map +1 -0
- package/dist/frontmatter.d.ts +59 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +170 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +342 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest.d.ts +88 -0
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +105 -0
- package/dist/ingest.js.map +1 -0
- package/dist/link-discovery.d.ts +40 -0
- package/dist/link-discovery.d.ts.map +1 -0
- package/dist/link-discovery.js +122 -0
- package/dist/link-discovery.js.map +1 -0
- package/dist/link-utils.d.ts +30 -0
- package/dist/link-utils.d.ts.map +1 -0
- package/dist/link-utils.js +145 -0
- package/dist/link-utils.js.map +1 -0
- package/dist/lint.d.ts +39 -0
- package/dist/lint.d.ts.map +1 -0
- package/dist/lint.js +827 -0
- package/dist/lint.js.map +1 -0
- package/dist/maintainer.d.ts +24 -0
- package/dist/maintainer.d.ts.map +1 -0
- package/dist/maintainer.js +358 -0
- package/dist/maintainer.js.map +1 -0
- package/dist/model-resolver.d.ts +30 -0
- package/dist/model-resolver.d.ts.map +1 -0
- package/dist/model-resolver.js +71 -0
- package/dist/model-resolver.js.map +1 -0
- package/dist/paths.d.ts +20 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +33 -0
- package/dist/paths.js.map +1 -0
- package/dist/processor.d.ts +14 -0
- package/dist/processor.d.ts.map +1 -0
- package/dist/processor.js +361 -0
- package/dist/processor.js.map +1 -0
- package/dist/qmd-providers.d.ts +12 -0
- package/dist/qmd-providers.d.ts.map +1 -0
- package/dist/qmd-providers.js +45 -0
- package/dist/qmd-providers.js.map +1 -0
- package/dist/query.d.ts +69 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +120 -0
- package/dist/query.js.map +1 -0
- package/dist/raw.d.ts +57 -0
- package/dist/raw.d.ts.map +1 -0
- package/dist/raw.js +219 -0
- package/dist/raw.js.map +1 -0
- package/dist/redact.d.ts +21 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +143 -0
- package/dist/redact.js.map +1 -0
- package/dist/repair.d.ts +11 -0
- package/dist/repair.d.ts.map +1 -0
- package/dist/repair.js +41 -0
- package/dist/repair.js.map +1 -0
- package/dist/scheduler/controls.d.ts +35 -0
- package/dist/scheduler/controls.d.ts.map +1 -0
- package/dist/scheduler/controls.js +98 -0
- package/dist/scheduler/controls.js.map +1 -0
- package/dist/scheduler/index.d.ts +48 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +193 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/leases.d.ts +22 -0
- package/dist/scheduler/leases.d.ts.map +1 -0
- package/dist/scheduler/leases.js +74 -0
- package/dist/scheduler/leases.js.map +1 -0
- package/dist/scheduler/session-capture.d.ts +33 -0
- package/dist/scheduler/session-capture.d.ts.map +1 -0
- package/dist/scheduler/session-capture.js +108 -0
- package/dist/scheduler/session-capture.js.map +1 -0
- package/dist/scheduler/state.d.ts +56 -0
- package/dist/scheduler/state.d.ts.map +1 -0
- package/dist/scheduler/state.js +210 -0
- package/dist/scheduler/state.js.map +1 -0
- package/dist/scope.d.ts +54 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +161 -0
- package/dist/scope.js.map +1 -0
- package/dist/scripts/bulk-link-fix.d.ts +9 -0
- package/dist/scripts/bulk-link-fix.d.ts.map +1 -0
- package/dist/scripts/bulk-link-fix.js +106 -0
- package/dist/scripts/bulk-link-fix.js.map +1 -0
- package/dist/session-tools.d.ts +33 -0
- package/dist/session-tools.d.ts.map +1 -0
- package/dist/session-tools.js +211 -0
- package/dist/session-tools.js.map +1 -0
- package/dist/settings.d.ts +19 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +106 -0
- package/dist/settings.js.map +1 -0
- package/dist/setup.d.ts +29 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +90 -0
- package/dist/setup.js.map +1 -0
- package/dist/state.d.ts +54 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +176 -0
- package/dist/state.js.map +1 -0
- package/dist/status.d.ts +22 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +93 -0
- package/dist/status.js.map +1 -0
- package/dist/store.d.ts +71 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +282 -0
- package/dist/store.js.map +1 -0
- package/dist/summarize.d.ts +60 -0
- package/dist/summarize.d.ts.map +1 -0
- package/dist/summarize.js +266 -0
- package/dist/summarize.js.map +1 -0
- package/dist/tag-registry.d.ts +56 -0
- package/dist/tag-registry.d.ts.map +1 -0
- package/dist/tag-registry.js +146 -0
- package/dist/tag-registry.js.map +1 -0
- package/dist/templates/prompts.d.ts +51 -0
- package/dist/templates/prompts.d.ts.map +1 -0
- package/dist/templates/prompts.js +203 -0
- package/dist/templates/prompts.js.map +1 -0
- package/dist/tools.d.ts +26 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +1198 -0
- package/dist/tools.js.map +1 -0
- package/dist/watcher.d.ts +25 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +84 -0
- package/dist/watcher.js.map +1 -0
- package/dist/webui/client/dist/index.html +1885 -0
- package/dist/webui/server.d.ts +31 -0
- package/dist/webui/server.d.ts.map +1 -0
- package/dist/webui/server.js +566 -0
- package/dist/webui/server.js.map +1 -0
- package/dist/wiki-tool-guidance.d.ts +6 -0
- package/dist/wiki-tool-guidance.d.ts.map +1 -0
- package/dist/wiki-tool-guidance.js +70 -0
- package/dist/wiki-tool-guidance.js.map +1 -0
- package/dist/wiki.d.ts +108 -0
- package/dist/wiki.d.ts.map +1 -0
- package/dist/wiki.js +497 -0
- package/dist/wiki.js.map +1 -0
- package/package.json +2 -1
- package/scripts/build-assets.mjs +1 -13
- package/skills/setup/SKILL.md +1 -1
- package/src/cli.ts +0 -70
- package/src/config.ts +0 -25
- package/src/index.ts +1 -38
- package/src/templates/prompts.ts +0 -56
- package/scripts/gepa/dataset.py +0 -192
- package/scripts/gepa/lm_providers.py +0 -472
- package/scripts/gepa/metric.py +0 -279
- package/scripts/gepa/optimize.py +0 -367
- package/scripts/gepa/program.py +0 -99
- package/scripts/gepa/pyproject.toml +0 -19
- package/scripts/gepa/run-all.sh +0 -53
- package/scripts/gepa/wiki_reader.py +0 -113
- package/src/gepa/index.ts +0 -287
- package/src/gepa/optimized/capture-prompt.txt +0 -65
package/dist/wiki.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki.js","sourceRoot":"","sources":["../src/wiki.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-para",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "PARA Knowledge Base Extension for pi — persistent, LLM-curated personal wiki",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -146,6 +146,7 @@
|
|
|
146
146
|
"scripts": {
|
|
147
147
|
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
148
148
|
"build": "tsc -p tsconfig.json && node scripts/build-assets.mjs",
|
|
149
|
+
"prepack": "npm run build",
|
|
149
150
|
"check": "tsc --noEmit",
|
|
150
151
|
"test": "vitest --run",
|
|
151
152
|
"test:coverage": "vitest --run --coverage",
|
package/scripts/build-assets.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/* v8 ignore start */
|
|
3
3
|
// Cross-platform post-tsc asset copy (replaces POSIX mkdir -p/cp in npm build).
|
|
4
|
-
import { cp, mkdir
|
|
4
|
+
import { cp, mkdir } from "node:fs/promises";
|
|
5
5
|
import { existsSync } from "node:fs";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import { join, resolve, dirname } from "node:path";
|
|
@@ -15,15 +15,3 @@ await mkdir(webuiDestDir, { recursive: true });
|
|
|
15
15
|
if (existsSync(webuiSrc)) {
|
|
16
16
|
await cp(webuiSrc, join(webuiDestDir, "index.html"));
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
// 2. GEPA optimized prompt text files (optional)
|
|
20
|
-
const gepaSrcDir = join(root, "src", "gepa", "optimized");
|
|
21
|
-
const gepaDestDir = join(root, "dist", "gepa", "optimized");
|
|
22
|
-
await mkdir(gepaDestDir, { recursive: true });
|
|
23
|
-
if (existsSync(gepaSrcDir)) {
|
|
24
|
-
for (const entry of await readdir(gepaSrcDir)) {
|
|
25
|
-
if (entry.endsWith(".txt")) {
|
|
26
|
-
await cp(join(gepaSrcDir, entry), join(gepaDestDir, entry));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -10,7 +10,7 @@ Read and follow the instructions in `SETUP.md` at the root of the pi-para packag
|
|
|
10
10
|
The setup file is at: `{{skill_dir}}/../../SETUP.md`
|
|
11
11
|
|
|
12
12
|
Steps:
|
|
13
|
-
1. `pi install
|
|
13
|
+
1. `pi install npm:pi-para` (extension)
|
|
14
14
|
2. `npm install -g @picassio/qmd` (search engine)
|
|
15
15
|
3. Configure `~/.config/qmd/index.yml` (providers)
|
|
16
16
|
4. Set `daemonModel` in `~/.pi/wiki/config.json` (daemon LLM)
|
package/src/cli.ts
CHANGED
|
@@ -413,75 +413,6 @@ async function main() {
|
|
|
413
413
|
break;
|
|
414
414
|
}
|
|
415
415
|
|
|
416
|
-
case "gepa": {
|
|
417
|
-
const sub = args[1];
|
|
418
|
-
const { runGEPA, listOptimized, compareTarget, extractTargets } = await import("./gepa/index.js");
|
|
419
|
-
switch (sub) {
|
|
420
|
-
case "optimize": {
|
|
421
|
-
const g = (flag: string) => { const i = args.indexOf(flag); return i >= 0 ? args[i + 1] : undefined; };
|
|
422
|
-
try {
|
|
423
|
-
await runGEPA({
|
|
424
|
-
target: g("--target"),
|
|
425
|
-
studentModel: g("--student-model") ?? g("--model"),
|
|
426
|
-
teacherModel: g("--teacher-model") ?? g("--reflection-model"),
|
|
427
|
-
judgeModel: g("--judge-model"),
|
|
428
|
-
auto: (g("--auto") ?? undefined) as "light" | "medium" | "heavy" | undefined,
|
|
429
|
-
maxMetricCalls: g("--max-metric-calls") ? parseInt(g("--max-metric-calls")!) : undefined,
|
|
430
|
-
threads: g("--threads") ? parseInt(g("--threads")!) : undefined,
|
|
431
|
-
seed: g("--seed") ? parseInt(g("--seed")!) : undefined,
|
|
432
|
-
});
|
|
433
|
-
} catch (err) {
|
|
434
|
-
console.error(`[gepa] Error: ${err instanceof Error ? err.message : err}`);
|
|
435
|
-
process.exit(1);
|
|
436
|
-
}
|
|
437
|
-
break;
|
|
438
|
-
}
|
|
439
|
-
case "list": {
|
|
440
|
-
const items = listOptimized();
|
|
441
|
-
if (items.length === 0) { console.log("No optimized prompts. Run 'gepa optimize' first."); }
|
|
442
|
-
else { for (const i of items) console.log(` ${i.name}: score=${i.score.toFixed(3)} model=${i.model}`); }
|
|
443
|
-
break;
|
|
444
|
-
}
|
|
445
|
-
case "targets": {
|
|
446
|
-
for (const t of extractTargets()) console.log(` ${t.name} (${t.type}): ${t.content.length} chars`);
|
|
447
|
-
break;
|
|
448
|
-
}
|
|
449
|
-
case "compare": {
|
|
450
|
-
const name = args[args.indexOf("--target") + 1];
|
|
451
|
-
if (!name) { console.error("Usage: gepa compare --target <name>"); process.exit(1); }
|
|
452
|
-
const d = compareTarget(name);
|
|
453
|
-
if (!d) console.log(`No optimized version for '${name}'.`);
|
|
454
|
-
else { console.log("=== ORIGINAL ===\n" + d.original.slice(0, 500)); console.log("\n=== OPTIMIZED ===\n" + d.optimized.slice(0, 500)); }
|
|
455
|
-
break;
|
|
456
|
-
}
|
|
457
|
-
default:
|
|
458
|
-
console.log(`pi-para gepa — GEPA prompt optimizer (DSPy GEPA via uv)
|
|
459
|
-
|
|
460
|
-
Subcommands:
|
|
461
|
-
optimize Run DSPy GEPA optimization
|
|
462
|
-
list Show optimized prompts and scores
|
|
463
|
-
targets List all 22 optimization targets
|
|
464
|
-
compare Compare original vs optimized for a target
|
|
465
|
-
|
|
466
|
-
Options (optimize):
|
|
467
|
-
--target <name> Optimize only this target
|
|
468
|
-
--student-model <spec> Student LM — runs proxy (default: anthropic/claude-sonnet-4-20250514)
|
|
469
|
-
--teacher-model <spec> Teacher/reflection LM — proposes mutations (default: anthropic/claude-opus-4-6)
|
|
470
|
-
--judge-model <spec> Judge LM — scores output (default: same as student)
|
|
471
|
-
--model <spec> Shorthand for --student-model
|
|
472
|
-
--reflection-model <spec> Shorthand for --teacher-model
|
|
473
|
-
--auto light|medium|heavy Budget preset (default: light)
|
|
474
|
-
--max-metric-calls <N> Override auto with explicit budget
|
|
475
|
-
--threads <N> Parallel eval threads (default: 2)
|
|
476
|
-
--seed <N> Random seed (default: 42)
|
|
477
|
-
|
|
478
|
-
Config (persistent defaults in ~/.pi/wiki/config.json):
|
|
479
|
-
gepa.studentModel gepa.teacherModel gepa.judgeModel
|
|
480
|
-
gepa.auto gepa.threads gepa.seed
|
|
481
|
-
gepa.useOptimized (toggle optimized prompts at runtime)`);
|
|
482
|
-
}
|
|
483
|
-
break;
|
|
484
|
-
}
|
|
485
416
|
|
|
486
417
|
default:
|
|
487
418
|
console.log(`pi-para — PARA wiki extension CLI
|
|
@@ -498,7 +429,6 @@ Primary commands:
|
|
|
498
429
|
providers List credential refs and local secrets
|
|
499
430
|
providers set-secret <name> <value>
|
|
500
431
|
providers remove-secret <name>
|
|
501
|
-
gepa <subcommand> GEPA prompt optimizer (optimize, list, targets, compare)
|
|
502
432
|
|
|
503
433
|
Legacy compatibility commands:
|
|
504
434
|
start Deprecated daemon foreground mode
|
package/src/config.ts
CHANGED
|
@@ -58,15 +58,6 @@ export interface ParaUserConfig {
|
|
|
58
58
|
port: number;
|
|
59
59
|
launch: "manual" | "disabled";
|
|
60
60
|
};
|
|
61
|
-
gepa: {
|
|
62
|
-
useOptimized: boolean;
|
|
63
|
-
studentModel: string;
|
|
64
|
-
teacherModel: string;
|
|
65
|
-
judgeModel: string;
|
|
66
|
-
auto: "light" | "medium" | "heavy";
|
|
67
|
-
threads: number;
|
|
68
|
-
seed: number;
|
|
69
|
-
};
|
|
70
61
|
}
|
|
71
62
|
|
|
72
63
|
export interface LegacyParaRuntimeConfig {
|
|
@@ -81,7 +72,6 @@ export interface LegacyParaRuntimeConfig {
|
|
|
81
72
|
searchGraphBoost: boolean;
|
|
82
73
|
daemonModel: string | null;
|
|
83
74
|
webWiki: { enabled: boolean; host: string; port: number };
|
|
84
|
-
gepa: ParaUserConfig["gepa"];
|
|
85
75
|
}
|
|
86
76
|
|
|
87
77
|
export interface LoadedParaConfig {
|
|
@@ -137,15 +127,6 @@ export function getDefaultUserConfig(homeDir?: string): ParaUserConfig {
|
|
|
137
127
|
port: 10973,
|
|
138
128
|
launch: "manual",
|
|
139
129
|
},
|
|
140
|
-
gepa: {
|
|
141
|
-
useOptimized: false,
|
|
142
|
-
studentModel: "anthropic/claude-sonnet-4-20250514",
|
|
143
|
-
teacherModel: "anthropic/claude-opus-4-6",
|
|
144
|
-
judgeModel: "anthropic/claude-sonnet-4-20250514",
|
|
145
|
-
auto: "light",
|
|
146
|
-
threads: 2,
|
|
147
|
-
seed: 42,
|
|
148
|
-
},
|
|
149
130
|
};
|
|
150
131
|
}
|
|
151
132
|
|
|
@@ -215,7 +196,6 @@ export function normalizeConfig(input: Partial<ParaUserConfig>, homeDir?: string
|
|
|
215
196
|
qmd: { ...defaults.qmd, ...input.qmd },
|
|
216
197
|
lint: { ...defaults.lint, ...input.lint },
|
|
217
198
|
webWiki: { ...defaults.webWiki, ...input.webWiki },
|
|
218
|
-
gepa: { ...defaults.gepa, ...input.gepa },
|
|
219
199
|
};
|
|
220
200
|
}
|
|
221
201
|
|
|
@@ -295,10 +275,6 @@ export function migrateLegacyConfig(
|
|
|
295
275
|
config.webWiki.port = numberOr(legacy.webWiki.port, defaults.webWiki.port);
|
|
296
276
|
}
|
|
297
277
|
|
|
298
|
-
if (isRecord(legacy.gepa)) {
|
|
299
|
-
config.gepa = { ...config.gepa, ...legacy.gepa } as ParaUserConfig["gepa"];
|
|
300
|
-
}
|
|
301
|
-
|
|
302
278
|
return config;
|
|
303
279
|
}
|
|
304
280
|
|
|
@@ -321,7 +297,6 @@ export function toLegacyRuntimeConfig(config: ParaUserConfig): LegacyParaRuntime
|
|
|
321
297
|
host: config.webWiki.host,
|
|
322
298
|
port: config.webWiki.port,
|
|
323
299
|
},
|
|
324
|
-
gepa: config.gepa,
|
|
325
300
|
};
|
|
326
301
|
}
|
|
327
302
|
|
package/src/index.ts
CHANGED
|
@@ -65,26 +65,6 @@ interface ParaConfig {
|
|
|
65
65
|
host: string;
|
|
66
66
|
port: number;
|
|
67
67
|
};
|
|
68
|
-
/** GEPA prompt optimizer settings */
|
|
69
|
-
gepa: {
|
|
70
|
-
/** When true, load optimized prompts from ~/.pi/wiki/gepa/optimized/ at runtime. */
|
|
71
|
-
useOptimized: boolean;
|
|
72
|
-
/** Student model — runs the proxy (generates wiki output). Fast + cheap.
|
|
73
|
-
* Default: anthropic/claude-sonnet-4-20250514 */
|
|
74
|
-
studentModel: string | null;
|
|
75
|
-
/** Teacher/reflection model — proposes instruction mutations. Smart + creative.
|
|
76
|
-
* Default: anthropic/claude-opus-4-6 */
|
|
77
|
-
teacherModel: string | null;
|
|
78
|
-
/** Judge model — scores candidate outputs (LLM-as-judge). Fast + cheap.
|
|
79
|
-
* Default: same as studentModel */
|
|
80
|
-
judgeModel: string | null;
|
|
81
|
-
/** Budget preset: light (~460 calls), medium (~1500), heavy (~5000) */
|
|
82
|
-
auto: "light" | "medium" | "heavy";
|
|
83
|
-
/** Parallel eval threads */
|
|
84
|
-
threads: number;
|
|
85
|
-
/** Random seed for reproducibility */
|
|
86
|
-
seed: number;
|
|
87
|
-
};
|
|
88
68
|
}
|
|
89
69
|
|
|
90
70
|
function getDefaultConfig(): ParaConfig {
|
|
@@ -104,15 +84,6 @@ function getDefaultConfig(): ParaConfig {
|
|
|
104
84
|
host: "0.0.0.0",
|
|
105
85
|
port: 10973,
|
|
106
86
|
},
|
|
107
|
-
gepa: {
|
|
108
|
-
useOptimized: true,
|
|
109
|
-
studentModel: null,
|
|
110
|
-
teacherModel: null,
|
|
111
|
-
judgeModel: null,
|
|
112
|
-
auto: "light",
|
|
113
|
-
threads: 2,
|
|
114
|
-
seed: 42,
|
|
115
|
-
},
|
|
116
87
|
};
|
|
117
88
|
}
|
|
118
89
|
|
|
@@ -127,15 +98,7 @@ async function loadConfig(): Promise<LoadedRuntimeConfig> {
|
|
|
127
98
|
const loaded = await loadParaConfig({ migrate: true });
|
|
128
99
|
const runtime = toLegacyRuntimeConfig(loaded.config);
|
|
129
100
|
return {
|
|
130
|
-
runtime
|
|
131
|
-
...runtime,
|
|
132
|
-
gepa: {
|
|
133
|
-
...runtime.gepa,
|
|
134
|
-
studentModel: runtime.gepa.studentModel ?? null,
|
|
135
|
-
teacherModel: runtime.gepa.teacherModel ?? null,
|
|
136
|
-
judgeModel: runtime.gepa.judgeModel ?? null,
|
|
137
|
-
},
|
|
138
|
-
},
|
|
101
|
+
runtime,
|
|
139
102
|
userConfig: loaded.config,
|
|
140
103
|
secretsPath: loaded.paths.secretsPath,
|
|
141
104
|
};
|
package/src/templates/prompts.ts
CHANGED
|
@@ -1,63 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LLM prompt templates for ingest, query, lint, capture, and summarize operations.
|
|
3
|
-
*
|
|
4
|
-
* Use getPrompt(name) to load the GEPA-optimized version (if deployed) or the original.
|
|
5
3
|
*/
|
|
6
4
|
|
|
7
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
8
|
-
import { join, dirname } from "node:path";
|
|
9
|
-
import { homedir } from "node:os";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Load a prompt by name — returns the GEPA-optimized version if
|
|
13
|
-
* config.gepa.useOptimized is true, otherwise returns the original.
|
|
14
|
-
*
|
|
15
|
-
* Resolution order:
|
|
16
|
-
* 1. User-generated optimized prompt at ~/.pi/wiki/gepa/optimized/{name}.txt
|
|
17
|
-
* 2. Bundled optimized prompt shipped with the package (src/gepa/optimized/{name}.txt)
|
|
18
|
-
* 3. Original constant from this file
|
|
19
|
-
*/
|
|
20
|
-
export function getPrompt(name: string): string {
|
|
21
|
-
const original = _originals()[name];
|
|
22
|
-
if (!original) return "";
|
|
23
|
-
try {
|
|
24
|
-
const cfgPath = join(homedir(), ".pi", "wiki", "config.json");
|
|
25
|
-
if (!existsSync(cfgPath)) return original;
|
|
26
|
-
const cfg = JSON.parse(readFileSync(cfgPath, "utf-8"));
|
|
27
|
-
if (!cfg.gepa?.useOptimized) return original;
|
|
28
|
-
|
|
29
|
-
// 1. Check user-generated optimized prompt
|
|
30
|
-
const userPath = join(homedir(), ".pi", "wiki", "gepa", "optimized", `${name}.txt`);
|
|
31
|
-
if (existsSync(userPath)) {
|
|
32
|
-
const content = readFileSync(userPath, "utf-8").trim();
|
|
33
|
-
if (content.length > 50) return content;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// 2. Check bundled optimized prompt (shipped with package)
|
|
37
|
-
const bundledPath = join(dirname(new URL(import.meta.url).pathname), "..", "gepa", "optimized", `${name}.txt`);
|
|
38
|
-
if (existsSync(bundledPath)) {
|
|
39
|
-
const content = readFileSync(bundledPath, "utf-8").trim();
|
|
40
|
-
if (content.length > 50) return content;
|
|
41
|
-
}
|
|
42
|
-
} catch { /* fall through to original */ }
|
|
43
|
-
return original;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function _originals(): Record<string, string> {
|
|
47
|
-
return {
|
|
48
|
-
"wiki-system-prompt": WIKI_SYSTEM_PROMPT,
|
|
49
|
-
"ingest-prompt": INGEST_PROMPT,
|
|
50
|
-
"query-prompt": QUERY_PROMPT,
|
|
51
|
-
"capture-system-prompt": CAPTURE_SYSTEM_PROMPT,
|
|
52
|
-
"capture-prompt": CAPTURE_PROMPT,
|
|
53
|
-
"explicit-capture-prompt": EXPLICIT_CAPTURE_PROMPT,
|
|
54
|
-
"summarize-system-prompt": SUMMARIZE_SYSTEM_PROMPT,
|
|
55
|
-
"iterative-update-prompt": ITERATIVE_UPDATE_PROMPT,
|
|
56
|
-
"overview-prompt": OVERVIEW_PROMPT,
|
|
57
|
-
"lint-prompt": LINT_PROMPT,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
5
|
// -- Wiki System Prompt (standalone agent) ------------------------------------
|
|
62
6
|
|
|
63
7
|
/**
|
package/scripts/gepa/dataset.py
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
"""Build trainset/valset from real wiki pages.
|
|
2
|
-
|
|
3
|
-
Each example pairs a synthetic task context (derived from the page topic)
|
|
4
|
-
with the actual page body as expected output. The proxy module runs the
|
|
5
|
-
instruction on the task context; the metric scores how well the output
|
|
6
|
-
matches the gold page.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from __future__ import annotations
|
|
10
|
-
|
|
11
|
-
import random
|
|
12
|
-
from typing import Any
|
|
13
|
-
|
|
14
|
-
import dspy
|
|
15
|
-
|
|
16
|
-
from wiki_reader import WikiPage, load_all_pages, get_wiki_stats
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# -- Task context generators --------------------------------------------------
|
|
20
|
-
|
|
21
|
-
def _capture_context(page: WikiPage) -> str:
|
|
22
|
-
"""Generate a synthetic capture-style task context from a wiki page."""
|
|
23
|
-
scope_str = ", ".join(page.scope) if page.scope else "unknown"
|
|
24
|
-
tags_str = ", ".join(page.tags[:5]) if page.tags else ""
|
|
25
|
-
# Simulate what a session about this topic would look like
|
|
26
|
-
return (
|
|
27
|
-
f"A coding session about '{page.title}' in the {scope_str} project. "
|
|
28
|
-
f"Topics covered: {tags_str}. "
|
|
29
|
-
f"Extract and organize the key knowledge from this session into a wiki page."
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def _ingest_context(page: WikiPage) -> str:
|
|
34
|
-
"""Generate a synthetic ingest-style task context."""
|
|
35
|
-
return (
|
|
36
|
-
f"Ingest the following source material about '{page.title}' "
|
|
37
|
-
f"into the PARA wiki. Organize into a structured page with "
|
|
38
|
-
f"proper frontmatter, sections, and cross-references."
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def _query_context(page: WikiPage) -> str:
|
|
43
|
-
"""Generate a synthetic query-style task context."""
|
|
44
|
-
return (
|
|
45
|
-
f"The user asked about '{page.title}'. "
|
|
46
|
-
f"Search results returned pages related to: {', '.join(page.scope)}. "
|
|
47
|
-
f"Synthesize a helpful answer citing specific wiki pages."
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def _maintenance_context(page: WikiPage) -> str:
|
|
52
|
-
"""Generate a synthetic maintenance-style task context."""
|
|
53
|
-
link_count = len(page.links)
|
|
54
|
-
return (
|
|
55
|
-
f"Review the wiki page '{page.title}' ({page.category}/{page.slug}). "
|
|
56
|
-
f"It has {link_count} outgoing links, scope [{', '.join(page.scope)}], "
|
|
57
|
-
f"tags [{', '.join(page.tags[:5])}]. "
|
|
58
|
-
f"Check for correct categorization, missing links, and content quality."
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def _tool_context(page: WikiPage) -> str:
|
|
63
|
-
"""Generate a task context for tool instruction optimization."""
|
|
64
|
-
return (
|
|
65
|
-
f"A user wants to work with the wiki page '{page.title}' "
|
|
66
|
-
f"in category '{page.category}', scope [{', '.join(page.scope)}]. "
|
|
67
|
-
f"Guide them on how to use wiki tools effectively."
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def _skill_context(page: WikiPage) -> str:
|
|
72
|
-
"""Generate a task context for skill optimization."""
|
|
73
|
-
return (
|
|
74
|
-
f"Working on a task related to '{page.title}' in the {', '.join(page.scope)} project. "
|
|
75
|
-
f"Apply the PARA knowledge management methodology to this work."
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
# Target type → context generator
|
|
80
|
-
CONTEXT_GENERATORS = {
|
|
81
|
-
"capture": _capture_context,
|
|
82
|
-
"ingest": _ingest_context,
|
|
83
|
-
"query": _query_context,
|
|
84
|
-
"maintenance": _maintenance_context,
|
|
85
|
-
"tool": _tool_context,
|
|
86
|
-
"skill": _skill_context,
|
|
87
|
-
"system": _capture_context, # system prompts use capture-style context
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
# -- Dataset builder -----------------------------------------------------------
|
|
92
|
-
|
|
93
|
-
def build_dataset(
|
|
94
|
-
wiki_dir: str,
|
|
95
|
-
target_type: str = "capture",
|
|
96
|
-
max_examples: int = 50,
|
|
97
|
-
val_ratio: float = 0.4,
|
|
98
|
-
seed: int = 42,
|
|
99
|
-
) -> tuple[list[dspy.Example], list[dspy.Example]]:
|
|
100
|
-
"""Build train/val datasets from real wiki pages.
|
|
101
|
-
|
|
102
|
-
Args:
|
|
103
|
-
wiki_dir: Path to wiki directory (e.g. ~/.pi/wiki)
|
|
104
|
-
target_type: Type of target being optimized (capture, ingest, query, etc.)
|
|
105
|
-
max_examples: Maximum total examples
|
|
106
|
-
val_ratio: Fraction of examples for validation
|
|
107
|
-
seed: Random seed for reproducible splits
|
|
108
|
-
|
|
109
|
-
Returns:
|
|
110
|
-
(trainset, valset) — lists of dspy.Example
|
|
111
|
-
"""
|
|
112
|
-
pages = load_all_pages(wiki_dir)
|
|
113
|
-
|
|
114
|
-
if not pages:
|
|
115
|
-
raise ValueError(f"No wiki pages found in {wiki_dir}")
|
|
116
|
-
|
|
117
|
-
# Filter to pages with substantial content (at least 200 chars body)
|
|
118
|
-
good_pages = [p for p in pages if len(p.body) >= 200]
|
|
119
|
-
|
|
120
|
-
if len(good_pages) < 4:
|
|
121
|
-
raise ValueError(f"Need at least 4 pages with content, found {len(good_pages)}")
|
|
122
|
-
|
|
123
|
-
# Shuffle deterministically
|
|
124
|
-
rng = random.Random(seed)
|
|
125
|
-
rng.shuffle(good_pages)
|
|
126
|
-
|
|
127
|
-
# Limit to max_examples
|
|
128
|
-
good_pages = good_pages[:max_examples]
|
|
129
|
-
|
|
130
|
-
# Get context generator for this target type
|
|
131
|
-
gen_context = CONTEXT_GENERATORS.get(target_type, _capture_context)
|
|
132
|
-
|
|
133
|
-
# Build examples
|
|
134
|
-
examples = []
|
|
135
|
-
for page in good_pages:
|
|
136
|
-
task_context = gen_context(page)
|
|
137
|
-
|
|
138
|
-
# Gold output: the actual page body (truncated to keep examples manageable)
|
|
139
|
-
expected_output = page.body[:3000] if len(page.body) > 3000 else page.body
|
|
140
|
-
|
|
141
|
-
example = dspy.Example(
|
|
142
|
-
task_context=task_context,
|
|
143
|
-
expected_output=expected_output,
|
|
144
|
-
# Metadata for the metric
|
|
145
|
-
expected_category=page.category,
|
|
146
|
-
expected_scope=",".join(page.scope),
|
|
147
|
-
expected_slug=page.slug,
|
|
148
|
-
expected_title=page.title,
|
|
149
|
-
page_link_count=str(len(page.links)),
|
|
150
|
-
).with_inputs("task_context")
|
|
151
|
-
|
|
152
|
-
examples.append(example)
|
|
153
|
-
|
|
154
|
-
# Split into train/val
|
|
155
|
-
split_idx = max(1, int(len(examples) * (1 - val_ratio)))
|
|
156
|
-
trainset = examples[:split_idx]
|
|
157
|
-
valset = examples[split_idx:]
|
|
158
|
-
|
|
159
|
-
# Ensure minimum sizes
|
|
160
|
-
if len(trainset) < 2:
|
|
161
|
-
trainset = examples[:max(2, len(examples) // 2)]
|
|
162
|
-
valset = examples[len(trainset):]
|
|
163
|
-
if len(valset) < 2:
|
|
164
|
-
valset = trainset[-2:] # share a few from train if needed
|
|
165
|
-
|
|
166
|
-
return trainset, valset
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
def get_wiki_context(wiki_dir: str) -> str:
|
|
170
|
-
"""Build a wiki context string for the metric/evaluator."""
|
|
171
|
-
stats = get_wiki_stats(wiki_dir)
|
|
172
|
-
pages = load_all_pages(wiki_dir)
|
|
173
|
-
|
|
174
|
-
# Build a brief summary of existing pages for context
|
|
175
|
-
page_summaries = []
|
|
176
|
-
for p in pages[:30]: # Top 30 pages
|
|
177
|
-
first_line = ""
|
|
178
|
-
for line in p.body.split("\n"):
|
|
179
|
-
line = line.strip()
|
|
180
|
-
if line and not line.startswith("#"):
|
|
181
|
-
first_line = line[:100]
|
|
182
|
-
break
|
|
183
|
-
page_summaries.append(f" - [[{p.slug}]] ({p.category}): {p.title}")
|
|
184
|
-
|
|
185
|
-
context = f"""Wiki has {stats['total_pages']} pages across categories: {stats['categories']}.
|
|
186
|
-
Scopes: {', '.join(stats['unique_scopes'][:10])}.
|
|
187
|
-
Avg links/page: {stats['avg_links_per_page']}.
|
|
188
|
-
|
|
189
|
-
Existing pages:
|
|
190
|
-
{chr(10).join(page_summaries)}"""
|
|
191
|
-
|
|
192
|
-
return context
|