jfl 0.9.9 → 0.9.11

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 (54) hide show
  1. package/dist/commands/init-from-service.d.ts.map +1 -1
  2. package/dist/commands/init-from-service.js +2 -2
  3. package/dist/commands/init-from-service.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +88 -23
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/peter.d.ts.map +1 -1
  8. package/dist/commands/peter.js +112 -35
  9. package/dist/commands/peter.js.map +1 -1
  10. package/dist/commands/repair.d.ts.map +1 -1
  11. package/dist/commands/repair.js +13 -11
  12. package/dist/commands/repair.js.map +1 -1
  13. package/dist/commands/session.d.ts.map +1 -1
  14. package/dist/commands/session.js +7 -40
  15. package/dist/commands/session.js.map +1 -1
  16. package/dist/commands/start.js +3 -3
  17. package/dist/commands/start.js.map +1 -1
  18. package/dist/lib/agent-config.d.ts +1 -0
  19. package/dist/lib/agent-config.d.ts.map +1 -1
  20. package/dist/lib/agent-config.js.map +1 -1
  21. package/dist/lib/agent-guards.d.ts +67 -0
  22. package/dist/lib/agent-guards.d.ts.map +1 -0
  23. package/dist/lib/agent-guards.js +229 -0
  24. package/dist/lib/agent-guards.js.map +1 -0
  25. package/dist/lib/agent-runtime-api.d.ts +32 -0
  26. package/dist/lib/agent-runtime-api.d.ts.map +1 -0
  27. package/dist/lib/agent-runtime-api.js +270 -0
  28. package/dist/lib/agent-runtime-api.js.map +1 -0
  29. package/dist/lib/agent-session.d.ts.map +1 -1
  30. package/dist/lib/agent-session.js +255 -25
  31. package/dist/lib/agent-session.js.map +1 -1
  32. package/dist/lib/gtm-generator.js +3 -1
  33. package/dist/lib/gtm-generator.js.map +1 -1
  34. package/dist/lib/memory-search.d.ts.map +1 -1
  35. package/dist/lib/memory-search.js +0 -8
  36. package/dist/lib/memory-search.js.map +1 -1
  37. package/dist/utils/jfl-paths.d.ts +9 -0
  38. package/dist/utils/jfl-paths.d.ts.map +1 -1
  39. package/dist/utils/jfl-paths.js +13 -0
  40. package/dist/utils/jfl-paths.js.map +1 -1
  41. package/package.json +1 -1
  42. package/packages/pi/dist/index.d.ts.map +1 -1
  43. package/packages/pi/dist/index.js +19 -1
  44. package/packages/pi/dist/index.js.map +1 -1
  45. package/packages/pi/dist/session.d.ts +5 -1
  46. package/packages/pi/dist/session.d.ts.map +1 -1
  47. package/packages/pi/dist/session.js +247 -116
  48. package/packages/pi/dist/session.js.map +1 -1
  49. package/packages/pi/extensions/index.ts +24 -1
  50. package/packages/pi/extensions/session.ts +256 -96
  51. package/packages/pi/skills/end/SKILL.md +8 -0
  52. package/scripts/session/session-cleanup.sh +19 -6
  53. package/template/.github/workflows/jfl-eval.yml +8 -1
  54. package/template/scripts/session/session-cleanup.sh +23 -8
@@ -3,22 +3,118 @@
3
3
  *
4
4
  * Pi-native session lifecycle via Context Hub API.
5
5
  * Calls POST /api/session/init on start and POST /api/session/end on shutdown.
6
- * Hub handles sync, branch creation, doctor — single source of truth.
6
+ * Hub handles sync, doctor, branch creation — single source of truth.
7
7
  * Pi only manages the auto-commit daemon locally (needs a detached process).
8
8
  *
9
+ * AGENT MODE: When JFL_AGENT_MODE=1 or --print is used (PP agent runs),
10
+ * skip ALL session branching. PP agents work in isolated /tmp worktrees —
11
+ * they must NOT touch the main repo's git state.
12
+ *
9
13
  * @purpose Pi session lifecycle — Hub API for init/end, local auto-commit daemon
10
14
  */
11
- import { execSync, spawn } from "child_process";
12
- import { existsSync, readFileSync, writeFileSync } from "fs";
15
+ import { execSync, spawn, exec } from "child_process";
16
+ import { promisify } from "util";
17
+ import { existsSync, readFileSync, writeFileSync, unlinkSync } from "fs";
13
18
  import { join } from "path";
14
19
  import { hubUrl, authToken } from "./map-bridge.js";
20
+ const execAsync = promisify(exec);
15
21
  let autoCommitProcess = null;
16
22
  let sessionBranch = "";
23
+ let isAgentMode = false;
24
+ /**
25
+ * Detect if we're running in agent/ephemeral mode where session branching
26
+ * should be completely skipped. This happens when:
27
+ * - JFL_AGENT_MODE=1 env var is set (PP agent runs)
28
+ * - PI_PRINT_MODE=1 (set by Pi core in --print mode)
29
+ * - Process was spawned by PP (JFL_PP_SPAWNED=1)
30
+ */
31
+ function detectAgentMode() {
32
+ return (process.env.JFL_AGENT_MODE === "1" ||
33
+ process.env.JFL_PP_SPAWNED === "1" ||
34
+ process.env.PI_PRINT_MODE === "1" ||
35
+ process.argv.includes("--print") ||
36
+ process.argv.includes("-p"));
37
+ }
38
+ /**
39
+ * Get working branch from .jfl/config.json or default to "main"
40
+ */
41
+ function getWorkingBranch(root) {
42
+ const configPath = join(root, ".jfl", "config.json");
43
+ if (existsSync(configPath)) {
44
+ try {
45
+ const cfg = JSON.parse(readFileSync(configPath, "utf-8"));
46
+ if (cfg.working_branch)
47
+ return cfg.working_branch;
48
+ }
49
+ catch { }
50
+ }
51
+ return "main";
52
+ }
53
+ /**
54
+ * Merge a stale session branch to the working branch.
55
+ * Called during onInit when we find ourselves on an old session branch,
56
+ * to prevent data loss from abandoned branches.
57
+ *
58
+ * Returns true if merge succeeded (or branch had no unique work).
59
+ */
60
+ function mergeStaleSessionBranch(root, staleBranch, workingBranch, ctx) {
61
+ try {
62
+ // Check if the stale branch has any commits not in working branch
63
+ const uniqueCommits = execSync(`git log --oneline "${workingBranch}".."${staleBranch}" 2>/dev/null | wc -l`, { cwd: root, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim();
64
+ if (uniqueCommits === "0") {
65
+ // No unique work — safe to just switch away
66
+ ctx.log(`Stale branch ${staleBranch} has no unique commits, switching to ${workingBranch}`, "debug");
67
+ return true;
68
+ }
69
+ ctx.log(`Stale branch ${staleBranch} has ${uniqueCommits} unique commits — merging to ${workingBranch}`, "info");
70
+ ctx.ui.notify(`⚠ Recovering ${uniqueCommits} commits from stale session ${staleBranch}`, { level: "warn" });
71
+ // Commit any dirty state first
72
+ try {
73
+ const status = execSync("git status --porcelain", { cwd: root, encoding: "utf-8", timeout: 5000, stdio: ["pipe", "pipe", "pipe"] }).trim();
74
+ if (status) {
75
+ execSync("git add -A && git commit -m 'auto: save before stale branch merge' --no-verify", {
76
+ cwd: root, timeout: 10000, stdio: ["pipe", "pipe", "pipe"],
77
+ });
78
+ }
79
+ }
80
+ catch { }
81
+ // Switch to working branch
82
+ execSync(`git checkout "${workingBranch}"`, { cwd: root, timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
83
+ // Merge stale branch with auto-resolve for .jfl conflicts
84
+ try {
85
+ execSync(`git merge "${staleBranch}" --no-edit -X ours`, { cwd: root, timeout: 15000, stdio: ["pipe", "pipe", "pipe"] });
86
+ ctx.ui.notify(`✓ Recovered stale session ${staleBranch} → ${workingBranch}`, { level: "info" });
87
+ // Clean up the stale branch
88
+ try {
89
+ execSync(`git branch -d "${staleBranch}"`, { cwd: root, timeout: 5000, stdio: ["pipe", "pipe", "pipe"] });
90
+ }
91
+ catch { }
92
+ return true;
93
+ }
94
+ catch (err) {
95
+ const msg = err instanceof Error ? err.message : String(err);
96
+ if (msg.includes("CONFLICT") || msg.includes("conflict")) {
97
+ // Abort merge, stay on working branch, leave stale branch for manual resolution
98
+ try {
99
+ execSync("git merge --abort", { cwd: root, timeout: 5000, stdio: ["pipe", "pipe", "pipe"] });
100
+ }
101
+ catch { }
102
+ ctx.ui.notify(`⚠ Merge conflict recovering ${staleBranch} — branch preserved for manual merge`, { level: "warn" });
103
+ return true; // Still switch to working branch, just don't delete the old one
104
+ }
105
+ throw err;
106
+ }
107
+ }
108
+ catch (err) {
109
+ ctx.log(`Failed to merge stale branch ${staleBranch}: ${err}`, "warn");
110
+ return false;
111
+ }
112
+ }
17
113
  /**
18
114
  * Create a session branch locally without the Hub.
19
115
  * Parity with scripts/session/session-init.sh:
20
- * 1. Commit or stash dirty state
21
- * 2. If on a stale session branch, try to switch to working branch
116
+ * 1. If on a stale session branch, MERGE it first (prevent data loss!)
117
+ * 2. Commit or stash remaining dirty state
22
118
  * 3. Create new session branch from clean base
23
119
  * 4. Pop stash if needed
24
120
  */
@@ -38,24 +134,21 @@ function createSessionBranchLocally(root, ctx) {
38
134
  const timeStr = now.toISOString().slice(11, 16).replace(":", "");
39
135
  const randomId = Math.random().toString(16).slice(2, 8);
40
136
  const branchName = `session-${user}-${dateStr}-${timeStr}-${randomId}`;
41
- // Get working branch from config
42
- let workingBranch = "main";
43
- const configPath = join(root, ".jfl", "config.json");
44
- if (existsSync(configPath)) {
45
- try {
46
- const cfg = JSON.parse(readFileSync(configPath, "utf-8"));
47
- if (cfg.working_branch)
48
- workingBranch = cfg.working_branch;
49
- }
50
- catch { }
137
+ const workingBranch = getWorkingBranch(root);
138
+ // Step 1: If on a stale session branch, MERGE it to working branch first
139
+ const currentBranch = getCurrentBranch(root);
140
+ if (currentBranch.startsWith("session-")) {
141
+ ctx.log(`Found stale session branch ${currentBranch} — merging before creating new session`, "info");
142
+ mergeStaleSessionBranch(root, currentBranch, workingBranch, ctx);
143
+ // After merge, we should be on workingBranch
51
144
  }
52
- // Step 1: Commit or stash dirty state so checkout doesn't fail
145
+ // Step 2: Commit or stash dirty state so checkout doesn't fail
53
146
  let stashed = false;
54
147
  try {
55
148
  const status = execSync("git status --porcelain", { cwd: root, timeout: 5000, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim();
56
149
  if (status) {
57
150
  try {
58
- execSync("git add -A && git commit -m 'auto: session-init save before branch switch' --no-verify", { cwd: root, timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
151
+ execSync("git add -A && git commit -m 'auto: session-init save' --no-verify", { cwd: root, timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
59
152
  }
60
153
  catch {
61
154
  // Commit failed — stash instead
@@ -68,18 +161,17 @@ function createSessionBranchLocally(root, ctx) {
68
161
  }
69
162
  }
70
163
  catch { }
71
- // Step 2: If on a stale session branch, try to switch to working branch
72
- const currentBranch = getCurrentBranch(root);
73
- if (currentBranch.startsWith("session-")) {
164
+ // Step 3: Ensure we're on working branch before creating session branch
165
+ const nowBranch = getCurrentBranch(root);
166
+ if (nowBranch !== workingBranch) {
74
167
  try {
75
168
  execSync(`git checkout "${workingBranch}"`, { cwd: root, timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
76
- ctx.log(`Switched from stale session branch ${currentBranch} → ${workingBranch}`, "info");
77
169
  }
78
170
  catch {
79
- ctx.log(`Could not switch from ${currentBranch} — branching from it`, "warn");
171
+ ctx.log(`Could not switch to ${workingBranch} — branching from ${nowBranch}`, "warn");
80
172
  }
81
173
  }
82
- // Step 3: Create new session branch
174
+ // Step 4: Create new session branch
83
175
  let finalBranch = branchName;
84
176
  try {
85
177
  execSync(`git checkout -b "${branchName}"`, { cwd: root, stdio: ["pipe", "pipe", "pipe"] });
@@ -100,7 +192,7 @@ function createSessionBranchLocally(root, ctx) {
100
192
  ctx.ui.notify(`Branch creation failed — using ${finalBranch}`, { level: "warn" });
101
193
  }
102
194
  }
103
- // Step 4: Pop stash if we stashed
195
+ // Step 5: Pop stash if we stashed
104
196
  if (stashed) {
105
197
  try {
106
198
  execSync("git stash pop", { cwd: root, timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
@@ -130,6 +222,15 @@ function findScript(root, scriptName) {
130
222
  }
131
223
  export async function setupSession(ctx, _config) {
132
224
  const root = ctx.session.projectRoot;
225
+ // ── Agent mode detection ─────────────────────────────────────────────
226
+ // PP agents work in isolated /tmp worktrees. They must NOT create session
227
+ // branches or do any git operations in the main repo.
228
+ isAgentMode = detectAgentMode();
229
+ if (isAgentMode) {
230
+ sessionBranch = getCurrentBranch(root);
231
+ ctx.log(`Agent mode detected — skipping session branching (on ${sessionBranch})`, "info");
232
+ return;
233
+ }
133
234
  // Call Hub session init — handles sync, doctor, branch creation
134
235
  try {
135
236
  const resp = await fetch(`${hubUrl}/api/session/init`, {
@@ -245,131 +346,161 @@ export async function pivot(ctx, summary) {
245
346
  export async function onShutdown(ctx) {
246
347
  const root = ctx.session.projectRoot;
247
348
  const branch = getSessionBranch() || getCurrentBranch(root);
248
- ctx.ui.notify("Shutting down session…", { level: "info" });
249
- // ── 1. Journal check (parity with CC Stop hook) ──────────────────────
349
+ const t0 = Date.now();
350
+ ctx.ui.notify("Ending session…", { level: "info" });
351
+ // ── Agent mode: skip all git operations ──────────────────────────────
352
+ if (isAgentMode) {
353
+ ctx.log("Agent mode — skipping session cleanup (no branching was done)", "debug");
354
+ ctx.emit("hook:session-end", { session: ctx.session.id, branch, ts: new Date().toISOString() });
355
+ return;
356
+ }
357
+ // ── PHASE 1: Fire non-blocking tasks immediately ─────────────────────
358
+ // These run in parallel with the sequential git ops below.
359
+ // Using async I/O so they actually progress while git work happens.
360
+ // 1a. Hub API end (fire-and-forget, 5s cap)
361
+ const hubP = fetch(`${hubUrl}/api/session/end`, {
362
+ method: "POST",
363
+ headers: {
364
+ "Content-Type": "application/json",
365
+ ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
366
+ },
367
+ body: JSON.stringify({ runtime: "pi" }),
368
+ signal: AbortSignal.timeout(5000),
369
+ }).then(() => { ctx.log("Hub session closed", "debug"); })
370
+ .catch(() => { ctx.log("Hub session end failed", "debug"); });
371
+ // 1b. Synopsis generation (read-only, safe to run during git ops)
372
+ const synopsisP = execAsync("jfl synopsis 4 2>/dev/null || true", { cwd: root, timeout: 10000 })
373
+ .then(r => r.stdout.trim())
374
+ .catch(() => "");
375
+ // 1c. Memory indexing (read-only index build, safe to run in parallel)
376
+ const memoryP = execAsync("jfl memory-index 2>/dev/null || true", { cwd: root, timeout: 15000 })
377
+ .then(() => { ctx.log("Memory indexed", "debug"); })
378
+ .catch(() => { ctx.log("Memory index skipped", "debug"); });
379
+ // ── PHASE 2: Sequential git ops (critical path) ─────────────────────
380
+ // These MUST be ordered: commit → merge → push
381
+ // Using async exec so parallel tasks can progress between steps.
382
+ // 2a. Journal check
250
383
  const journalPath = join(root, ".jfl", "journal", `${branch}.jsonl`);
251
384
  const hasJournal = existsSync(journalPath) && readFileSync(journalPath, "utf-8").trim().length > 0;
252
385
  if (!hasJournal) {
253
386
  ctx.ui.notify("⚠️ No journal entry for this session. Context will be lost.\n" +
254
387
  ` File: .jfl/journal/${branch}.jsonl`, { level: "warn" });
255
388
  }
256
- // ── 2. Kill auto-commit daemon ───────────────────────────────────────
389
+ // 2b. Kill auto-commit daemon
257
390
  if (autoCommitProcess) {
258
391
  try {
259
392
  autoCommitProcess.kill();
260
393
  }
261
394
  catch { }
262
395
  autoCommitProcess = null;
263
- ctx.ui.notify(" ✓ Auto-commit stopped", { level: "info" });
264
396
  }
265
- // ── 3. Auto-commit any uncommitted changes ───────────────────────────
397
+ // 2c. Auto-commit any uncommitted changes (async — doesn't block event loop)
266
398
  try {
267
- const status = execSync("git status --porcelain", { cwd: root, timeout: 3000, encoding: "utf-8" }).trim();
399
+ const status = (await execAsync("git status --porcelain", { cwd: root, timeout: 3000 })).stdout.trim();
268
400
  if (status) {
269
- execSync("git add -A && git commit -m 'auto: session-end save'", { cwd: root, timeout: 5000, stdio: "pipe" });
270
- ctx.ui.notify(" ✓ Uncommitted changes saved", { level: "info" });
401
+ await execAsync("git add -A && git commit -m 'auto: session-end save' --no-verify", { cwd: root, timeout: 5000 });
402
+ ctx.ui.notify(" ✓ Changes saved", { level: "info" });
271
403
  }
272
404
  }
273
405
  catch { }
274
- // ── 4. Call Hub session end ──────────────────────────────────────────
275
- try {
276
- await fetch(`${hubUrl}/api/session/end`, {
277
- method: "POST",
278
- headers: {
279
- "Content-Type": "application/json",
280
- ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
281
- },
282
- body: JSON.stringify({ runtime: "pi" }),
283
- signal: AbortSignal.timeout(5000),
284
- });
285
- ctx.ui.notify(" ✓ Hub session closed", { level: "info" });
286
- }
287
- catch {
288
- ctx.log("Hub session end failed — running local cleanup", "debug");
289
- }
290
- // ── 5. Merge session branch back (parity with CC session-cleanup.sh) ─
406
+ // 2d. Merge session branch
407
+ let mergeOk = false;
408
+ let workingBranch = "main";
291
409
  if (branch.startsWith("session-")) {
292
- // Guard: if git is already on a DIFFERENT branch (e.g. a new session started),
293
- // don't merge — the old session branch may already be gone.
294
- const currentGitBranch = getCurrentBranch(root);
295
- if (currentGitBranch !== branch) {
296
- ctx.log(`Skipping merge — git is on ${currentGitBranch}, not ${branch} (new session likely started)`, "debug");
297
- ctx.ui.notify(` ⚠ Skipped merge — already on ${currentGitBranch}`, { level: "info" });
298
- }
299
- else
300
- try {
301
- // Get working branch from config or default to main
302
- let workingBranch = "main";
303
- const configPath = join(root, ".jfl", "config.json");
304
- if (existsSync(configPath)) {
305
- try {
306
- const config = JSON.parse(readFileSync(configPath, "utf-8"));
307
- if (config.working_branch)
308
- workingBranch = config.working_branch;
309
- }
310
- catch { }
311
- }
312
- // Remove stale lock files that block git operations
313
- const lockFile = join(root, ".git", "index.lock");
314
- if (existsSync(lockFile)) {
315
- try {
316
- require("fs").unlinkSync(lockFile);
317
- }
318
- catch { }
319
- }
320
- // Commit any dirty tracked files before switching branches
321
- try {
322
- execSync("git add -A && git commit -m 'session: auto-commit before merge' --no-verify", {
323
- cwd: root, timeout: 10000, stdio: "pipe",
324
- });
325
- }
326
- catch { } // OK if nothing to commit
327
- // Push session branch first
410
+ try {
411
+ workingBranch = getWorkingBranch(root);
412
+ // Remove stale lock files
413
+ const lockFile = join(root, ".git", "index.lock");
414
+ if (existsSync(lockFile)) {
328
415
  try {
329
- execSync(`git push origin ${branch}`, { cwd: root, timeout: 15000, stdio: "pipe" });
330
- ctx.ui.notify(" ✓ Session branch pushed", { level: "info" });
416
+ unlinkSync(lockFile);
331
417
  }
332
418
  catch { }
333
- // Merge session into working branch
334
- execSync(`git checkout ${workingBranch}`, { cwd: root, timeout: 5000, stdio: "pipe" });
335
- execSync(`git merge ${branch} --no-edit`, { cwd: root, timeout: 10000, stdio: "pipe" });
336
- ctx.ui.notify(` ✓ Merged ${branch} → ${workingBranch}`, { level: "info" });
337
- // Push merged working branch
419
+ }
420
+ // Ensure we're on our session branch
421
+ const currentGitBranch = getCurrentBranch(root);
422
+ if (currentGitBranch !== branch) {
338
423
  try {
339
- execSync(`git push origin ${workingBranch}`, { cwd: root, timeout: 15000, stdio: "pipe" });
424
+ await execAsync(`git checkout "${branch}"`, { cwd: root, timeout: 10000 });
425
+ ctx.log(`Recovered session branch from ${currentGitBranch}`, "info");
340
426
  }
341
- catch { }
342
- // Delete session branch (local + remote)
427
+ catch {
428
+ ctx.log(`Cannot checkout ${branch} attempting merge anyway`, "warn");
429
+ }
430
+ }
431
+ // Commit any remaining dirty state
432
+ try {
433
+ await execAsync("git add -A && git commit -m 'session: auto-commit before merge' --no-verify", { cwd: root, timeout: 10000 });
434
+ }
435
+ catch { } // OK if nothing to commit
436
+ // Merge session into working branch (skip session branch push — we'll push working branch after merge)
437
+ await execAsync(`git checkout "${workingBranch}"`, { cwd: root, timeout: 5000 });
438
+ await execAsync(`git merge "${branch}" --no-edit`, { cwd: root, timeout: 10000 });
439
+ ctx.ui.notify(` ✓ Merged → ${workingBranch}`, { level: "info" });
440
+ mergeOk = true;
441
+ // Delete local session branch immediately (fast, no network)
442
+ try {
443
+ await execAsync(`git branch -d "${branch}"`, { cwd: root, timeout: 5000 });
444
+ }
445
+ catch { }
446
+ }
447
+ catch (err) {
448
+ const msg = err instanceof Error ? err.message : String(err);
449
+ if (msg.includes("CONFLICT") || msg.includes("conflict")) {
450
+ ctx.ui.notify(` ⚠ Merge conflict — branch ${branch} preserved`, { level: "warn" });
343
451
  try {
344
- execSync(`git branch -d ${branch}`, { cwd: root, timeout: 5000, stdio: "pipe" });
345
- execSync(`git push origin --delete ${branch}`, { cwd: root, timeout: 10000, stdio: "pipe" });
346
- ctx.ui.notify(" ✓ Session branch cleaned up", { level: "info" });
452
+ await execAsync(`git checkout "${branch}"`, { cwd: root, timeout: 5000 });
347
453
  }
348
454
  catch { }
349
455
  }
350
- catch (err) {
351
- const msg = err instanceof Error ? err.message : String(err);
352
- if (msg.includes("CONFLICT") || msg.includes("conflict")) {
353
- ctx.ui.notify(` Merge conflict — session branch ${branch} preserved`, { level: "warn" });
354
- // Switch back to session branch so user can resolve
355
- try {
356
- execSync(`git checkout ${branch}`, { cwd: root, timeout: 5000, stdio: "pipe" });
357
- }
358
- catch { }
359
- }
360
- else {
361
- ctx.ui.notify(` ⚠ Branch merge failed: ${msg.slice(0, 80)}`, { level: "warn" });
456
+ else {
457
+ ctx.ui.notify(` ⚠ Merge failed: ${msg.slice(0, 100)}`, { level: "warn" });
458
+ try {
459
+ await execAsync(`git checkout "${branch}"`, { cwd: root, timeout: 5000 });
362
460
  }
461
+ catch { }
363
462
  }
463
+ }
364
464
  }
365
- // ── 6. Fallback cleanup script ───────────────────────────────────────
366
- const cleanupScript = findScript(root, "session-cleanup.sh");
367
- if (cleanupScript && !branch.startsWith("session-")) {
368
- // Only run cleanup script if we didn't already handle merge above
465
+ // ── PHASE 3: Parallel push + cleanup + collect ───────────────────────
466
+ // Push and remote cleanup are network I/O — run them in parallel with
467
+ // synopsis/memory collection. Single git push command does both push +
468
+ // remote branch delete to avoid lock contention.
469
+ const pushP = (async () => {
470
+ if (!mergeOk)
471
+ return;
369
472
  try {
370
- execSync(`bash "${cleanupScript}"`, { cwd: root, timeout: 10000, stdio: "pipe" });
473
+ // Single push: update working branch AND delete remote session branch
474
+ // This avoids two separate network round-trips and git lock contention
475
+ await execAsync(`git push origin "${workingBranch}" ":${branch}" 2>/dev/null || git push origin "${workingBranch}" 2>/dev/null || true`, { cwd: root, timeout: 20000 });
476
+ ctx.ui.notify(" ✓ Pushed & cleaned up remote", { level: "info" });
477
+ }
478
+ catch {
479
+ ctx.log("Push failed — run manually: git push", "warn");
480
+ }
481
+ })();
482
+ // ── PHASE 4: Await all parallel work ─────────────────────────────────
483
+ const [, synopsisResult] = await Promise.allSettled([hubP, synopsisP, memoryP, pushP]);
484
+ // Show synopsis if we got one
485
+ if (synopsisResult.status === "fulfilled" && synopsisResult.value) {
486
+ const lines = synopsisResult.value.split("\n");
487
+ // Show condensed version — first 20 lines max
488
+ const condensed = lines.slice(0, 20).join("\n");
489
+ if (condensed.trim()) {
490
+ ctx.ui.notify(`\n${condensed}`, { level: "info" });
491
+ }
492
+ }
493
+ const elapsed = ((Date.now() - t0) / 1000).toFixed(1);
494
+ ctx.ui.notify(`✓ Session ended (${elapsed}s)`, { level: "info" });
495
+ // ── Fallback cleanup script for non-session branches ─────────────────
496
+ if (!branch.startsWith("session-")) {
497
+ const cleanupScript = findScript(root, "session-cleanup.sh");
498
+ if (cleanupScript) {
499
+ try {
500
+ await execAsync(`bash "${cleanupScript}"`, { cwd: root, timeout: 10000 });
501
+ }
502
+ catch { }
371
503
  }
372
- catch { }
373
504
  }
374
505
  ctx.emit("hook:session-end", {
375
506
  session: ctx.session.id,
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../extensions/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../extensions/session.ts"],"names":[],"mappings":"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"}
@@ -329,7 +329,30 @@ export default async function jflExtension(pi: any): Promise<void> {
329
329
 
330
330
  pi.setSessionName(`JFL: ${projectName}`)
331
331
 
332
- // ─── Header first replace Pi's default before anything renders ──
332
+ // ─── Agent mode: minimal setup, no ceremony ──────────────────────
333
+ // PP agents and RL agents set JFL_AGENT_MODE=1. They need tools
334
+ // (memory, training buffer, hub) but NOT session branching, onboarding,
335
+ // header/footer/shortcuts, startup briefing, or any TUI elements.
336
+ // This cuts startup from 2+ minutes to <5 seconds.
337
+ const isAgentMode = process.env.JFL_AGENT_MODE === "1" || process.env.JFL_PP_SPAWNED === "1"
338
+
339
+ if (isAgentMode) {
340
+ // Agent mode: essential tools only, no ceremony
341
+ ctx.log("Agent mode — minimal setup (tools only, no ceremony)", "info")
342
+
343
+ await setupSession(ctx, config) // Skips branching internally (detects agent mode)
344
+ setupMemoryTool(ctx) // Memory search — agents need project context
345
+ await setupTrainingBufferTool(ctx, config) // Record training tuples from agent work
346
+ await setupEvalTool(ctx, config) // Run evals to check improvement
347
+ await setupHubTools(ctx, config) // Hub connection for tracking
348
+
349
+ ctx.log(`JFL Agent: ${projectName} — ready (${Date.now() - sessionStartTime}ms)`)
350
+ return
351
+ }
352
+
353
+ // ─── Interactive mode: full ceremony ──────────────────────────────
354
+
355
+ // Header first — replace Pi's default before anything renders
333
356
  setupHeader(ctx, config)
334
357
 
335
358
  // ─── Hub first, then animation + tools in parallel ─────────────