@epoch-ai/cli 2.2.7 → 2.2.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
- "version": "2.2.7",
3
+ "version": "2.2.8",
4
4
  "name": "@epoch-ai/cli",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -167,18 +167,18 @@
167
167
  "ajv": "8.20.0"
168
168
  },
169
169
  "optionalDependencies": {
170
- "@epoch-ai/cli-darwin-arm64": "2.2.0",
171
- "@epoch-ai/cli-darwin-x64": "2.2.0",
172
- "@epoch-ai/cli-darwin-x64-baseline": "2.2.0",
173
- "@epoch-ai/cli-linux-arm64": "2.2.0",
174
- "@epoch-ai/cli-linux-x64": "2.2.0",
175
- "@epoch-ai/cli-linux-x64-baseline": "2.2.0",
176
- "@epoch-ai/cli-linux-arm64-musl": "2.2.0",
177
- "@epoch-ai/cli-linux-x64-musl": "2.2.0",
178
- "@epoch-ai/cli-linux-x64-baseline-musl": "2.2.0",
179
- "@epoch-ai/cli-windows-arm64": "2.2.0",
180
- "@epoch-ai/cli-windows-x64": "2.2.0",
181
- "@epoch-ai/cli-windows-x64-baseline": "2.2.0"
170
+ "@epoch-ai/cli-darwin-arm64": "2.2.8",
171
+ "@epoch-ai/cli-darwin-x64": "2.2.8",
172
+ "@epoch-ai/cli-darwin-x64-baseline": "2.2.8",
173
+ "@epoch-ai/cli-linux-arm64": "2.2.8",
174
+ "@epoch-ai/cli-linux-x64": "2.2.8",
175
+ "@epoch-ai/cli-linux-x64-baseline": "2.2.8",
176
+ "@epoch-ai/cli-linux-arm64-musl": "2.2.8",
177
+ "@epoch-ai/cli-linux-x64-musl": "2.2.8",
178
+ "@epoch-ai/cli-linux-x64-baseline-musl": "2.2.8",
179
+ "@epoch-ai/cli-windows-arm64": "2.2.8",
180
+ "@epoch-ai/cli-windows-x64": "2.2.8",
181
+ "@epoch-ai/cli-windows-x64-baseline": "2.2.8"
182
182
  },
183
183
  "overrides": {
184
184
  "drizzle-orm": "1.0.0-beta.19-d95b7a4"
@@ -43,10 +43,12 @@ cargo install mcpx-rust
43
43
 
44
44
  ## 2. Registering Servers
45
45
 
46
- \`mcpx-rust\` stores its configuration in \`~/.config/mcpx/config.toml\`. You must edit this file manually to add or modify servers.
46
+ \`mcpx-rust\` stores its configuration in \`~/.config/mcpx/config.toml\` (Linux/macOS) or \`%USERPROFILE%\\.config\\mcpx\\config.toml\` (Windows). You must edit this file manually to add or modify servers.
47
+
48
+ **Note for Windows Users:** \`mcpx-rust\` relies on the \`HOME\` environment variable to locate the configuration. If you encounter errors like "HOME environment variable not set," you must set \`HOME\` (e.g., to your user profile directory \`C:\\Users\\<YourName>\`) globally or in your active terminal session.
47
49
 
48
50
  ### Manual Configuration
49
- Add entries to the \`[mcp_servers]\` section in \`~/.config/mcpx/config.toml\`:
51
+ Add entries to the \`[mcp_servers]\` section in your configuration file:
50
52
 
51
53
  \`\`\`toml
52
54
  [mcp_servers.map]
@@ -57,6 +59,10 @@ args = ["mcp"]
57
59
  command = "deliver-cli"
58
60
  args = ["mcp"]
59
61
 
62
+ [mcp_servers.ground]
63
+ command = "ground-truth-cli-rust"
64
+ args = ["mcp"]
65
+
60
66
  [mcp_servers.github]
61
67
  command = "npx"
62
68
  args = ["-y", "@modelcontextprotocol/server-github"]
@@ -276,37 +282,29 @@ export async function initProjectFiles(directory: string, worktree: string) {
276
282
  try {
277
283
  const epochcliDir = path.join(worktree, ".epochcli")
278
284
 
279
- try {
280
- await fs.access(epochcliDir)
281
- return // Already initialized
282
- } catch {
283
- // Doesn't exist, proceed with initialization
284
- }
285
-
286
- log.info("Initializing new project files", { worktree })
287
-
288
- // Create .epochcli directory
285
+ // Create .epochcli directory if it doesn't exist
289
286
  await fs.mkdir(epochcliDir, { recursive: true })
290
287
 
291
- // Generate JSON Schema
288
+ // Generate and write JSON Schema (Always refresh)
292
289
  const schema = zodToJsonSchema(Config.Info, {
293
290
  name: "Config",
294
291
  $refStrategy: "none",
295
292
  })
296
-
297
- // Write config.json (schema)
298
293
  await fs.writeFile(
299
294
  path.join(epochcliDir, "config.json"),
300
295
  JSON.stringify(schema, null, 2)
301
296
  )
302
297
 
303
- // Write default epochcli.jsonc
304
- await fs.writeFile(
305
- path.join(epochcliDir, "epochcli.jsonc"),
306
- DEFAULT_EPOCHCLI_JSONC
307
- )
298
+ // Write default epochcli.jsonc if it doesn't exist
299
+ const configFile = path.join(epochcliDir, "epochcli.jsonc")
300
+ try {
301
+ await fs.access(configFile)
302
+ } catch {
303
+ await fs.writeFile(configFile, DEFAULT_EPOCHCLI_JSONC)
304
+ log.info("Created default epochcli.jsonc", { path: configFile })
305
+ }
308
306
 
309
- // Setup docs
307
+ // Setup docs (Always refresh)
310
308
  const docsDir = path.join(epochcliDir, "docs")
311
309
  await fs.mkdir(docsDir, { recursive: true })
312
310
  await fs.writeFile(path.join(docsDir, "MCP_config_guide.md"), MCP_CONFIG_GUIDE_CONTENT)
@@ -320,8 +318,6 @@ export async function initProjectFiles(directory: string, worktree: string) {
320
318
  await fs.writeFile(agentsFile, AGENTS_MD_CONTENT)
321
319
  log.info("Created AGENTS.md", { path: agentsFile })
322
320
  }
323
-
324
- log.info("Project initialized successfully", { dir: epochcliDir })
325
321
  } catch (error) {
326
322
  log.error("Failed to initialize project files", { error })
327
323
  }
@@ -226,8 +226,8 @@ export namespace PostGenerationWorker {
226
226
  ? " - topic: 'Immediate Working Memory & Interrupted Thoughts'\n file: '.history/interrupted_state.toon'\n trigger: 'READ THIS FIRST. You were interrupted by a context limit right before executing a tool. This contains your exact mental drafts and intentions.'"
227
227
  : "",
228
228
  " workflow_map:",
229
- " pipeline_step: 'Step (1-5)'",
230
- " phase: 'Current Spec Phase (e.g., Requirements, Design, Build)'",
229
+ ` pipeline_step: '${activeProjectContext === "NONE_FOUND" ? "N/A" : "Step (1-5)"}'`,
230
+ ` phase: '${activeProjectContext === "NONE_FOUND" ? "Ad-Hoc Exploration" : "Current Spec Phase (e.g., Requirements, Design, Build)"}'`,
231
231
  " status: 'Ready / Blocked / In-Progress'",
232
232
  " project_map:",
233
233
  " status: 'Healthy/Stale/Uninitialized'",
@@ -259,7 +259,7 @@ export namespace PostGenerationWorker {
259
259
  "7. You MUST provide a concrete 'example_input' for the 'next_action'. If the next action is to fix a file, provide the 'edit' or 'replace' parameters. For 'mcpx' or 'bash' commands, you may omit 'example_input' as the main agent will use AGENTS.md for syntax.",
260
260
  "8. EXECUTIVE INTENT: Deeply analyze the provided RECENT AGENT THOUGHTS. Distill the agent's internal monologue into the structured `executive_intent` fields. Offload verbose reasoning to the `.history` files via the signposts.",
261
261
  "9. INTERRUPTED STATE EXTRACTION: You MUST focus on the VERY LAST reasoning blocks. Extract the literal content, code, or partial tool calls into `interrupted_state` fields. This acts as a hot-swap restore point for the next epoch.",
262
- "10. PIPELINE TRACKING: You MUST identify the current step (1-5) in the 'Documentation-to-Build' pipeline based on the ACTION TIMELINE and SPEC status. Record this in `workflow_map.pipeline_step`.",
262
+ `10. PIPELINE TRACKING: ${activeProjectContext === "NONE_FOUND" ? "No active feature. Set pipeline_step to 'N/A' and phase to 'Ad-Hoc Exploration'." : "You MUST identify the current step (1-5) in the 'Documentation-to-Build' pipeline based on the ACTION TIMELINE and SPEC status. Record this in `workflow_map.pipeline_step`."}`,
263
263
  "11. DENSE ACTIVITY ONLY: Only provide a dense, 2-3 line chronological summary of the most critical actions in the `function_activity` field.",
264
264
  "12. PROJECT DISCOVERY: Use the provided ACTIVE PROJECT CONTEXT to determine the current feature and phase. If FEATURE_ID is present, the project is NOT Uninitialized.",
265
265
  "13. ARTIFACT VERIFICATION (CRITICAL): Use the VERIFIED_FILES list below as the source of truth for `completed_artifacts`. If a file is in MISSING_ARTIFACTS, it MUST NOT be listed as completed; if it was intended to be created, list it in `blocked_drafts` instead.",