@forwardimpact/guide
Advanced tools
+73
-5
@@ -8,4 +8,4 @@ #!/usr/bin/env node | ||
| * Usage: | ||
| * bunx fit-guide | ||
| * echo "Tell me about the company" | bunx fit-guide | ||
| * npx fit-guide | ||
| * echo "Tell me about the company" | npx fit-guide | ||
| */ | ||
@@ -28,3 +28,3 @@ | ||
| --data=<path> Path to framework data directory | ||
| --init Generate secrets and update .env | ||
| --init Generate secrets, .env, and config/config.json | ||
| --help, -h Show this help message | ||
@@ -72,5 +72,73 @@ --version, -v Show version | ||
| // Assign unique ports so services don't all bind to the default 3000 | ||
| const serviceUrls = { | ||
| SERVICE_AGENT_URL: "grpc://localhost:3002", | ||
| SERVICE_MEMORY_URL: "grpc://localhost:3003", | ||
| SERVICE_LLM_URL: "grpc://localhost:3004", | ||
| SERVICE_VECTOR_URL: "grpc://localhost:3005", | ||
| SERVICE_GRAPH_URL: "grpc://localhost:3006", | ||
| SERVICE_TOOL_URL: "grpc://localhost:3007", | ||
| SERVICE_TRACE_URL: "grpc://localhost:3008", | ||
| }; | ||
| for (const [key, url] of Object.entries(serviceUrls)) { | ||
| await updateEnvFile(key, url); | ||
| } | ||
| console.log("SERVICE_SECRET was updated in .env"); | ||
| console.log("JWT_SECRET is set in .env"); | ||
| console.log("JWT_ANON_KEY was updated in .env"); | ||
| console.log("Service URLs written to .env (ports 3002–3008)."); | ||
| // Generate config/config.json with minimal service tree | ||
| const configDir = resolve("config"); | ||
| const configPath = resolve("config", "config.json"); | ||
| try { | ||
| await fs.access(configPath); | ||
| console.log("config/config.json already exists, skipping."); | ||
| } catch { | ||
| await fs.mkdir(configDir, { recursive: true }); | ||
| const config = { | ||
| init: { | ||
| log_dir: "data/logs", | ||
| shutdown_timeout: 3000, | ||
| services: [ | ||
| { | ||
| name: "trace", | ||
| command: "node -e \"import('@forwardimpact/svctrace/server.js')\"", | ||
| }, | ||
| { | ||
| name: "vector", | ||
| command: "node -e \"import('@forwardimpact/svcvector/server.js')\"", | ||
| }, | ||
| { | ||
| name: "graph", | ||
| command: "node -e \"import('@forwardimpact/svcgraph/server.js')\"", | ||
| }, | ||
| { | ||
| name: "llm", | ||
| command: "node -e \"import('@forwardimpact/svcllm/server.js')\"", | ||
| }, | ||
| { | ||
| name: "memory", | ||
| command: "node -e \"import('@forwardimpact/svcmemory/server.js')\"", | ||
| }, | ||
| { | ||
| name: "tool", | ||
| command: "node -e \"import('@forwardimpact/svctool/server.js')\"", | ||
| }, | ||
| { | ||
| name: "agent", | ||
| command: "node -e \"import('@forwardimpact/svcagent/server.js')\"", | ||
| }, | ||
| ], | ||
| }, | ||
| }; | ||
| await fs.writeFile(configPath, JSON.stringify(config, null, 2) + "\n"); | ||
| console.log("config/config.json created with service configuration."); | ||
| } | ||
| process.exit(0); | ||
@@ -91,3 +159,3 @@ } | ||
| 1. Run: npx fit-guide --init | ||
| 2. Start the service stack and set SERVICE_SECRET | ||
| 2. Start the service stack: npx fit-rc start | ||
| 3. Run: npx fit-guide | ||
@@ -210,5 +278,5 @@ | ||
| For local development: just rc-start | ||
| Start the service stack: npx fit-rc start | ||
| Documentation: https://www.forwardimpact.team/guide`); | ||
| process.exit(1); | ||
| } |
+2
-1
| { | ||
| "name": "@forwardimpact/guide", | ||
| "version": "0.1.11", | ||
| "version": "0.1.13", | ||
| "description": "Conversational agent for engineering framework guidance — How do I find my bearing?", | ||
@@ -37,2 +37,3 @@ "license": "Apache-2.0", | ||
| "@forwardimpact/libcodegen": "^0.1.32", | ||
| "@forwardimpact/librc": "^0.1.16", | ||
| "@forwardimpact/libconfig": "^0.1.58", | ||
@@ -39,0 +40,0 @@ "@forwardimpact/libsecret": "^0.1.7", |
22894
10.65%236
34.86%17
6.25%+ Added
+ Added
+ Added