@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 +13 -13
- package/src/project/init-files.ts +19 -23
- package/src/session/worker.ts +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
|
-
"version": "2.2.
|
|
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.
|
|
171
|
-
"@epoch-ai/cli-darwin-x64": "2.2.
|
|
172
|
-
"@epoch-ai/cli-darwin-x64-baseline": "2.2.
|
|
173
|
-
"@epoch-ai/cli-linux-arm64": "2.2.
|
|
174
|
-
"@epoch-ai/cli-linux-x64": "2.2.
|
|
175
|
-
"@epoch-ai/cli-linux-x64-baseline": "2.2.
|
|
176
|
-
"@epoch-ai/cli-linux-arm64-musl": "2.2.
|
|
177
|
-
"@epoch-ai/cli-linux-x64-musl": "2.2.
|
|
178
|
-
"@epoch-ai/cli-linux-x64-baseline-musl": "2.2.
|
|
179
|
-
"@epoch-ai/cli-windows-arm64": "2.2.
|
|
180
|
-
"@epoch-ai/cli-windows-x64": "2.2.
|
|
181
|
-
"@epoch-ai/cli-windows-x64-baseline": "2.2.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
}
|
package/src/session/worker.ts
CHANGED
|
@@ -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
|
-
|
|
230
|
-
|
|
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
|
-
|
|
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.",
|