jfl 0.2.2 → 0.2.3
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/clawdbot-plugin/clawdbot.plugin.json +12 -1
- package/clawdbot-plugin/index.js +5 -5
- package/clawdbot-plugin/index.ts +5 -5
- package/dist/commands/context-hub.d.ts +4 -0
- package/dist/commands/context-hub.d.ts.map +1 -1
- package/dist/commands/context-hub.js +570 -81
- package/dist/commands/context-hub.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +42 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/peter.d.ts +15 -0
- package/dist/commands/peter.d.ts.map +1 -0
- package/dist/commands/peter.js +198 -0
- package/dist/commands/peter.js.map +1 -0
- package/dist/commands/ralph.d.ts +3 -1
- package/dist/commands/ralph.d.ts.map +1 -1
- package/dist/commands/ralph.js +40 -5
- package/dist/commands/ralph.js.map +1 -1
- package/dist/commands/session.d.ts +2 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +496 -49
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +25 -6
- package/dist/commands/update.js.map +1 -1
- package/dist/dashboard/components.d.ts +7 -0
- package/dist/dashboard/components.d.ts.map +1 -0
- package/dist/dashboard/components.js +163 -0
- package/dist/dashboard/components.js.map +1 -0
- package/dist/dashboard/index.d.ts +12 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +132 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/pages.d.ts +7 -0
- package/dist/dashboard/pages.d.ts.map +1 -0
- package/dist/dashboard/pages.js +742 -0
- package/dist/dashboard/pages.js.map +1 -0
- package/dist/dashboard/styles.d.ts +7 -0
- package/dist/dashboard/styles.d.ts.map +1 -0
- package/dist/dashboard/styles.js +497 -0
- package/dist/dashboard/styles.js.map +1 -0
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/map-event-bus.d.ts +48 -0
- package/dist/lib/map-event-bus.d.ts.map +1 -0
- package/dist/lib/map-event-bus.js +326 -0
- package/dist/lib/map-event-bus.js.map +1 -0
- package/dist/lib/peter-parker-bridge.d.ts +33 -0
- package/dist/lib/peter-parker-bridge.d.ts.map +1 -0
- package/dist/lib/peter-parker-bridge.js +116 -0
- package/dist/lib/peter-parker-bridge.js.map +1 -0
- package/dist/lib/peter-parker-config.d.ts +13 -0
- package/dist/lib/peter-parker-config.d.ts.map +1 -0
- package/dist/lib/peter-parker-config.js +86 -0
- package/dist/lib/peter-parker-config.js.map +1 -0
- package/dist/lib/service-utils.d.ts.map +1 -1
- package/dist/lib/service-utils.js +33 -17
- package/dist/lib/service-utils.js.map +1 -1
- package/dist/mcp/context-hub-mcp.js +122 -22
- package/dist/mcp/context-hub-mcp.js.map +1 -1
- package/dist/types/map.d.ts +33 -0
- package/dist/types/map.d.ts.map +1 -0
- package/dist/types/map.js +39 -0
- package/dist/types/map.js.map +1 -0
- package/dist/ui/event-dashboard.d.ts +12 -0
- package/dist/ui/event-dashboard.d.ts.map +1 -0
- package/dist/ui/event-dashboard.js +342 -0
- package/dist/ui/event-dashboard.js.map +1 -0
- package/package.json +1 -1
- package/scripts/test-map-eventbus.sh +357 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Peter Parker Command
|
|
3
|
+
*
|
|
4
|
+
* Orchestrator that wraps ralph-tui with model routing and event bridging.
|
|
5
|
+
* Spidey-sense for which model to use per agent role.
|
|
6
|
+
*
|
|
7
|
+
* @purpose CLI command for Peter Parker orchestrator — setup, run, status
|
|
8
|
+
*/
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
import { execSync, spawn } from "child_process";
|
|
11
|
+
import * as fs from "fs";
|
|
12
|
+
import * as path from "path";
|
|
13
|
+
import { writePeterParkerConfig, readCurrentProfile } from "../lib/peter-parker-config.js";
|
|
14
|
+
import { PeterParkerBridge } from "../lib/peter-parker-bridge.js";
|
|
15
|
+
import { getProjectHubUrl } from "../utils/context-hub-port.js";
|
|
16
|
+
function hasRalphTui() {
|
|
17
|
+
try {
|
|
18
|
+
execSync("which ralph-tui", { stdio: "ignore" });
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function getAuthToken(projectRoot) {
|
|
26
|
+
const tokenPath = path.join(projectRoot, ".jfl", "context-hub.token");
|
|
27
|
+
if (fs.existsSync(tokenPath)) {
|
|
28
|
+
return fs.readFileSync(tokenPath, "utf-8").trim();
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
async function setup(projectRoot, profile) {
|
|
33
|
+
const configPath = writePeterParkerConfig(projectRoot, profile);
|
|
34
|
+
console.log(chalk.green(`\n Peter Parker config generated`));
|
|
35
|
+
console.log(chalk.gray(` Profile: ${profile}`));
|
|
36
|
+
console.log(chalk.gray(` Config: ${path.relative(projectRoot, configPath)}`));
|
|
37
|
+
console.log(chalk.gray(`\n Agents: scout, planner, builder (default), reviewer, tester`));
|
|
38
|
+
console.log(chalk.gray(` Each has a fallback agent at next tier up\n`));
|
|
39
|
+
}
|
|
40
|
+
async function run(projectRoot, task) {
|
|
41
|
+
if (!hasRalphTui()) {
|
|
42
|
+
console.log(chalk.yellow("\n ralph-tui is not installed"));
|
|
43
|
+
console.log(chalk.gray(" Install: bun install -g ralph-tui\n"));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const configPath = path.join(projectRoot, ".ralph-tui", "config.toml");
|
|
47
|
+
if (!fs.existsSync(configPath)) {
|
|
48
|
+
console.log(chalk.yellow("\n No Peter Parker config found"));
|
|
49
|
+
console.log(chalk.gray(" Run: jfl peter setup\n"));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const args = ["run", "--listen"];
|
|
53
|
+
let prdPath = null;
|
|
54
|
+
if (task) {
|
|
55
|
+
const ralphDir = path.join(projectRoot, ".ralph-tui");
|
|
56
|
+
if (!fs.existsSync(ralphDir)) {
|
|
57
|
+
fs.mkdirSync(ralphDir, { recursive: true });
|
|
58
|
+
}
|
|
59
|
+
prdPath = path.join(ralphDir, "peter-task.json");
|
|
60
|
+
const titleLine = task.split("\n")[0].slice(0, 80);
|
|
61
|
+
const prd = {
|
|
62
|
+
name: "Peter Parker Task",
|
|
63
|
+
branchName: `ralph/peter-task-${Date.now()}`,
|
|
64
|
+
description: task,
|
|
65
|
+
userStories: [{
|
|
66
|
+
id: "US-001",
|
|
67
|
+
title: titleLine,
|
|
68
|
+
description: task,
|
|
69
|
+
acceptanceCriteria: ["Task completed as described"],
|
|
70
|
+
priority: 1,
|
|
71
|
+
passes: false,
|
|
72
|
+
notes: "",
|
|
73
|
+
dependsOn: [],
|
|
74
|
+
}],
|
|
75
|
+
metadata: { updatedAt: new Date().toISOString() },
|
|
76
|
+
};
|
|
77
|
+
fs.writeFileSync(prdPath, JSON.stringify(prd, null, 2));
|
|
78
|
+
args.push("--prd", prdPath, "--headless");
|
|
79
|
+
}
|
|
80
|
+
console.log(chalk.cyan("\n Starting Peter Parker orchestrator..."));
|
|
81
|
+
console.log(chalk.gray(` ralph-tui ${args.join(" ")}\n`));
|
|
82
|
+
const token = getAuthToken(projectRoot);
|
|
83
|
+
const hubUrl = getProjectHubUrl(projectRoot);
|
|
84
|
+
let bridge = null;
|
|
85
|
+
if (token) {
|
|
86
|
+
bridge = new PeterParkerBridge({
|
|
87
|
+
contextHubUrl: hubUrl,
|
|
88
|
+
authToken: token,
|
|
89
|
+
onEvent: (event) => {
|
|
90
|
+
console.log(chalk.gray(` [MAP] ${event.type}`));
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const env = { ...process.env };
|
|
95
|
+
delete env.CLAUDECODE;
|
|
96
|
+
delete env.CLAUDE_CODE;
|
|
97
|
+
const child = spawn("ralph-tui", args, {
|
|
98
|
+
cwd: projectRoot,
|
|
99
|
+
stdio: "inherit",
|
|
100
|
+
env,
|
|
101
|
+
});
|
|
102
|
+
if (bridge) {
|
|
103
|
+
setTimeout(() => bridge.start(), 1000);
|
|
104
|
+
}
|
|
105
|
+
function cleanup() {
|
|
106
|
+
if (prdPath && fs.existsSync(prdPath)) {
|
|
107
|
+
try {
|
|
108
|
+
fs.unlinkSync(prdPath);
|
|
109
|
+
}
|
|
110
|
+
catch { }
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
child.on("error", (error) => {
|
|
114
|
+
cleanup();
|
|
115
|
+
console.error(chalk.red(`Failed to start ralph-tui: ${error.message}`));
|
|
116
|
+
});
|
|
117
|
+
child.on("exit", (code) => {
|
|
118
|
+
cleanup();
|
|
119
|
+
if (bridge)
|
|
120
|
+
bridge.stop();
|
|
121
|
+
process.exit(code || 0);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
async function status(projectRoot) {
|
|
125
|
+
console.log(chalk.bold("\n Peter Parker Status\n"));
|
|
126
|
+
const profile = readCurrentProfile(projectRoot);
|
|
127
|
+
if (profile) {
|
|
128
|
+
console.log(chalk.gray(" Config profile: ") + chalk.cyan(profile));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log(chalk.yellow(" No config found. Run: jfl peter setup"));
|
|
132
|
+
}
|
|
133
|
+
const token = getAuthToken(projectRoot);
|
|
134
|
+
const hubUrl = getProjectHubUrl(projectRoot);
|
|
135
|
+
if (token) {
|
|
136
|
+
try {
|
|
137
|
+
const params = new URLSearchParams({ pattern: "peter:*", limit: "5" });
|
|
138
|
+
const response = await fetch(`${hubUrl}/api/events?${params}`, {
|
|
139
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
140
|
+
signal: AbortSignal.timeout(2000),
|
|
141
|
+
});
|
|
142
|
+
if (response.ok) {
|
|
143
|
+
const data = await response.json();
|
|
144
|
+
console.log(chalk.gray(` Recent events: ${data.count}`));
|
|
145
|
+
for (const event of data.events) {
|
|
146
|
+
const time = new Date(event.ts).toISOString().replace("T", " ").slice(11, 19);
|
|
147
|
+
console.log(chalk.gray(` [${time}] ${event.type}`));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
console.log(chalk.gray(" Event bus: not reachable"));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(chalk.gray(" Event bus: no auth token"));
|
|
157
|
+
}
|
|
158
|
+
console.log();
|
|
159
|
+
}
|
|
160
|
+
export async function peterCommand(action, options = {}) {
|
|
161
|
+
const projectRoot = process.cwd();
|
|
162
|
+
switch (action) {
|
|
163
|
+
case "setup": {
|
|
164
|
+
let profile = "balanced";
|
|
165
|
+
if (options.cost)
|
|
166
|
+
profile = "cost-optimized";
|
|
167
|
+
if (options.quality)
|
|
168
|
+
profile = "quality-first";
|
|
169
|
+
if (options.balanced)
|
|
170
|
+
profile = "balanced";
|
|
171
|
+
await setup(projectRoot, profile);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
case "run": {
|
|
175
|
+
await run(projectRoot, options.task);
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case "status": {
|
|
179
|
+
await status(projectRoot);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case "dashboard": {
|
|
183
|
+
const { startEventDashboard } = await import("../ui/event-dashboard.js");
|
|
184
|
+
await startEventDashboard();
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
default: {
|
|
188
|
+
console.log(chalk.bold("\n Peter Parker - Model-Routed Agent Orchestrator\n"));
|
|
189
|
+
console.log(chalk.gray(" Commands:"));
|
|
190
|
+
console.log(" jfl peter setup [--cost|--balanced|--quality] Generate agent config");
|
|
191
|
+
console.log(" jfl peter run [--task <task>] Run orchestrator");
|
|
192
|
+
console.log(" jfl peter status Show status + recent events");
|
|
193
|
+
console.log(" jfl peter dashboard Live event stream dashboard");
|
|
194
|
+
console.log();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=peter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peter.js","sourceRoot":"","sources":["../../src/commands/peter.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/ralph.d.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Ralph TUI Command
|
|
3
3
|
*
|
|
4
4
|
* Pass-through to ralph-tui for autonomous task execution.
|
|
5
|
-
*
|
|
5
|
+
* Injects --listen for event bridge when available.
|
|
6
|
+
*
|
|
7
|
+
* @purpose CLI pass-through to ralph-tui with MAP event bridge integration
|
|
6
8
|
*/
|
|
7
9
|
export declare function ralphCommand(args: string[]): Promise<void>;
|
|
8
10
|
export declare function showRalphHelp(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph.d.ts","sourceRoot":"","sources":["../../src/commands/ralph.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ralph.d.ts","sourceRoot":"","sources":["../../src/commands/ralph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmCH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAqBpC"}
|
package/dist/commands/ralph.js
CHANGED
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
* Ralph TUI Command
|
|
3
3
|
*
|
|
4
4
|
* Pass-through to ralph-tui for autonomous task execution.
|
|
5
|
-
*
|
|
5
|
+
* Injects --listen for event bridge when available.
|
|
6
|
+
*
|
|
7
|
+
* @purpose CLI pass-through to ralph-tui with MAP event bridge integration
|
|
6
8
|
*/
|
|
7
9
|
import { spawn, execSync } from "child_process";
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import * as path from "path";
|
|
8
12
|
import chalk from "chalk";
|
|
13
|
+
import { PeterParkerBridge } from "../lib/peter-parker-bridge.js";
|
|
14
|
+
import { getProjectHubUrl } from "../utils/context-hub-port.js";
|
|
9
15
|
function hasRalphTui() {
|
|
10
16
|
try {
|
|
11
17
|
execSync("which ralph-tui", { stdio: "ignore" });
|
|
@@ -24,10 +30,16 @@ function hasBun() {
|
|
|
24
30
|
return false;
|
|
25
31
|
}
|
|
26
32
|
}
|
|
33
|
+
function getAuthToken(projectRoot) {
|
|
34
|
+
const tokenPath = path.join(projectRoot, ".jfl", "context-hub.token");
|
|
35
|
+
if (fs.existsSync(tokenPath)) {
|
|
36
|
+
return fs.readFileSync(tokenPath, "utf-8").trim();
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
27
40
|
export async function ralphCommand(args) {
|
|
28
|
-
// Check if ralph-tui is installed
|
|
29
41
|
if (!hasRalphTui()) {
|
|
30
|
-
console.log(chalk.yellow("\n
|
|
42
|
+
console.log(chalk.yellow("\n ralph-tui is not installed\n"));
|
|
31
43
|
if (!hasBun()) {
|
|
32
44
|
console.log(chalk.gray("ralph-tui requires Bun runtime."));
|
|
33
45
|
console.log(chalk.gray("Install Bun first:\n"));
|
|
@@ -38,8 +50,25 @@ export async function ralphCommand(args) {
|
|
|
38
50
|
console.log(chalk.gray("Or run: jfl update\n"));
|
|
39
51
|
return;
|
|
40
52
|
}
|
|
41
|
-
|
|
42
|
-
const
|
|
53
|
+
const projectRoot = process.cwd();
|
|
54
|
+
const finalArgs = [...args];
|
|
55
|
+
// Inject --listen if running a task and not already set
|
|
56
|
+
const isRunCommand = finalArgs[0] === "run";
|
|
57
|
+
const hasListen = finalArgs.includes("--listen");
|
|
58
|
+
if (isRunCommand && !hasListen) {
|
|
59
|
+
finalArgs.push("--listen");
|
|
60
|
+
}
|
|
61
|
+
// Start event bridge if Context Hub token available
|
|
62
|
+
const token = getAuthToken(projectRoot);
|
|
63
|
+
let bridge = null;
|
|
64
|
+
if (token && isRunCommand) {
|
|
65
|
+
bridge = new PeterParkerBridge({
|
|
66
|
+
contextHubUrl: getProjectHubUrl(projectRoot),
|
|
67
|
+
authToken: token,
|
|
68
|
+
});
|
|
69
|
+
setTimeout(() => bridge.start(), 1000);
|
|
70
|
+
}
|
|
71
|
+
const child = spawn("ralph-tui", finalArgs, {
|
|
43
72
|
stdio: "inherit",
|
|
44
73
|
shell: true,
|
|
45
74
|
});
|
|
@@ -47,6 +76,8 @@ export async function ralphCommand(args) {
|
|
|
47
76
|
console.error(chalk.red(`Failed to start ralph-tui: ${error.message}`));
|
|
48
77
|
});
|
|
49
78
|
child.on("exit", (code) => {
|
|
79
|
+
if (bridge)
|
|
80
|
+
bridge.stop();
|
|
50
81
|
process.exit(code || 0);
|
|
51
82
|
});
|
|
52
83
|
}
|
|
@@ -58,6 +89,10 @@ export function showRalphHelp() {
|
|
|
58
89
|
console.log(" jfl ralph create-prd --chat Create PRD with AI");
|
|
59
90
|
console.log(" jfl ralph setup Initialize in project");
|
|
60
91
|
console.log(" jfl ralph status Show session status");
|
|
92
|
+
console.log(chalk.cyan("\n Peter Parker (model routing):"));
|
|
93
|
+
console.log(" jfl peter setup [--cost|--balanced|--quality]");
|
|
94
|
+
console.log(" jfl peter run [--task <task>]");
|
|
95
|
+
console.log(" jfl peter status");
|
|
61
96
|
console.log(chalk.cyan("\n Shortcuts:"));
|
|
62
97
|
console.log(" jfl ralph run Same as: ralph-tui run");
|
|
63
98
|
console.log(" jfl ralph prime Same as: ralph-tui create-prd --chat");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../src/commands/ralph.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../src/commands/ralph.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ interface SessionOptions {
|
|
|
2
2
|
autoLaunch?: boolean;
|
|
3
3
|
}
|
|
4
4
|
export declare function sessionCommand(options?: SessionOptions): Promise<void>;
|
|
5
|
-
|
|
5
|
+
declare function showGatewayDashboard(): Promise<void>;
|
|
6
|
+
export { showGatewayDashboard };
|
|
6
7
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AA+BA,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAYD,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,iBA2EhE;AAwHD,iBAAe,oBAAoB,kBAyClC;AAiZD,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|