jfl 0.9.5 → 0.9.7

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.
Files changed (211) hide show
  1. package/dist/commands/agents.js +1 -1
  2. package/dist/commands/agents.js.map +1 -1
  3. package/dist/commands/context-hub.d.ts.map +1 -1
  4. package/dist/commands/context-hub.js +77 -18
  5. package/dist/commands/context-hub.js.map +1 -1
  6. package/dist/commands/deploy.js +1 -1
  7. package/dist/commands/deploy.js.map +1 -1
  8. package/dist/commands/feedback.js +1 -1
  9. package/dist/commands/feedback.js.map +1 -1
  10. package/dist/commands/hud.js +1 -1
  11. package/dist/commands/hud.js.map +1 -1
  12. package/dist/commands/init-from-service.js +1 -1
  13. package/dist/commands/init-from-service.js.map +1 -1
  14. package/dist/commands/init.js +1 -1
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/login.d.ts +2 -13
  17. package/dist/commands/login.d.ts.map +1 -1
  18. package/dist/commands/login.js +6 -44
  19. package/dist/commands/login.js.map +1 -1
  20. package/dist/commands/organize.d.ts +16 -0
  21. package/dist/commands/organize.d.ts.map +1 -0
  22. package/dist/commands/organize.js +334 -0
  23. package/dist/commands/organize.js.map +1 -0
  24. package/dist/commands/peter.d.ts.map +1 -1
  25. package/dist/commands/peter.js +273 -0
  26. package/dist/commands/peter.js.map +1 -1
  27. package/dist/commands/pi.d.ts.map +1 -1
  28. package/dist/commands/pi.js +8 -2
  29. package/dist/commands/pi.js.map +1 -1
  30. package/dist/commands/repair.js +1 -1
  31. package/dist/commands/repair.js.map +1 -1
  32. package/dist/commands/setup.d.ts.map +1 -1
  33. package/dist/commands/setup.js +113 -45
  34. package/dist/commands/setup.js.map +1 -1
  35. package/dist/commands/status.d.ts.map +1 -1
  36. package/dist/commands/status.js +4 -4
  37. package/dist/commands/status.js.map +1 -1
  38. package/dist/index.d.ts +0 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +60 -19
  41. package/dist/index.js.map +1 -1
  42. package/dist/lib/agent-config.d.ts.map +1 -1
  43. package/dist/lib/agent-config.js +24 -2
  44. package/dist/lib/agent-config.js.map +1 -1
  45. package/dist/lib/agent-session.d.ts.map +1 -1
  46. package/dist/lib/agent-session.js +3 -1
  47. package/dist/lib/agent-session.js.map +1 -1
  48. package/dist/lib/eval-snapshot.js +1 -1
  49. package/dist/lib/eval-snapshot.js.map +1 -1
  50. package/dist/lib/hub-health.d.ts.map +1 -1
  51. package/dist/lib/hub-health.js +14 -2
  52. package/dist/lib/hub-health.js.map +1 -1
  53. package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -1
  54. package/dist/lib/resource-optimizer-middleware.js +8 -2
  55. package/dist/lib/resource-optimizer-middleware.js.map +1 -1
  56. package/dist/lib/telemetry.d.ts.map +1 -1
  57. package/dist/lib/telemetry.js +13 -12
  58. package/dist/lib/telemetry.js.map +1 -1
  59. package/dist/utils/auth-status.d.ts +21 -0
  60. package/dist/utils/auth-status.d.ts.map +1 -0
  61. package/dist/utils/auth-status.js +53 -0
  62. package/dist/utils/auth-status.js.map +1 -0
  63. package/package.json +3 -2
  64. package/packages/pi/dist/agent-grid.d.ts +24 -0
  65. package/packages/pi/dist/agent-grid.d.ts.map +1 -0
  66. package/packages/pi/dist/agent-grid.js +162 -0
  67. package/packages/pi/dist/agent-grid.js.map +1 -0
  68. package/packages/pi/dist/agent-names.d.ts +43 -0
  69. package/packages/pi/dist/agent-names.d.ts.map +1 -0
  70. package/packages/pi/dist/agent-names.js +156 -0
  71. package/packages/pi/dist/agent-names.js.map +1 -0
  72. package/packages/pi/dist/autoresearch.d.ts +15 -0
  73. package/packages/pi/dist/autoresearch.d.ts.map +1 -0
  74. package/packages/pi/dist/autoresearch.js +372 -0
  75. package/packages/pi/dist/autoresearch.js.map +1 -0
  76. package/packages/pi/dist/bookmarks.d.ts +15 -0
  77. package/packages/pi/dist/bookmarks.d.ts.map +1 -0
  78. package/packages/pi/dist/bookmarks.js +77 -0
  79. package/packages/pi/dist/bookmarks.js.map +1 -0
  80. package/packages/pi/dist/context.d.ts +17 -0
  81. package/packages/pi/dist/context.d.ts.map +1 -0
  82. package/packages/pi/dist/context.js +152 -0
  83. package/packages/pi/dist/context.js.map +1 -0
  84. package/packages/pi/dist/crm-tool.d.ts +12 -0
  85. package/packages/pi/dist/crm-tool.d.ts.map +1 -0
  86. package/packages/pi/dist/crm-tool.js +58 -0
  87. package/packages/pi/dist/crm-tool.js.map +1 -0
  88. package/packages/pi/dist/eval-tool.d.ts +11 -0
  89. package/packages/pi/dist/eval-tool.d.ts.map +1 -0
  90. package/packages/pi/dist/eval-tool.js +188 -0
  91. package/packages/pi/dist/eval-tool.js.map +1 -0
  92. package/packages/pi/dist/eval.d.ts +12 -0
  93. package/packages/pi/dist/eval.d.ts.map +1 -0
  94. package/packages/pi/dist/eval.js +43 -0
  95. package/packages/pi/dist/eval.js.map +1 -0
  96. package/packages/pi/dist/footer.d.ts +20 -0
  97. package/packages/pi/dist/footer.d.ts.map +1 -0
  98. package/packages/pi/dist/footer.js +222 -0
  99. package/packages/pi/dist/footer.js.map +1 -0
  100. package/packages/pi/dist/header.d.ts +17 -0
  101. package/packages/pi/dist/header.d.ts.map +1 -0
  102. package/packages/pi/dist/header.js +156 -0
  103. package/packages/pi/dist/header.js.map +1 -0
  104. package/packages/pi/dist/hub-resolver.d.ts +11 -0
  105. package/packages/pi/dist/hub-resolver.d.ts.map +1 -0
  106. package/packages/pi/dist/hub-resolver.js +58 -0
  107. package/packages/pi/dist/hub-resolver.js.map +1 -0
  108. package/packages/pi/dist/hub-tools.d.ts +14 -0
  109. package/packages/pi/dist/hub-tools.d.ts.map +1 -0
  110. package/packages/pi/dist/hub-tools.js +266 -0
  111. package/packages/pi/dist/hub-tools.js.map +1 -0
  112. package/packages/pi/dist/hud-tool.d.ts +17 -0
  113. package/packages/pi/dist/hud-tool.d.ts.map +1 -0
  114. package/packages/pi/dist/hud-tool.js +297 -0
  115. package/packages/pi/dist/hud-tool.js.map +1 -0
  116. package/packages/pi/dist/index.d.ts +12 -0
  117. package/packages/pi/dist/index.d.ts.map +1 -0
  118. package/packages/pi/dist/index.js +436 -0
  119. package/packages/pi/dist/index.js.map +1 -0
  120. package/packages/pi/dist/jfl-resolve.d.ts +29 -0
  121. package/packages/pi/dist/jfl-resolve.d.ts.map +1 -0
  122. package/packages/pi/dist/jfl-resolve.js +89 -0
  123. package/packages/pi/dist/jfl-resolve.js.map +1 -0
  124. package/packages/pi/dist/journal.d.ts +23 -0
  125. package/packages/pi/dist/journal.d.ts.map +1 -0
  126. package/packages/pi/dist/journal.js +250 -0
  127. package/packages/pi/dist/journal.js.map +1 -0
  128. package/packages/pi/dist/map-bridge.d.ts +20 -0
  129. package/packages/pi/dist/map-bridge.d.ts.map +1 -0
  130. package/packages/pi/dist/map-bridge.js +181 -0
  131. package/packages/pi/dist/map-bridge.js.map +1 -0
  132. package/packages/pi/dist/memory-tool.d.ts +11 -0
  133. package/packages/pi/dist/memory-tool.d.ts.map +1 -0
  134. package/packages/pi/dist/memory-tool.js +148 -0
  135. package/packages/pi/dist/memory-tool.js.map +1 -0
  136. package/packages/pi/dist/notifications.d.ts +15 -0
  137. package/packages/pi/dist/notifications.d.ts.map +1 -0
  138. package/packages/pi/dist/notifications.js +65 -0
  139. package/packages/pi/dist/notifications.js.map +1 -0
  140. package/packages/pi/dist/onboarding-v1.d.ts +15 -0
  141. package/packages/pi/dist/onboarding-v1.d.ts.map +1 -0
  142. package/packages/pi/dist/onboarding-v1.js +417 -0
  143. package/packages/pi/dist/onboarding-v1.js.map +1 -0
  144. package/packages/pi/dist/onboarding-v2.d.ts +18 -0
  145. package/packages/pi/dist/onboarding-v2.d.ts.map +1 -0
  146. package/packages/pi/dist/onboarding-v2.js +402 -0
  147. package/packages/pi/dist/onboarding-v2.js.map +1 -0
  148. package/packages/pi/dist/onboarding-v3.d.ts +13 -0
  149. package/packages/pi/dist/onboarding-v3.d.ts.map +1 -0
  150. package/packages/pi/dist/onboarding-v3.js +581 -0
  151. package/packages/pi/dist/onboarding-v3.js.map +1 -0
  152. package/packages/pi/dist/peter-parker.d.ts +12 -0
  153. package/packages/pi/dist/peter-parker.d.ts.map +1 -0
  154. package/packages/pi/dist/peter-parker.js +162 -0
  155. package/packages/pi/dist/peter-parker.js.map +1 -0
  156. package/packages/pi/dist/pivot-tool.d.ts +11 -0
  157. package/packages/pi/dist/pivot-tool.d.ts.map +1 -0
  158. package/packages/pi/dist/pivot-tool.js +56 -0
  159. package/packages/pi/dist/pivot-tool.js.map +1 -0
  160. package/packages/pi/dist/policy-head-tool.d.ts +15 -0
  161. package/packages/pi/dist/policy-head-tool.d.ts.map +1 -0
  162. package/packages/pi/dist/policy-head-tool.js +220 -0
  163. package/packages/pi/dist/policy-head-tool.js.map +1 -0
  164. package/packages/pi/dist/portfolio-bridge.d.ts +12 -0
  165. package/packages/pi/dist/portfolio-bridge.d.ts.map +1 -0
  166. package/packages/pi/dist/portfolio-bridge.js +81 -0
  167. package/packages/pi/dist/portfolio-bridge.js.map +1 -0
  168. package/packages/pi/dist/service-skills.d.ts +15 -0
  169. package/packages/pi/dist/service-skills.d.ts.map +1 -0
  170. package/packages/pi/dist/service-skills.js +198 -0
  171. package/packages/pi/dist/service-skills.js.map +1 -0
  172. package/packages/pi/dist/session.d.ts +24 -0
  173. package/packages/pi/dist/session.d.ts.map +1 -0
  174. package/packages/pi/dist/session.js +394 -0
  175. package/packages/pi/dist/session.js.map +1 -0
  176. package/packages/pi/dist/shortcuts.d.ts +11 -0
  177. package/packages/pi/dist/shortcuts.d.ts.map +1 -0
  178. package/packages/pi/dist/shortcuts.js +231 -0
  179. package/packages/pi/dist/shortcuts.js.map +1 -0
  180. package/packages/pi/dist/startup-briefing.d.ts +13 -0
  181. package/packages/pi/dist/startup-briefing.d.ts.map +1 -0
  182. package/packages/pi/dist/startup-briefing.js +271 -0
  183. package/packages/pi/dist/startup-briefing.js.map +1 -0
  184. package/packages/pi/dist/stratus-bridge.d.ts +14 -0
  185. package/packages/pi/dist/stratus-bridge.d.ts.map +1 -0
  186. package/packages/pi/dist/stratus-bridge.js +104 -0
  187. package/packages/pi/dist/stratus-bridge.js.map +1 -0
  188. package/packages/pi/dist/subway-mesh.d.ts +88 -0
  189. package/packages/pi/dist/subway-mesh.d.ts.map +1 -0
  190. package/packages/pi/dist/subway-mesh.js +813 -0
  191. package/packages/pi/dist/subway-mesh.js.map +1 -0
  192. package/packages/pi/dist/synopsis-tool.d.ts +12 -0
  193. package/packages/pi/dist/synopsis-tool.d.ts.map +1 -0
  194. package/packages/pi/dist/synopsis-tool.js +84 -0
  195. package/packages/pi/dist/synopsis-tool.js.map +1 -0
  196. package/packages/pi/dist/tool-renderers.d.ts +55 -0
  197. package/packages/pi/dist/tool-renderers.d.ts.map +1 -0
  198. package/packages/pi/dist/tool-renderers.js +349 -0
  199. package/packages/pi/dist/tool-renderers.js.map +1 -0
  200. package/packages/pi/dist/training-buffer-tool.d.ts +16 -0
  201. package/packages/pi/dist/training-buffer-tool.d.ts.map +1 -0
  202. package/packages/pi/dist/training-buffer-tool.js +319 -0
  203. package/packages/pi/dist/training-buffer-tool.js.map +1 -0
  204. package/packages/pi/dist/types.d.ts +195 -0
  205. package/packages/pi/dist/types.d.ts.map +1 -0
  206. package/packages/pi/dist/types.js +11 -0
  207. package/packages/pi/dist/types.js.map +1 -0
  208. package/packages/pi/extensions/session.ts +115 -8
  209. package/packages/pi/extensions/training-buffer-tool.ts +15 -8
  210. package/packages/pi/extensions/types.ts +1 -0
  211. package/packages/pi/package.json +2 -3
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Agent Display Name Resolver
3
+ *
4
+ * Converts raw agent identifiers (file paths, kebab-case names, frontmatter names)
5
+ * into clean, human-readable display names for the TUI.
6
+ *
7
+ * @purpose Resolve ugly agent IDs to pretty display names across all TUI surfaces
8
+ */
9
+ import { existsSync, readFileSync, readdirSync } from "fs";
10
+ import { join } from "path";
11
+ const displayNameCache = new Map();
12
+ let projectRoot = "";
13
+ export function initAgentNames(root) {
14
+ projectRoot = root;
15
+ displayNameCache.clear();
16
+ scanAgentFiles(root);
17
+ }
18
+ function scanAgentFiles(root) {
19
+ const agentsDir = join(root, ".claude", "agents");
20
+ if (!existsSync(agentsDir))
21
+ return;
22
+ for (const file of readdirSync(agentsDir)) {
23
+ if (!file.endsWith(".md") || file.startsWith("_") || file === "README.md")
24
+ continue;
25
+ const filePath = join(agentsDir, file);
26
+ try {
27
+ const content = readFileSync(filePath, "utf-8");
28
+ const info = parseAgentFile(file, content);
29
+ if (info)
30
+ displayNameCache.set(info.id, info);
31
+ }
32
+ catch { }
33
+ }
34
+ }
35
+ function parseAgentFile(filename, content) {
36
+ const id = filename.replace(/\.md$/, "");
37
+ const frontmatter = parseFrontmatter(content);
38
+ const fmName = frontmatter.name ?? id;
39
+ const color = frontmatter.color;
40
+ const description = frontmatter.description;
41
+ const type = detectAgentType(id, frontmatter);
42
+ const serviceName = extractServiceName(id);
43
+ const displayName = frontmatter.label
44
+ ?? frontmatter.display_name
45
+ ?? buildDisplayName(id, type);
46
+ return { id, displayName, type, color, description, serviceName };
47
+ }
48
+ function parseFrontmatter(content) {
49
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
50
+ if (!match)
51
+ return {};
52
+ const result = {};
53
+ for (const line of match[1].split("\n")) {
54
+ const kv = line.match(/^(\w[\w_-]*)\s*:\s*(.+)/);
55
+ if (kv)
56
+ result[kv[1]] = kv[2].trim();
57
+ }
58
+ return result;
59
+ }
60
+ function detectAgentType(id, fm) {
61
+ if (fm.type === "peer-service" || id.startsWith("peer-service-") || id.startsWith("peer-"))
62
+ return "peer";
63
+ if (id.startsWith("service-") || fm.type === "service")
64
+ return "service";
65
+ const skillNames = ["web-architect", "content-creator", "brand-architect"];
66
+ if (skillNames.includes(id))
67
+ return "skill";
68
+ return "custom";
69
+ }
70
+ function extractServiceName(id) {
71
+ return id
72
+ .replace(/^service-/, "")
73
+ .replace(/^peer-service-/, "")
74
+ .replace(/^peer-/, "");
75
+ }
76
+ function buildDisplayName(id, type) {
77
+ const clean = extractServiceName(id);
78
+ const titled = kebabToTitle(clean);
79
+ if (type === "peer")
80
+ return titled;
81
+ return titled;
82
+ }
83
+ const ACRONYMS = new Set(["api", "ui", "cli", "db", "ml", "ai", "ci", "cd", "io", "id", "url", "uri", "sdk", "rl", "mcp", "gtm", "crm", "cms", "cdn", "dns", "tcp", "udp", "ssh", "tls", "ssl", "jwt", "aws", "gcp"]);
84
+ function kebabToTitle(str) {
85
+ return str
86
+ .split("-")
87
+ .map(word => ACRONYMS.has(word.toLowerCase()) ? word.toUpperCase() : word.charAt(0).toUpperCase() + word.slice(1))
88
+ .join(" ");
89
+ }
90
+ /**
91
+ * Resolve any raw agent identifier to a clean display name.
92
+ *
93
+ * Handles:
94
+ * .claude/agents/service-stratus-api.md → Stratus API
95
+ * service-stratus-api → Stratus API
96
+ * peer-service-context-hub → Context Hub
97
+ * stratus-api.md → Stratus API
98
+ * web-architect → Web Architect
99
+ */
100
+ export function resolveDisplayName(raw) {
101
+ const id = raw
102
+ .replace(/^@/, "")
103
+ .replace(/^\.?claude\/agents\//, "")
104
+ .replace(/\.md$/, "")
105
+ .replace(/^.*\//, "");
106
+ const cached = displayNameCache.get(id);
107
+ if (cached)
108
+ return cached.displayName;
109
+ const type = detectAgentType(id, {});
110
+ return buildDisplayName(id, type);
111
+ }
112
+ /**
113
+ * Resolve to full agent info (name, type, color, description).
114
+ */
115
+ export function resolveAgentInfo(raw) {
116
+ const id = raw
117
+ .replace(/^@/, "")
118
+ .replace(/^\.?claude\/agents\//, "")
119
+ .replace(/\.md$/, "")
120
+ .replace(/^.*\//, "");
121
+ const cached = displayNameCache.get(id);
122
+ if (cached)
123
+ return cached;
124
+ const type = detectAgentType(id, {});
125
+ return {
126
+ id,
127
+ displayName: buildDisplayName(id, type),
128
+ type,
129
+ serviceName: extractServiceName(id),
130
+ };
131
+ }
132
+ /**
133
+ * Get all known agents with display info.
134
+ */
135
+ export function listAgents() {
136
+ if (displayNameCache.size === 0 && projectRoot)
137
+ scanAgentFiles(projectRoot);
138
+ return Array.from(displayNameCache.values());
139
+ }
140
+ /**
141
+ * Format an agent name for TUI display with optional type badge.
142
+ */
143
+ export function formatAgentLabel(raw, opts) {
144
+ const info = resolveAgentInfo(raw);
145
+ if (!opts?.badge)
146
+ return info.displayName;
147
+ const badges = {
148
+ service: "svc",
149
+ peer: "peer",
150
+ skill: "skill",
151
+ custom: "",
152
+ };
153
+ const badge = badges[info.type];
154
+ return badge ? `${info.displayName} [${badge}]` : info.displayName;
155
+ }
156
+ //# sourceMappingURL=agent-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-names.js","sourceRoot":"","sources":["../extensions/agent-names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Autoresearch Extension
3
+ *
4
+ * Self-driving research loop as a Pi command. Runs N rounds of:
5
+ * branch → propose experiment → execute → eval → keep or revert
6
+ * Only the winning experiment gets a PR.
7
+ *
8
+ * Uses the policy head to rank proposals when available, falls back to
9
+ * heuristic dimension analysis when not.
10
+ *
11
+ * @purpose Pi command for autonomous experiment loop — /autoresearch
12
+ */
13
+ import type { PiContext, JflConfig } from "./types.js";
14
+ export declare function setupAutoresearch(ctx: PiContext, _config: JflConfig): Promise<void>;
15
+ //# sourceMappingURL=autoresearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoresearch.d.ts","sourceRoot":"","sources":["../extensions/autoresearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAkLtD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAyOzF"}
@@ -0,0 +1,372 @@
1
+ /**
2
+ * Autoresearch Extension
3
+ *
4
+ * Self-driving research loop as a Pi command. Runs N rounds of:
5
+ * branch → propose experiment → execute → eval → keep or revert
6
+ * Only the winning experiment gets a PR.
7
+ *
8
+ * Uses the policy head to rank proposals when available, falls back to
9
+ * heuristic dimension analysis when not.
10
+ *
11
+ * @purpose Pi command for autonomous experiment loop — /autoresearch
12
+ */
13
+ import { execSync, spawnSync } from "child_process";
14
+ import { existsSync, readFileSync, mkdirSync, appendFileSync } from "fs";
15
+ import { join } from "path";
16
+ import { jflImport } from "./jfl-resolve.js";
17
+ import { emitCustomEvent } from "./map-bridge.js";
18
+ let projectRoot = "";
19
+ function git(args) {
20
+ try {
21
+ const out = execSync(`git ${args.join(" ")}`, {
22
+ cwd: projectRoot,
23
+ encoding: "utf-8",
24
+ stdio: ["pipe", "pipe", "pipe"],
25
+ }).trim();
26
+ return { ok: true, output: out };
27
+ }
28
+ catch (err) {
29
+ return { ok: false, output: err.stderr?.trim() || err.message };
30
+ }
31
+ }
32
+ function gh(args) {
33
+ try {
34
+ const out = execSync(`gh ${args.join(" ")}`, {
35
+ cwd: projectRoot,
36
+ encoding: "utf-8",
37
+ stdio: ["pipe", "pipe", "pipe"],
38
+ }).trim();
39
+ return { ok: true, output: out };
40
+ }
41
+ catch (err) {
42
+ return { ok: false, output: err.stderr?.trim() || err.message };
43
+ }
44
+ }
45
+ async function getPolicyHead() {
46
+ try {
47
+ // @ts-ignore — resolved from jfl package at runtime
48
+ const { PolicyHeadInference } = await jflImport("policy-head");
49
+ return new PolicyHeadInference(projectRoot);
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ async function getTrainingBuffer() {
56
+ try {
57
+ // @ts-ignore — resolved from jfl package at runtime
58
+ const { TrainingBuffer } = await jflImport("training-buffer");
59
+ return new TrainingBuffer(projectRoot);
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ }
65
+ function readEvalHistory() {
66
+ const evalPath = join(projectRoot, ".jfl", "eval", "eval.jsonl");
67
+ if (!existsSync(evalPath))
68
+ return [];
69
+ const entries = [];
70
+ for (const line of readFileSync(evalPath, "utf-8").split("\n")) {
71
+ if (!line.trim())
72
+ continue;
73
+ try {
74
+ entries.push(JSON.parse(line));
75
+ }
76
+ catch { }
77
+ }
78
+ return entries;
79
+ }
80
+ function readJournalEntries() {
81
+ const journalDir = join(projectRoot, ".jfl", "journal");
82
+ if (!existsSync(journalDir))
83
+ return [];
84
+ const entries = [];
85
+ try {
86
+ const { readdirSync } = require("fs");
87
+ for (const f of readdirSync(journalDir)) {
88
+ if (!f.endsWith(".jsonl"))
89
+ continue;
90
+ for (const line of readFileSync(join(journalDir, f), "utf-8").split("\n")) {
91
+ if (!line.trim())
92
+ continue;
93
+ try {
94
+ entries.push(JSON.parse(line));
95
+ }
96
+ catch { }
97
+ }
98
+ }
99
+ }
100
+ catch { }
101
+ return entries.sort((a, b) => (a.ts || "").localeCompare(b.ts || ""));
102
+ }
103
+ function writeJournalEntry(entry) {
104
+ const journalDir = join(projectRoot, ".jfl", "journal");
105
+ mkdirSync(journalDir, { recursive: true });
106
+ const branch = git(["branch", "--show-current"]).output || "main";
107
+ const file = join(journalDir, `${branch}.jsonl`);
108
+ appendFileSync(file, JSON.stringify(entry) + "\n");
109
+ }
110
+ function buildFallbackProposal(evals) {
111
+ if (evals.length < 2)
112
+ return null;
113
+ const sorted = [...evals].sort((a, b) => b.ts.localeCompare(a.ts));
114
+ const latest = sorted[0];
115
+ const prev = sorted[1];
116
+ const metrics = latest.metrics || {};
117
+ const prevMetrics = prev.metrics || {};
118
+ let worstDim = "";
119
+ let worstDelta = 0;
120
+ for (const [key, val] of Object.entries(metrics)) {
121
+ if (typeof val !== "number")
122
+ continue;
123
+ const prevVal = prevMetrics[key] ?? val;
124
+ const delta = val - prevVal;
125
+ if (delta < worstDelta) {
126
+ worstDelta = delta;
127
+ worstDim = key;
128
+ }
129
+ }
130
+ if (worstDim) {
131
+ return {
132
+ task: `Improve ${worstDim} score (regressed by ${worstDelta.toFixed(4)})`,
133
+ predicted_delta: Math.abs(worstDelta),
134
+ reasoning: `Recovering ${worstDim} regression`,
135
+ risk: "May not fully recover",
136
+ };
137
+ }
138
+ let lowestDim = "";
139
+ let lowestScore = Infinity;
140
+ for (const [key, val] of Object.entries(metrics)) {
141
+ if (typeof val !== "number")
142
+ continue;
143
+ if (val < lowestScore) {
144
+ lowestScore = val;
145
+ lowestDim = key;
146
+ }
147
+ }
148
+ if (lowestDim) {
149
+ return {
150
+ task: `Improve ${lowestDim} score (currently ${lowestScore.toFixed(4)})`,
151
+ predicted_delta: Math.max(0.01, (1 - lowestScore) * 0.1),
152
+ reasoning: `${lowestDim} is weakest dimension`,
153
+ risk: "May trade off against others",
154
+ };
155
+ }
156
+ return null;
157
+ }
158
+ function runTests() {
159
+ const result = spawnSync("npx", ["jest", "--json", "--silent"], {
160
+ cwd: projectRoot,
161
+ encoding: "utf-8",
162
+ stdio: "pipe",
163
+ timeout: 120000,
164
+ });
165
+ try {
166
+ const json = JSON.parse(result.stdout || "{}");
167
+ const passing = json.numPassedTests || 0;
168
+ const total = json.numTotalTests || 1;
169
+ return { passing, total, score: total > 0 ? passing / total : 0 };
170
+ }
171
+ catch {
172
+ return { passing: 0, total: 1, score: 0 };
173
+ }
174
+ }
175
+ export async function setupAutoresearch(ctx, _config) {
176
+ projectRoot = ctx.session.projectRoot;
177
+ ctx.registerCommand({
178
+ name: "autoresearch",
179
+ description: "Run autonomous experiment loop — branch, change, eval, keep or revert. Usage: /autoresearch [rounds]",
180
+ async handler(args, ctx) {
181
+ const rounds = parseInt(args.trim() || "3", 10);
182
+ if (rounds < 1 || rounds > 20) {
183
+ ctx.ui.notify("Rounds must be between 1 and 20.", { level: "warn" });
184
+ return;
185
+ }
186
+ ctx.ui.notify(`Starting autoresearch: ${rounds} rounds`, { level: "info" });
187
+ const evals = readEvalHistory();
188
+ if (evals.length === 0) {
189
+ ctx.ui.notify("No eval history. Run an eval first to establish a baseline.", { level: "warn" });
190
+ return;
191
+ }
192
+ const baseBranch = git(["branch", "--show-current"]).output || "main";
193
+ const baselineScore = [...evals].sort((a, b) => b.ts.localeCompare(a.ts))[0]?.composite ?? 0;
194
+ const pastTitles = readJournalEntries()
195
+ .filter(e => e.type === "experiment")
196
+ .map(e => e.title);
197
+ const results = [];
198
+ let bestResult = null;
199
+ git(["stash", "--include-untracked"]);
200
+ for (let round = 1; round <= rounds; round++) {
201
+ ctx.ui.notify(`── Round ${round}/${rounds} ──`, { level: "info" });
202
+ let proposal = null;
203
+ const policyHead = await getPolicyHead();
204
+ if (policyHead?.isLoaded) {
205
+ const fallback = buildFallbackProposal(evals);
206
+ if (fallback)
207
+ proposal = fallback;
208
+ }
209
+ if (!proposal) {
210
+ proposal = buildFallbackProposal(evals);
211
+ }
212
+ if (!proposal) {
213
+ ctx.ui.notify(`Round ${round}: No target found, skipping`, { level: "info" });
214
+ continue;
215
+ }
216
+ if (pastTitles.some(t => t.includes(proposal.task.slice(0, 40)))) {
217
+ proposal.task = `[Retry] ${proposal.task}`;
218
+ }
219
+ const branchName = `pp/autoresearch-r${round}-${Date.now()}`;
220
+ git(["fetch", "origin", baseBranch]);
221
+ let checkout = git(["checkout", "-b", branchName, `origin/${baseBranch}`]);
222
+ if (!checkout.ok) {
223
+ checkout = git(["checkout", "-b", branchName, baseBranch]);
224
+ }
225
+ if (!checkout.ok) {
226
+ ctx.ui.notify(`Round ${round}: Failed to create branch`, { level: "warn" });
227
+ continue;
228
+ }
229
+ ctx.ui.notify(`Task: ${proposal.task}`, { level: "info" });
230
+ await emitCustomEvent(ctx, "autoresearch:round:start", {
231
+ round,
232
+ task: proposal.task,
233
+ predicted_delta: proposal.predicted_delta,
234
+ });
235
+ // The agent itself will make changes via the sendUserMessage approach
236
+ // For now, we run tests on whatever's been committed
237
+ const diffCheck = git(["diff", "--quiet", "HEAD"]);
238
+ const untrackedResult = spawnSync("git", ["ls-files", "--others", "--exclude-standard"], {
239
+ cwd: projectRoot, encoding: "utf-8", stdio: "pipe",
240
+ });
241
+ const hasChanges = !diffCheck.ok || (untrackedResult.stdout || "").trim().length > 0;
242
+ if (hasChanges) {
243
+ git(["add", "-A"]);
244
+ git(["commit", "-m", `autoresearch: round ${round} - ${proposal.task}`]);
245
+ }
246
+ const { passing, total, score } = runTests();
247
+ const delta = score - baselineScore;
248
+ const result = {
249
+ round,
250
+ task: proposal.task,
251
+ score,
252
+ delta,
253
+ testsPassing: passing,
254
+ testsTotal: total,
255
+ branch: branchName,
256
+ };
257
+ results.push(result);
258
+ if (!bestResult || result.score > bestResult.score) {
259
+ bestResult = result;
260
+ }
261
+ writeJournalEntry({
262
+ v: 1,
263
+ ts: new Date().toISOString(),
264
+ session: "autoresearch",
265
+ type: "experiment",
266
+ status: delta > 0 ? "complete" : "incomplete",
267
+ title: `Autoresearch R${round}: ${proposal.task.slice(0, 60)}`,
268
+ summary: `Score: ${score.toFixed(4)}, delta: ${delta > 0 ? "+" : ""}${delta.toFixed(4)}`,
269
+ agent_id: "pi-autoresearch",
270
+ });
271
+ const tb = await getTrainingBuffer();
272
+ if (tb) {
273
+ tb.append({
274
+ agent: "pi-autoresearch",
275
+ state: {
276
+ composite_score: baselineScore,
277
+ dimension_scores: {},
278
+ tests_passing: 0,
279
+ tests_total: 0,
280
+ trajectory_length: results.length,
281
+ recent_deltas: results.slice(-5).map(r => r.delta),
282
+ agent: "pi-autoresearch",
283
+ },
284
+ action: {
285
+ type: "experiment",
286
+ description: proposal.task,
287
+ files_affected: [],
288
+ scope: "medium",
289
+ branch: branchName,
290
+ },
291
+ reward: {
292
+ composite_delta: delta,
293
+ dimension_deltas: {},
294
+ tests_added: 0,
295
+ quality_score: score,
296
+ improved: delta > 0,
297
+ prediction_error: Math.abs(proposal.predicted_delta - delta),
298
+ },
299
+ metadata: {
300
+ branch: branchName,
301
+ autoresearch_round: round,
302
+ source: "autoresearch",
303
+ },
304
+ });
305
+ }
306
+ await emitCustomEvent(ctx, "autoresearch:round:end", {
307
+ round,
308
+ task: proposal.task,
309
+ score,
310
+ delta,
311
+ is_best: bestResult?.round === round,
312
+ });
313
+ const sign = delta > 0 ? "+" : "";
314
+ ctx.ui.notify(`Round ${round}: ${score.toFixed(4)} (${sign}${delta.toFixed(4)}) — ${proposal.task.slice(0, 50)}`, { level: delta > 0 ? "info" : "warn" });
315
+ git(["checkout", baseBranch]);
316
+ }
317
+ // Summary
318
+ const summaryLines = [
319
+ `Autoresearch complete: ${rounds} rounds`,
320
+ "",
321
+ ];
322
+ for (const r of results) {
323
+ const sign = r.delta >= 0 ? "+" : "";
324
+ const star = bestResult && r.round === bestResult.round ? " ★" : "";
325
+ summaryLines.push(` R${r.round}: ${r.score.toFixed(4)} (${sign}${r.delta.toFixed(4)}) ${r.task.slice(0, 50)}${star}`);
326
+ }
327
+ if (bestResult && bestResult.delta > 0) {
328
+ summaryLines.push("", `Winner: Round ${bestResult.round} (+${bestResult.delta.toFixed(4)})`);
329
+ git(["checkout", bestResult.branch]);
330
+ const pushResult = git(["push", "-u", "origin", bestResult.branch]);
331
+ if (pushResult.ok) {
332
+ const prTitle = `Autoresearch: ${bestResult.task.slice(0, 50)} (+${bestResult.delta.toFixed(4)})`;
333
+ const prBody = [
334
+ "## Autoresearch Winner",
335
+ "",
336
+ `**Task:** ${bestResult.task}`,
337
+ `**Score:** ${bestResult.score.toFixed(4)} (delta: +${bestResult.delta.toFixed(4)})`,
338
+ `**Tests:** ${bestResult.testsPassing}/${bestResult.testsTotal}`,
339
+ `**Round:** ${bestResult.round}/${rounds}`,
340
+ ].join("\n");
341
+ const prResult = gh([
342
+ "pr", "create", "--title", prTitle, "--body", prBody,
343
+ "--base", baseBranch, "--head", bestResult.branch,
344
+ ]);
345
+ if (prResult.ok) {
346
+ summaryLines.push(`PR created: ${prResult.output}`);
347
+ await emitCustomEvent(ctx, "autoresearch:complete", {
348
+ rounds,
349
+ winner_round: bestResult.round,
350
+ winner_task: bestResult.task,
351
+ winner_delta: bestResult.delta,
352
+ pr_url: prResult.output,
353
+ });
354
+ }
355
+ }
356
+ git(["checkout", baseBranch]);
357
+ }
358
+ else {
359
+ summaryLines.push("", "No improvement found across all rounds.");
360
+ }
361
+ // Cleanup non-winning branches
362
+ for (const r of results) {
363
+ if (!bestResult || r.round !== bestResult.round) {
364
+ git(["branch", "-D", r.branch]);
365
+ }
366
+ }
367
+ git(["stash", "pop"]);
368
+ ctx.ui.notify(summaryLines.join("\n"), { level: "info" });
369
+ },
370
+ });
371
+ }
372
+ //# sourceMappingURL=autoresearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoresearch.js","sourceRoot":"","sources":["../extensions/autoresearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Bookmarks Extension
3
+ *
4
+ * Registers /bookmark and /unbookmark for marking key decisions,
5
+ * milestones, and important moments in the session tree.
6
+ * Labels show up in Pi's /tree navigation for easy jumping.
7
+ *
8
+ * Also auto-bookmarks when journal entries of type "decision" or
9
+ * "milestone" are written.
10
+ *
11
+ * @purpose Session tree bookmarks for key JFL moments
12
+ */
13
+ import type { PiContext } from "./types.js";
14
+ export declare function setupBookmarks(ctx: PiContext): void;
15
+ //# sourceMappingURL=bookmarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bookmarks.d.ts","sourceRoot":"","sources":["../extensions/bookmarks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAmEnD"}