jfl 0.9.8 → 0.9.10
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/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +85 -20
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/peter.d.ts.map +1 -1
- package/dist/commands/peter.js +136 -42
- package/dist/commands/peter.js.map +1 -1
- package/dist/commands/repair.d.ts.map +1 -1
- package/dist/commands/repair.js +13 -11
- package/dist/commands/repair.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +3 -37
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/start.js +3 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/lib/agent-config.d.ts +1 -0
- package/dist/lib/agent-config.d.ts.map +1 -1
- package/dist/lib/agent-config.js.map +1 -1
- package/dist/lib/agent-guards.d.ts +67 -0
- package/dist/lib/agent-guards.d.ts.map +1 -0
- package/dist/lib/agent-guards.js +229 -0
- package/dist/lib/agent-guards.js.map +1 -0
- package/dist/lib/agent-session.d.ts.map +1 -1
- package/dist/lib/agent-session.js +316 -48
- package/dist/lib/agent-session.js.map +1 -1
- package/dist/lib/gtm-generator.js +3 -1
- package/dist/lib/gtm-generator.js.map +1 -1
- package/dist/lib/memory-search.d.ts.map +1 -1
- package/dist/lib/memory-search.js +0 -8
- package/dist/lib/memory-search.js.map +1 -1
- package/dist/utils/jfl-paths.d.ts +9 -0
- package/dist/utils/jfl-paths.d.ts.map +1 -1
- package/dist/utils/jfl-paths.js +13 -0
- package/dist/utils/jfl-paths.js.map +1 -1
- package/package.json +1 -1
- package/packages/pi/dist/index.d.ts.map +1 -1
- package/packages/pi/dist/index.js +19 -1
- package/packages/pi/dist/index.js.map +1 -1
- package/packages/pi/dist/session.d.ts +5 -1
- package/packages/pi/dist/session.d.ts.map +1 -1
- package/packages/pi/dist/session.js +247 -116
- package/packages/pi/dist/session.js.map +1 -1
- package/packages/pi/dist/startup-briefing.d.ts.map +1 -1
- package/packages/pi/dist/startup-briefing.js +66 -0
- package/packages/pi/dist/startup-briefing.js.map +1 -1
- package/packages/pi/extensions/index.ts +24 -1
- package/packages/pi/extensions/session.ts +256 -96
- package/packages/pi/extensions/startup-briefing.ts +69 -0
- package/packages/pi/skills/end/SKILL.md +8 -0
- package/scripts/postinstall.js +0 -18
- package/scripts/session/session-cleanup.sh +19 -6
- package/template/.github/workflows/jfl-eval.yml +8 -1
- package/template/scripts/session/session-cleanup.sh +23 -8
package/scripts/postinstall.js
CHANGED
|
@@ -92,24 +92,6 @@ function main() {
|
|
|
92
92
|
|
|
93
93
|
const bunInstalled = hasBun();
|
|
94
94
|
|
|
95
|
-
if (!bunInstalled) {
|
|
96
|
-
console.log("⚠️ Bun runtime not found.");
|
|
97
|
-
console.log(" Some JFL tools (like ralph-tui) require Bun.");
|
|
98
|
-
console.log("");
|
|
99
|
-
console.log(" Install Bun:");
|
|
100
|
-
if (platform() === "win32") {
|
|
101
|
-
console.log(' powershell -c "irm bun.sh/install.ps1 | iex"');
|
|
102
|
-
} else {
|
|
103
|
-
console.log(" curl -fsSL https://bun.sh/install | bash");
|
|
104
|
-
}
|
|
105
|
-
console.log("");
|
|
106
|
-
console.log(" Then run: jfl update");
|
|
107
|
-
console.log("");
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
console.log("✅ Bun runtime detected\n");
|
|
112
|
-
|
|
113
95
|
for (const tool of TOOLS) {
|
|
114
96
|
if (tool.requiresBun && !bunInstalled) {
|
|
115
97
|
console.log(`⏭️ Skipping ${tool.name} (requires Bun)`);
|
|
@@ -127,15 +127,28 @@ fi
|
|
|
127
127
|
echo "Attempting to merge $BRANCH to $WORKING_BRANCH..."
|
|
128
128
|
cd "$MAIN_REPO"
|
|
129
129
|
|
|
130
|
+
# Commit any dirty .jfl/ files that background processes (PP, flow engine) may have written.
|
|
131
|
+
# Without this, git checkout refuses to switch branches when these files differ.
|
|
132
|
+
if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then
|
|
133
|
+
echo "Committing background-modified files before checkout..."
|
|
134
|
+
git add -A .jfl/ 2>/dev/null || true
|
|
135
|
+
git diff --cached --quiet 2>/dev/null || git commit -m "session: auto-commit before merge" 2>/dev/null || true
|
|
136
|
+
fi
|
|
137
|
+
|
|
130
138
|
# Checkout working branch in the main repo
|
|
131
139
|
if ! git checkout "$WORKING_BRANCH" 2>/dev/null; then
|
|
132
|
-
|
|
133
|
-
echo "
|
|
134
|
-
|
|
135
|
-
if
|
|
136
|
-
|
|
140
|
+
# Last resort: stash anything remaining and retry
|
|
141
|
+
echo "Checkout blocked by dirty files, stashing..."
|
|
142
|
+
git stash push -m "session-cleanup: auto-stash before merge" 2>/dev/null || true
|
|
143
|
+
if ! git checkout "$WORKING_BRANCH" 2>/dev/null; then
|
|
144
|
+
echo "⚠ Could not checkout $WORKING_BRANCH, skipping merge"
|
|
145
|
+
echo " Session branch $BRANCH preserved for manual merge"
|
|
146
|
+
# Notify jfl-services that session ended
|
|
147
|
+
if command -v curl >/dev/null 2>&1; then
|
|
148
|
+
curl -s -X DELETE "http://localhost:3401/sessions/$BRANCH" >/dev/null 2>&1 || true
|
|
149
|
+
fi
|
|
150
|
+
exit 0
|
|
137
151
|
fi
|
|
138
|
-
exit 0
|
|
139
152
|
fi
|
|
140
153
|
|
|
141
154
|
# Attempt merge with auto-resolve for .jfl/ conflicts
|
|
@@ -513,6 +513,9 @@ jobs:
|
|
|
513
513
|
PR_NUMBER=${{ github.event.pull_request.number }}
|
|
514
514
|
IMPROVED="${{ steps.delta.outputs.improved }}"
|
|
515
515
|
|
|
516
|
+
DELTA="${{ steps.delta.outputs.delta }}"
|
|
517
|
+
REGRESSION=$(node -e "console.log(parseFloat('$DELTA') < 0)")
|
|
518
|
+
|
|
516
519
|
if [ "$IMPROVED" = "true" ]; then
|
|
517
520
|
# Check if AI review requested changes
|
|
518
521
|
REVIEW_STATE=$(gh pr view $PR_NUMBER --json reviews --jq '[.reviews[] | select(.author.login == "github-actions")] | last | .state // "NONE"' 2>/dev/null || echo "NONE")
|
|
@@ -525,10 +528,14 @@ jobs:
|
|
|
525
528
|
gh pr merge $PR_NUMBER --merge --delete-branch \
|
|
526
529
|
--body "Auto-merged by JFL eval: test_pass_rate improved by ${{ steps.delta.outputs.delta }} (${{ steps.baseline.outputs.score }} → ${{ steps.pr_eval.outputs.score }})"
|
|
527
530
|
fi
|
|
528
|
-
|
|
531
|
+
elif [ "$REGRESSION" = "true" ]; then
|
|
529
532
|
echo "Eval regression — requesting changes on PR #$PR_NUMBER"
|
|
530
533
|
gh pr review $PR_NUMBER --request-changes \
|
|
531
534
|
--body "JFL eval regression: test_pass_rate dropped by ${{ steps.delta.outputs.delta }} (${{ steps.baseline.outputs.score }} → ${{ steps.pr_eval.outputs.score }}). Run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
|
535
|
+
else
|
|
536
|
+
echo "Eval neutral (no improvement, no regression) — approving PR #$PR_NUMBER"
|
|
537
|
+
gh pr review $PR_NUMBER --approve \
|
|
538
|
+
--body "JFL eval: no regression (delta=${{ steps.delta.outputs.delta }}, ${{ steps.baseline.outputs.score }} → ${{ steps.pr_eval.outputs.score }}). Manual merge OK."
|
|
532
539
|
fi
|
|
533
540
|
|
|
534
541
|
- name: Eval Summary
|
|
@@ -48,8 +48,10 @@ if [ -f ".auto-merge.pid" ]; then
|
|
|
48
48
|
rm -f ".auto-merge.pid"
|
|
49
49
|
fi
|
|
50
50
|
|
|
51
|
-
# Context Hub is a
|
|
52
|
-
#
|
|
51
|
+
# Context Hub is a DAEMON — persists across sessions. Do NOT kill it here.
|
|
52
|
+
# Killing it before Stop hooks fire causes ECONNREFUSED on all HTTP hooks.
|
|
53
|
+
# The hub has 5-layer resilience (launchd, MCP auto-recovery, SessionStart ensure,
|
|
54
|
+
# self-healing on crash, startup grace period). Only stop via: jfl context-hub stop
|
|
53
55
|
|
|
54
56
|
# Get current session info
|
|
55
57
|
BRANCH=$(git branch --show-current 2>/dev/null || echo "")
|
|
@@ -125,15 +127,28 @@ fi
|
|
|
125
127
|
echo "Attempting to merge $BRANCH to $WORKING_BRANCH..."
|
|
126
128
|
cd "$MAIN_REPO"
|
|
127
129
|
|
|
130
|
+
# Commit any dirty .jfl/ files that background processes (PP, flow engine) may have written.
|
|
131
|
+
# Without this, git checkout refuses to switch branches when these files differ.
|
|
132
|
+
if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then
|
|
133
|
+
echo "Committing background-modified files before checkout..."
|
|
134
|
+
git add -A .jfl/ 2>/dev/null || true
|
|
135
|
+
git diff --cached --quiet 2>/dev/null || git commit -m "session: auto-commit before merge" 2>/dev/null || true
|
|
136
|
+
fi
|
|
137
|
+
|
|
128
138
|
# Checkout working branch in the main repo
|
|
129
139
|
if ! git checkout "$WORKING_BRANCH" 2>/dev/null; then
|
|
130
|
-
|
|
131
|
-
echo "
|
|
132
|
-
|
|
133
|
-
if
|
|
134
|
-
|
|
140
|
+
# Last resort: stash anything remaining and retry
|
|
141
|
+
echo "Checkout blocked by dirty files, stashing..."
|
|
142
|
+
git stash push -m "session-cleanup: auto-stash before merge" 2>/dev/null || true
|
|
143
|
+
if ! git checkout "$WORKING_BRANCH" 2>/dev/null; then
|
|
144
|
+
echo "⚠ Could not checkout $WORKING_BRANCH, skipping merge"
|
|
145
|
+
echo " Session branch $BRANCH preserved for manual merge"
|
|
146
|
+
# Notify jfl-services that session ended
|
|
147
|
+
if command -v curl >/dev/null 2>&1; then
|
|
148
|
+
curl -s -X DELETE "http://localhost:3401/sessions/$BRANCH" >/dev/null 2>&1 || true
|
|
149
|
+
fi
|
|
150
|
+
exit 0
|
|
135
151
|
fi
|
|
136
|
-
exit 0
|
|
137
152
|
fi
|
|
138
153
|
|
|
139
154
|
# Attempt merge with auto-resolve for .jfl/ conflicts
|