rax-flow 0.1.0
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/dashboard/index.html +420 -0
- package/dist/benchmark.d.ts +10 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +123 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +115 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +8 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +22 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/bridge-adapter-templates.d.ts +4 -0
- package/dist/bridge-adapter-templates.d.ts.map +1 -0
- package/dist/bridge-adapter-templates.js +185 -0
- package/dist/bridge-adapter-templates.js.map +1 -0
- package/dist/bridge-test.d.ts +7 -0
- package/dist/bridge-test.d.ts.map +1 -0
- package/dist/bridge-test.js +89 -0
- package/dist/bridge-test.js.map +1 -0
- package/dist/dashboard.d.ts +4 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +49 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/doctor.d.ts +6 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +70 -0
- package/dist/doctor.js.map +1 -0
- package/dist/evolve.d.ts +7 -0
- package/dist/evolve.d.ts.map +1 -0
- package/dist/evolve.js +48 -0
- package/dist/evolve.js.map +1 -0
- package/dist/host-init-templates.d.ts +16 -0
- package/dist/host-init-templates.d.ts.map +1 -0
- package/dist/host-init-templates.js +119 -0
- package/dist/host-init-templates.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/init-host.d.ts +10 -0
- package/dist/init-host.d.ts.map +1 -0
- package/dist/init-host.js +232 -0
- package/dist/init-host.js.map +1 -0
- package/dist/install.d.ts +8 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +99 -0
- package/dist/install.js.map +1 -0
- package/dist/run.d.ts +16 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +238 -0
- package/dist/run.js.map +1 -0
- package/dist/styles.d.ts +12 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +12 -0
- package/dist/styles.js.map +1 -0
- package/dist/vendor-manifests.d.ts +22 -0
- package/dist/vendor-manifests.d.ts.map +1 -0
- package/dist/vendor-manifests.js +94 -0
- package/dist/vendor-manifests.js.map +1 -0
- package/dist/ws-relay.d.ts +12 -0
- package/dist/ws-relay.d.ts.map +1 -0
- package/dist/ws-relay.js +148 -0
- package/dist/ws-relay.js.map +1 -0
- package/package.json +28 -0
- package/src/benchmark.ts +156 -0
- package/src/bin.ts +127 -0
- package/src/bootstrap.ts +36 -0
- package/src/bridge-adapter-templates.ts +181 -0
- package/src/bridge-test.ts +107 -0
- package/src/dashboard.ts +51 -0
- package/src/doctor.ts +92 -0
- package/src/evolve.ts +74 -0
- package/src/host-init-templates.ts +134 -0
- package/src/index.ts +10 -0
- package/src/init-host.ts +285 -0
- package/src/install.ts +118 -0
- package/src/run.ts +317 -0
- package/src/styles.ts +12 -0
- package/src/vendor-manifests.ts +113 -0
- package/src/ws-relay.ts +156 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evolve.d.ts","sourceRoot":"","sources":["../src/evolve.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAcD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAoD3E"}
|
package/dist/evolve.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { readFile, readdir } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { c } from "./styles.js";
|
|
4
|
+
export async function showEvolution(options) {
|
|
5
|
+
const evolutionDir = path.join(options.cwd, ".rax-flow", "evolutions");
|
|
6
|
+
try {
|
|
7
|
+
const files = await readdir(evolutionDir);
|
|
8
|
+
const blueprintFiles = files.filter(f => f.startsWith("blueprint_") && f.endsWith(".json"));
|
|
9
|
+
if (blueprintFiles.length === 0) {
|
|
10
|
+
console.log(c.yellow("\nNo evolutions recorded yet. Run more tasks to trigger Darwinian mutations."));
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
const blueprints = [];
|
|
14
|
+
for (const file of blueprintFiles) {
|
|
15
|
+
const raw = await readFile(path.join(evolutionDir, file), "utf8");
|
|
16
|
+
blueprints.push(JSON.parse(raw));
|
|
17
|
+
}
|
|
18
|
+
// Sort by creation date
|
|
19
|
+
blueprints.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
20
|
+
console.log(c.bold(c.magenta(`\n\n--- [GENETIC LINEAGE: RAX-FLOW] ---`)));
|
|
21
|
+
console.log(c.gray(`Found ${blueprints.length} evolutionary jumps.\n`));
|
|
22
|
+
blueprints.forEach((bp, i) => {
|
|
23
|
+
const connector = i === blueprints.length - 1 ? "└" : "├";
|
|
24
|
+
const branch = i === 0 ? "" : ` ${connector}── `;
|
|
25
|
+
const scoreColor = bp.fitnessScore >= 0.8 ? c.green : (bp.fitnessScore >= 0.6 ? c.yellow : c.red);
|
|
26
|
+
console.log(`${branch}${c.bold(bp.id)} ${c.gray(`v${bp.version}`)}`);
|
|
27
|
+
console.log(` ${c.gray("Type:")} ${c.cyan(bp.mutationType)}`);
|
|
28
|
+
console.log(` ${c.gray("Fitness:")} ${scoreColor(bp.fitnessScore.toFixed(2))}`);
|
|
29
|
+
if (bp.metadata?.reason || bp.metadata?.message) {
|
|
30
|
+
console.log(` ${c.gray("Note:")} ${c.white(bp.metadata.reason || bp.metadata.message || "")}`);
|
|
31
|
+
}
|
|
32
|
+
if (i < blueprints.length - 1) {
|
|
33
|
+
console.log(` ${c.gray("│")}`);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
console.log(c.bold(c.cyan(`\nSurvival of the fittest: Blueprint ${blueprints[blueprints.length - 1]?.id} is currently dominant.`)));
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error.code === "ENOENT") {
|
|
41
|
+
console.log(c.yellow("\nNo evolutions directory found. Run tasks first."));
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
console.error(c.red(`Failed to read evolution history: ${error}`));
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=evolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evolve.js","sourceRoot":"","sources":["../src/evolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type HostTarget = "claude-code" | "codex" | "opencode" | "kilo" | "generic";
|
|
2
|
+
export interface HostTemplate {
|
|
3
|
+
id: HostTarget;
|
|
4
|
+
title: string;
|
|
5
|
+
envHint: string;
|
|
6
|
+
chatHint: string;
|
|
7
|
+
bootstrapPromptBase: string[];
|
|
8
|
+
quickCommands: string[];
|
|
9
|
+
autoInjectMode: "native" | "scripted" | "manual";
|
|
10
|
+
sessionEntryExamples: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare const HOST_TEMPLATES: Record<HostTarget, HostTemplate>;
|
|
13
|
+
export declare function parseHostTarget(value: string | undefined): HostTarget;
|
|
14
|
+
export declare function listHostTargets(): HostTarget[];
|
|
15
|
+
export declare function buildBootstrapPrompt(target: HostTarget, task?: string): string;
|
|
16
|
+
//# sourceMappingURL=host-init-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-init-templates.d.ts","sourceRoot":"","sources":["../src/host-init-templates.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACjD,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAiG3D,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAIrE;AAED,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAE9C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAW9E"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export const HOST_TEMPLATES = {
|
|
2
|
+
"claude-code": {
|
|
3
|
+
id: "claude-code",
|
|
4
|
+
title: "Claude Code",
|
|
5
|
+
envHint: "Export RAX_HOST_BRIDGE_COMMAND before starting Claude Code session.",
|
|
6
|
+
chatHint: "Paste BOOTSTRAP_PROMPT.txt at the beginning of the chat.",
|
|
7
|
+
bootstrapPromptBase: [
|
|
8
|
+
"RAX-FLOW bootstrap (Claude Code)",
|
|
9
|
+
"- Enable host-native orchestration.",
|
|
10
|
+
"- Route generation through the configured host bridge.",
|
|
11
|
+
"- Keep structured JSON outputs for orchestration steps.",
|
|
12
|
+
"- Execute Verify -> Fix loop when schema validation fails.",
|
|
13
|
+
"- Report confidence, risk flags, and logs for each step."
|
|
14
|
+
],
|
|
15
|
+
quickCommands: ["npx rax-flow doctor", "npx rax-flow run --prompt \"Build feature X\" --stream"],
|
|
16
|
+
autoInjectMode: "scripted",
|
|
17
|
+
sessionEntryExamples: [
|
|
18
|
+
"claude-code chat --message-file .rax-flow/host-init/claude-code/BOOTSTRAP_PROMPT.txt",
|
|
19
|
+
"claude-code (open session, then paste BOOTSTRAP_PROMPT.txt)"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
codex: {
|
|
23
|
+
id: "codex",
|
|
24
|
+
title: "Codex",
|
|
25
|
+
envHint: "Set RAX_HOST_BRIDGE_COMMAND in the shell running Codex.",
|
|
26
|
+
chatHint: "Send BOOTSTRAP_PROMPT.txt as first instruction in session.",
|
|
27
|
+
bootstrapPromptBase: [
|
|
28
|
+
"RAX-FLOW bootstrap (Codex)",
|
|
29
|
+
"- Use host-native model execution through the host bridge.",
|
|
30
|
+
"- Produce strict structured outputs for all agent steps.",
|
|
31
|
+
"- Apply Verify -> Fix until valid schema or retry cap.",
|
|
32
|
+
"- Include confidence and risks in every final step."
|
|
33
|
+
],
|
|
34
|
+
quickCommands: ["npx rax-flow doctor", "npx rax-flow run --prompt \"Build feature X\" --stream"],
|
|
35
|
+
autoInjectMode: "scripted",
|
|
36
|
+
sessionEntryExamples: [
|
|
37
|
+
"codex chat --message-file .rax-flow/host-init/codex/BOOTSTRAP_PROMPT.txt",
|
|
38
|
+
"codex (open session, then paste BOOTSTRAP_PROMPT.txt)"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
opencode: {
|
|
42
|
+
id: "opencode",
|
|
43
|
+
title: "OpenCode",
|
|
44
|
+
envHint: "Configure RAX_HOST_BRIDGE_COMMAND in OpenCode terminal/runtime env.",
|
|
45
|
+
chatHint: "Paste BOOTSTRAP_PROMPT.txt before requesting implementation.",
|
|
46
|
+
bootstrapPromptBase: [
|
|
47
|
+
"RAX-FLOW bootstrap (OpenCode)",
|
|
48
|
+
"- Activate host bridge orchestration mode.",
|
|
49
|
+
"- Keep responses compact but structured for agent pipeline.",
|
|
50
|
+
"- Trigger fix cycles on validation failures automatically.",
|
|
51
|
+
"- Emit step logs and confidence scores."
|
|
52
|
+
],
|
|
53
|
+
quickCommands: ["npx rax-flow doctor", "npx rax-flow run --prompt \"Build feature X\" --stream"],
|
|
54
|
+
autoInjectMode: "manual",
|
|
55
|
+
sessionEntryExamples: [
|
|
56
|
+
"opencode chat --message-file .rax-flow/host-init/opencode/BOOTSTRAP_PROMPT.txt",
|
|
57
|
+
"opencode (open session, then paste BOOTSTRAP_PROMPT.txt)"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
kilo: {
|
|
61
|
+
id: "kilo",
|
|
62
|
+
title: "Kilo Code",
|
|
63
|
+
envHint: "Set RAX_HOST_BRIDGE_COMMAND in Kilo launch environment.",
|
|
64
|
+
chatHint: "Paste BOOTSTRAP_PROMPT.txt as initialization message.",
|
|
65
|
+
bootstrapPromptBase: [
|
|
66
|
+
"RAX-FLOW bootstrap (Kilo)",
|
|
67
|
+
"- Run in host-native orchestration mode.",
|
|
68
|
+
"- Enforce structured output contract for each stage.",
|
|
69
|
+
"- Apply Verify -> Fix and escalate when confidence is low.",
|
|
70
|
+
"- Return actionable logs and risk flags."
|
|
71
|
+
],
|
|
72
|
+
quickCommands: ["npx rax-flow doctor", "npx rax-flow run --prompt \"Build feature X\" --stream"],
|
|
73
|
+
autoInjectMode: "manual",
|
|
74
|
+
sessionEntryExamples: [
|
|
75
|
+
"kilo chat --message-file .rax-flow/host-init/kilo/BOOTSTRAP_PROMPT.txt",
|
|
76
|
+
"kilo (open session, then paste BOOTSTRAP_PROMPT.txt)"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
generic: {
|
|
80
|
+
id: "generic",
|
|
81
|
+
title: "Generic Host",
|
|
82
|
+
envHint: "Provide a bridge command through RAX_HOST_BRIDGE_COMMAND.",
|
|
83
|
+
chatHint: "Paste BOOTSTRAP_PROMPT.txt at session start.",
|
|
84
|
+
bootstrapPromptBase: [
|
|
85
|
+
"RAX-FLOW bootstrap (Generic)",
|
|
86
|
+
"- Enable orchestration through host bridge.",
|
|
87
|
+
"- Return strict JSON for each orchestration step.",
|
|
88
|
+
"- Retry/fix invalid outputs automatically.",
|
|
89
|
+
"- Report confidence, risks, and logs."
|
|
90
|
+
],
|
|
91
|
+
quickCommands: ["npx rax-flow doctor", "npx rax-flow run --prompt \"Build feature X\" --stream"],
|
|
92
|
+
autoInjectMode: "manual",
|
|
93
|
+
sessionEntryExamples: [
|
|
94
|
+
"your-host-cli chat --message-file .rax-flow/host-init/generic/BOOTSTRAP_PROMPT.txt",
|
|
95
|
+
"open session, then paste BOOTSTRAP_PROMPT.txt"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
export function parseHostTarget(value) {
|
|
100
|
+
if (!value)
|
|
101
|
+
return "generic";
|
|
102
|
+
if (value in HOST_TEMPLATES)
|
|
103
|
+
return value;
|
|
104
|
+
return "generic";
|
|
105
|
+
}
|
|
106
|
+
export function listHostTargets() {
|
|
107
|
+
return Object.keys(HOST_TEMPLATES);
|
|
108
|
+
}
|
|
109
|
+
export function buildBootstrapPrompt(target, task) {
|
|
110
|
+
const template = HOST_TEMPLATES[target];
|
|
111
|
+
const lines = [...template.bootstrapPromptBase];
|
|
112
|
+
if (task && task.trim().length > 0) {
|
|
113
|
+
lines.push(`- Task context: ${task.trim()}`);
|
|
114
|
+
lines.push("- Keep orchestration aligned with this task context unless user changes scope.");
|
|
115
|
+
}
|
|
116
|
+
lines.push("- If bridge call fails, report issue clearly and keep orchestration state.");
|
|
117
|
+
return lines.join("\n");
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=host-init-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-init-templates.js","sourceRoot":"","sources":["../src/host-init-templates.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./install.js";
|
|
2
|
+
export * from "./run.js";
|
|
3
|
+
export * from "./benchmark.js";
|
|
4
|
+
export * from "./doctor.js";
|
|
5
|
+
export * from "./bridge-test.js";
|
|
6
|
+
export * from "./init-host.js";
|
|
7
|
+
export * from "./bootstrap.js";
|
|
8
|
+
export * from "./host-init-templates.js";
|
|
9
|
+
export * from "./bridge-adapter-templates.js";
|
|
10
|
+
export * from "./vendor-manifests.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./install.js";
|
|
2
|
+
export * from "./run.js";
|
|
3
|
+
export * from "./benchmark.js";
|
|
4
|
+
export * from "./doctor.js";
|
|
5
|
+
export * from "./bridge-test.js";
|
|
6
|
+
export * from "./init-host.js";
|
|
7
|
+
export * from "./bootstrap.js";
|
|
8
|
+
export * from "./host-init-templates.js";
|
|
9
|
+
export * from "./bridge-adapter-templates.js";
|
|
10
|
+
export * from "./vendor-manifests.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-host.d.ts","sourceRoot":"","sources":["../src/init-host.ts"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAsOD,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3E"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { c } from "./styles.js";
|
|
4
|
+
import { HOST_TEMPLATES, buildBootstrapPrompt, listHostTargets, parseHostTarget } from "./host-init-templates.js";
|
|
5
|
+
import { generateVendorManifest, vendorManifestFilename } from "./vendor-manifests.js";
|
|
6
|
+
import { bridgeAdapterFilename, renderBridgeAdapter } from "./bridge-adapter-templates.js";
|
|
7
|
+
function bridgeCommand(adapterFile) {
|
|
8
|
+
return `node ${adapterFile}`;
|
|
9
|
+
}
|
|
10
|
+
function renderSetupScript(command) {
|
|
11
|
+
return [
|
|
12
|
+
"#!/usr/bin/env bash",
|
|
13
|
+
"set -e",
|
|
14
|
+
`export RAX_HOST_BRIDGE_COMMAND=\"${command}\"`,
|
|
15
|
+
'echo "RAX_HOST_BRIDGE_COMMAND configured"',
|
|
16
|
+
"echo \"Run: npx rax-flow doctor\"",
|
|
17
|
+
"echo \"Run: npx rax-flow run --prompt 'Build feature X' --stream\""
|
|
18
|
+
].join("\n");
|
|
19
|
+
}
|
|
20
|
+
function renderInstructions(params) {
|
|
21
|
+
const taskSection = params.task?.trim()
|
|
22
|
+
? ["", "## Task context", `- ${params.task.trim()}`, "- Embedded into BOOTSTRAP_PROMPT.txt"]
|
|
23
|
+
: [];
|
|
24
|
+
return [
|
|
25
|
+
`# ${params.title} - Non-UI Initialization`,
|
|
26
|
+
"",
|
|
27
|
+
"## 1) Configure bridge command",
|
|
28
|
+
`- ${params.envHint}`,
|
|
29
|
+
`- Command: \`${params.command}\``,
|
|
30
|
+
`- Bridge adapter scaffold: \`${params.adapterFile}\``,
|
|
31
|
+
"- Replace callHostModel() with your editor runtime model call implementation.",
|
|
32
|
+
"- Configure bridge runtime values in `bridge-runtime-config.json`.",
|
|
33
|
+
"- Use `bridge-smoke-test.json` to validate structured response mapping.",
|
|
34
|
+
"",
|
|
35
|
+
"## 2) Chat bootstrap",
|
|
36
|
+
`- ${params.chatHint}`,
|
|
37
|
+
"- Use BOOTSTRAP_PROMPT.txt content.",
|
|
38
|
+
...taskSection,
|
|
39
|
+
"",
|
|
40
|
+
"## 3) Session launch patterns",
|
|
41
|
+
`- Auto inject mode: \`${params.autoInjectMode}\``,
|
|
42
|
+
...params.sessionEntryExamples.map((line) => `- \`${line}\``),
|
|
43
|
+
"",
|
|
44
|
+
"## 4) Validate",
|
|
45
|
+
...params.quickCommands.map((cmd) => `- \`${cmd}\``)
|
|
46
|
+
].join("\n");
|
|
47
|
+
}
|
|
48
|
+
function renderSessionStartScript(target, sessionEntryExamples) {
|
|
49
|
+
const lines = [
|
|
50
|
+
"#!/usr/bin/env bash",
|
|
51
|
+
"set -e",
|
|
52
|
+
`echo \"RAX-FLOW session starter (${target})\"`,
|
|
53
|
+
"echo \"Use one of these commands (adapt to your local CLI):\""
|
|
54
|
+
];
|
|
55
|
+
for (const entry of sessionEntryExamples) {
|
|
56
|
+
lines.push(`echo \"- ${entry}\"`);
|
|
57
|
+
}
|
|
58
|
+
lines.push("echo \"If unsupported, copy/paste BOOTSTRAP_PROMPT.txt manually.\"");
|
|
59
|
+
return lines.join("\n");
|
|
60
|
+
}
|
|
61
|
+
function renderRuntimeConfig(target, task) {
|
|
62
|
+
const payload = {
|
|
63
|
+
version: 1,
|
|
64
|
+
vendor: target,
|
|
65
|
+
model: "host-managed",
|
|
66
|
+
endpoint: null,
|
|
67
|
+
authEnv: null,
|
|
68
|
+
structuredMode: "json",
|
|
69
|
+
timeoutMs: 20000,
|
|
70
|
+
taskContext: task?.trim() || null,
|
|
71
|
+
notes: [
|
|
72
|
+
"Fill endpoint/auth fields if your host runtime requires external transport.",
|
|
73
|
+
"If host runtime is in-process, keep endpoint null and call runtime SDK directly in bridge adapter."
|
|
74
|
+
]
|
|
75
|
+
};
|
|
76
|
+
return JSON.stringify(payload, null, 2);
|
|
77
|
+
}
|
|
78
|
+
function renderBridgeSmokeTest(target) {
|
|
79
|
+
const payload = {
|
|
80
|
+
version: 1,
|
|
81
|
+
action: "callStructured",
|
|
82
|
+
prompt: "Smoke test structured output",
|
|
83
|
+
schema: {
|
|
84
|
+
type: "object",
|
|
85
|
+
required: ["agent", "success", "confidence", "risks", "logs", "data"],
|
|
86
|
+
properties: {
|
|
87
|
+
agent: { type: "string" },
|
|
88
|
+
success: { type: "boolean" },
|
|
89
|
+
confidence: { type: "number" },
|
|
90
|
+
risks: { type: "array" },
|
|
91
|
+
logs: { type: "array" },
|
|
92
|
+
data: { type: "object" }
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
options: { model: "host-managed", temperature: 0, maxTokens: 256 },
|
|
96
|
+
meta: { target }
|
|
97
|
+
};
|
|
98
|
+
return JSON.stringify(payload, null, 2);
|
|
99
|
+
}
|
|
100
|
+
function renderManifest(params) {
|
|
101
|
+
return {
|
|
102
|
+
version: 2,
|
|
103
|
+
target: params.target,
|
|
104
|
+
title: params.title,
|
|
105
|
+
autoInjectMode: params.autoInjectMode,
|
|
106
|
+
bridgeCommand: params.bridgeCommand,
|
|
107
|
+
quickCommands: params.quickCommands,
|
|
108
|
+
sessionEntryExamples: params.sessionEntryExamples,
|
|
109
|
+
task: params.task ?? null,
|
|
110
|
+
files: {
|
|
111
|
+
bootstrapPrompt: params.bootstrapPromptFile,
|
|
112
|
+
instructions: params.instructionsFile,
|
|
113
|
+
bridgeAdapter: params.adapterFile,
|
|
114
|
+
bridgeRuntimeConfig: params.runtimeConfigFile,
|
|
115
|
+
bridgeSmokeTest: params.smokeTestFile,
|
|
116
|
+
vendorManifest: params.vendorFile
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
async function generateForTarget(cwd, target, task) {
|
|
121
|
+
const template = HOST_TEMPLATES[target];
|
|
122
|
+
const baseDir = path.join(cwd, ".rax-flow", "host-init", target);
|
|
123
|
+
const adapterFile = path.join(baseDir, bridgeAdapterFilename(target));
|
|
124
|
+
const command = bridgeCommand(adapterFile);
|
|
125
|
+
await mkdir(baseDir, { recursive: true });
|
|
126
|
+
const setupSh = renderSetupScript(command);
|
|
127
|
+
const sessionStartSh = renderSessionStartScript(target, template.sessionEntryExamples);
|
|
128
|
+
const bootstrapPrompt = buildBootstrapPrompt(target, task);
|
|
129
|
+
const bridgeAdapter = renderBridgeAdapter(target);
|
|
130
|
+
const instructions = renderInstructions({
|
|
131
|
+
title: template.title,
|
|
132
|
+
envHint: template.envHint,
|
|
133
|
+
chatHint: template.chatHint,
|
|
134
|
+
command,
|
|
135
|
+
adapterFile,
|
|
136
|
+
quickCommands: template.quickCommands,
|
|
137
|
+
sessionEntryExamples: template.sessionEntryExamples,
|
|
138
|
+
autoInjectMode: template.autoInjectMode,
|
|
139
|
+
task
|
|
140
|
+
});
|
|
141
|
+
const bootstrapPromptFile = path.join(baseDir, "BOOTSTRAP_PROMPT.txt");
|
|
142
|
+
const instructionsFile = path.join(baseDir, "INSTRUCTIONS.md");
|
|
143
|
+
const runtimeConfigFile = path.join(baseDir, "bridge-runtime-config.json");
|
|
144
|
+
const smokeTestFile = path.join(baseDir, "bridge-smoke-test.json");
|
|
145
|
+
const vendorFile = vendorManifestFilename(target);
|
|
146
|
+
const manifestObj = renderManifest({
|
|
147
|
+
target,
|
|
148
|
+
title: template.title,
|
|
149
|
+
autoInjectMode: template.autoInjectMode,
|
|
150
|
+
bridgeCommand: command,
|
|
151
|
+
quickCommands: template.quickCommands,
|
|
152
|
+
sessionEntryExamples: template.sessionEntryExamples,
|
|
153
|
+
bootstrapPromptFile,
|
|
154
|
+
instructionsFile,
|
|
155
|
+
adapterFile,
|
|
156
|
+
runtimeConfigFile,
|
|
157
|
+
smokeTestFile,
|
|
158
|
+
vendorFile: path.join(baseDir, vendorFile),
|
|
159
|
+
task
|
|
160
|
+
});
|
|
161
|
+
const manifest = JSON.stringify(manifestObj, null, 2);
|
|
162
|
+
const vendorManifest = generateVendorManifest(target, baseDir, manifestObj);
|
|
163
|
+
await writeFile(path.join(baseDir, "setup-bridge.sh"), `${setupSh}\n`, "utf8");
|
|
164
|
+
await writeFile(path.join(baseDir, "start-session.sh"), `${sessionStartSh}\n`, "utf8");
|
|
165
|
+
await writeFile(adapterFile, `${bridgeAdapter}\n`, "utf8");
|
|
166
|
+
await writeFile(runtimeConfigFile, `${renderRuntimeConfig(target, task)}\n`, "utf8");
|
|
167
|
+
await writeFile(smokeTestFile, `${renderBridgeSmokeTest(target)}\n`, "utf8");
|
|
168
|
+
await writeFile(bootstrapPromptFile, `${bootstrapPrompt}\n`, "utf8");
|
|
169
|
+
await writeFile(instructionsFile, `${instructions}\n`, "utf8");
|
|
170
|
+
await writeFile(path.join(baseDir, "host-manifest.json"), `${manifest}\n`, "utf8");
|
|
171
|
+
await writeFile(path.join(baseDir, vendorFile), `${JSON.stringify(vendorManifest, null, 2)}\n`, "utf8");
|
|
172
|
+
return { dir: baseDir, bootstrapPrompt, quickCommands: template.quickCommands };
|
|
173
|
+
}
|
|
174
|
+
async function generateSummary(cwd, generated, task) {
|
|
175
|
+
const summaryFile = path.join(cwd, ".rax-flow", "host-init", "INIT_SUMMARY.md");
|
|
176
|
+
const body = [
|
|
177
|
+
"# RAX-FLOW Host Init Summary",
|
|
178
|
+
"",
|
|
179
|
+
...(task?.trim() ? ["Task context:", `- ${task.trim()}`, ""] : []),
|
|
180
|
+
"Generated targets:",
|
|
181
|
+
...generated.map((item) => `- ${item.target}: \`${item.dir}\``),
|
|
182
|
+
"",
|
|
183
|
+
"Recommended sequence:",
|
|
184
|
+
"1. Review bridge-adapter-*.mjs and wire host runtime in callHostModel",
|
|
185
|
+
"2. Source setup-bridge.sh for your target",
|
|
186
|
+
"3. Run start-session.sh for launch hints",
|
|
187
|
+
"4. Paste BOOTSTRAP_PROMPT.txt into chat start",
|
|
188
|
+
"5. Run `npx rax-flow doctor`",
|
|
189
|
+
"6. Run `npx rax-flow run --prompt \"Build feature X\" --stream`"
|
|
190
|
+
].join("\n");
|
|
191
|
+
await writeFile(summaryFile, `${body}\n`, "utf8");
|
|
192
|
+
return summaryFile;
|
|
193
|
+
}
|
|
194
|
+
export async function runInitHost(options) {
|
|
195
|
+
const targets = options.all ? listHostTargets() : [parseHostTarget(options.target)];
|
|
196
|
+
if (options.printOnly) {
|
|
197
|
+
for (const target of targets) {
|
|
198
|
+
const template = HOST_TEMPLATES[target];
|
|
199
|
+
const bootstrapPrompt = buildBootstrapPrompt(target, options.task);
|
|
200
|
+
console.log(c.blue(`RAX-FLOW Host Init (print) - ${target}`));
|
|
201
|
+
console.log(bootstrapPrompt);
|
|
202
|
+
console.log("quick commands:");
|
|
203
|
+
template.quickCommands.forEach((cmd) => console.log(`- ${cmd}`));
|
|
204
|
+
console.log("session launch patterns:");
|
|
205
|
+
template.sessionEntryExamples.forEach((line) => console.log(`- ${line}`));
|
|
206
|
+
}
|
|
207
|
+
return 0;
|
|
208
|
+
}
|
|
209
|
+
const generated = [];
|
|
210
|
+
for (const target of targets) {
|
|
211
|
+
const out = await generateForTarget(options.cwd, target, options.task);
|
|
212
|
+
generated.push({ target, dir: out.dir });
|
|
213
|
+
console.log(c.blue("RAX-FLOW Host Init"));
|
|
214
|
+
console.log(`target: ${target}`);
|
|
215
|
+
if (options.task?.trim()) {
|
|
216
|
+
console.log(`task context: ${options.task.trim()}`);
|
|
217
|
+
}
|
|
218
|
+
console.log(c.green(`Generated ${path.join(out.dir, "INSTRUCTIONS.md")}`));
|
|
219
|
+
console.log(c.green(`Generated ${path.join(out.dir, "BOOTSTRAP_PROMPT.txt")}`));
|
|
220
|
+
console.log(c.green(`Generated ${path.join(out.dir, "setup-bridge.sh")}`));
|
|
221
|
+
console.log(c.green(`Generated ${path.join(out.dir, "start-session.sh")}`));
|
|
222
|
+
console.log(c.green(`Generated ${path.join(out.dir, bridgeAdapterFilename(target))}`));
|
|
223
|
+
console.log(c.green(`Generated ${path.join(out.dir, "bridge-runtime-config.json")}`));
|
|
224
|
+
console.log(c.green(`Generated ${path.join(out.dir, "bridge-smoke-test.json")}`));
|
|
225
|
+
console.log(c.green(`Generated ${path.join(out.dir, "host-manifest.json")}`));
|
|
226
|
+
console.log(c.green(`Generated ${path.join(out.dir, vendorManifestFilename(target))}`));
|
|
227
|
+
}
|
|
228
|
+
const summary = await generateSummary(options.cwd, generated, options.task);
|
|
229
|
+
console.log(c.green(`Generated ${summary}`));
|
|
230
|
+
return 0;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=init-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-host.js","sourceRoot":"","sources":["../src/init-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAoED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAqCzE"}
|
package/dist/install.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { execSync } from "node:child_process";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import { c } from "./styles.js";
|
|
6
|
+
async function detectBridges() {
|
|
7
|
+
const candidates = [
|
|
8
|
+
{ id: "claude-code", cmd: "claude-code --version" },
|
|
9
|
+
{ id: "codex", cmd: "codex --version" },
|
|
10
|
+
{ id: "opencode", cmd: "opencode --version" },
|
|
11
|
+
{ id: "kilo", cmd: "kilo --version" }
|
|
12
|
+
];
|
|
13
|
+
const detected = [];
|
|
14
|
+
for (const tool of candidates) {
|
|
15
|
+
try {
|
|
16
|
+
execSync(tool.cmd, { stdio: "ignore" });
|
|
17
|
+
detected.push(tool.id);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// Not in path
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return detected;
|
|
24
|
+
}
|
|
25
|
+
async function ensureRaxrc(targetDir, detectedBridge) {
|
|
26
|
+
const file = path.join(targetDir, ".raxrc");
|
|
27
|
+
const body = {
|
|
28
|
+
version: 1,
|
|
29
|
+
defaultProvider: detectedBridge ? "host" : "openai",
|
|
30
|
+
strongProvider: "openai",
|
|
31
|
+
providers: {
|
|
32
|
+
host: {
|
|
33
|
+
model: detectedBridge ?? "host-managed",
|
|
34
|
+
mode: "auto",
|
|
35
|
+
bridgeCommand: detectedBridge ?? "claude-code", // Store direct command if found
|
|
36
|
+
bridgeCommandEnv: "RAX_HOST_BRIDGE_COMMAND"
|
|
37
|
+
},
|
|
38
|
+
openai: { model: "gpt-4o", apiKeyEnv: "OPENAI_API_KEY" },
|
|
39
|
+
claude: { model: "claude-3-5-sonnet-latest", apiKeyEnv: "ANTHROPIC_API_KEY" }
|
|
40
|
+
},
|
|
41
|
+
privacyMode: true,
|
|
42
|
+
verifyFixLoops: 3
|
|
43
|
+
};
|
|
44
|
+
await writeFile(file, `${JSON.stringify(body, null, 2)}\n`, "utf8");
|
|
45
|
+
return file;
|
|
46
|
+
}
|
|
47
|
+
async function ensureExampleWorkflow(targetDir) {
|
|
48
|
+
const workflowsDir = path.join(targetDir, ".rax-flow", "workflows");
|
|
49
|
+
await mkdir(workflowsDir, { recursive: true });
|
|
50
|
+
const file = path.join(workflowsDir, "fullstack-feature.json");
|
|
51
|
+
const sample = {
|
|
52
|
+
id: "fullstack-feature",
|
|
53
|
+
nodes: [
|
|
54
|
+
{ id: "analyze", agent: "IntentClassifierAgent", dependsOn: [] },
|
|
55
|
+
{ id: "spec", agent: "SpecAgent", dependsOn: ["analyze"] },
|
|
56
|
+
{ id: "implement", agent: "CodeGeneratorAgent", dependsOn: ["spec"] },
|
|
57
|
+
{ id: "verify", agent: "ValidatorAgent", dependsOn: ["implement"] }
|
|
58
|
+
]
|
|
59
|
+
};
|
|
60
|
+
await writeFile(file, `${JSON.stringify(sample, null, 2)}\n`, "utf8");
|
|
61
|
+
return file;
|
|
62
|
+
}
|
|
63
|
+
async function validateEnvironment() {
|
|
64
|
+
const optional = ["OPENAI_API_KEY", "RAX_HOST_BRIDGE_COMMAND"];
|
|
65
|
+
const missing = optional.filter((k) => !process.env[k]);
|
|
66
|
+
return { ok: true, missing };
|
|
67
|
+
}
|
|
68
|
+
export async function runInstall(options) {
|
|
69
|
+
console.log(c.blue("RAX-FLOW Installer - Professional Setup"));
|
|
70
|
+
console.log("- Scanning for local coding tools...");
|
|
71
|
+
const detected = await detectBridges();
|
|
72
|
+
if (detected.length > 0) {
|
|
73
|
+
console.log(c.green(` [OK] Detected: ${detected.join(", ")}`));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(c.yellow(" [!] No local coding tools (Claude Code/Codex) detected in PATH."));
|
|
77
|
+
}
|
|
78
|
+
const primaryBridge = detected[0];
|
|
79
|
+
const raxrc = await ensureRaxrc(options.cwd, primaryBridge);
|
|
80
|
+
const workflow = await ensureExampleWorkflow(options.cwd);
|
|
81
|
+
console.log(c.green(`- Project Initialized: ${raxrc}`));
|
|
82
|
+
console.log(c.green(`- Default Blueprint Created: ${workflow}`));
|
|
83
|
+
const env = await validateEnvironment();
|
|
84
|
+
if (env.missing.length > 0) {
|
|
85
|
+
console.log(c.yellow(`- Note: Optional env vars missing: ${env.missing.join(", ")}`));
|
|
86
|
+
}
|
|
87
|
+
const localHome = path.join(os.homedir(), ".rax-flow");
|
|
88
|
+
await mkdir(localHome, { recursive: true });
|
|
89
|
+
console.log("\n" + c.blue("--- Zero-Error Compliance Checklist ---"));
|
|
90
|
+
console.log(c.green("✓ Host Bridge Architecture: Scalable & Compliant"));
|
|
91
|
+
console.log(c.green("✓ Dynamic Planner: Enabled (Self-Optimizing)"));
|
|
92
|
+
console.log(c.green("✓ Long-term Memory: Configured"));
|
|
93
|
+
console.log("\n" + c.yellow("Next Logical Steps:"));
|
|
94
|
+
console.log("1. Run `rax-flow doctor` to verify bridge connectivity.");
|
|
95
|
+
console.log("2. Launch a task: `rax-flow run --prompt \"Implement feature Y\" --stream`.");
|
|
96
|
+
console.log("\n" + c.green("RAX-FLOW is now the operational backbone of your CLI workflow."));
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|