frappe-builder 1.1.0-dev.21 → 1.1.0-dev.22

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/.fb/state.db CHANGED
Binary file
@@ -2,13 +2,13 @@ feature_id: po-approval
2
2
  feature_name: "PO Approval"
3
3
  mode: full
4
4
  phase: testing
5
- updated_at: 2026-03-28T14:09:32.555Z
5
+ updated_at: 2026-03-28T14:14:28.658Z
6
6
 
7
7
  components:
8
8
  - id: final-comp
9
9
  sort_order: 0
10
10
  status: complete
11
- completed_at: 2026-03-28T14:09:32.555Z
11
+ completed_at: 2026-03-28T14:14:28.658Z
12
12
 
13
13
  progress:
14
14
  done: 1
package/AGENTS.md CHANGED
@@ -17,7 +17,7 @@ You are Frappe-Nexus, the primary orchestrator for frappe-builder — a Frappe/E
17
17
 
18
18
  | Instead of… | Run this Bash command… |
19
19
  |---|---|
20
- | Reading a file to analyse it | `mcp2cli @context-mode ctx_execute_file --path /abs/path --language python --code "print(open('/abs/path').read())"` |
20
+ | Reading a file to analyse it | `mcp2cli @context-mode ctx_execute_file --path /abs/path --language python --code "print(FILE_CONTENT)"` |
21
21
  | Running bash commands with long output | `mcp2cli @context-mode ctx_execute --language shell --code "your-command"` |
22
22
  | Searching the codebase | `mcp2cli @context-mode ctx_batch_execute --commands '["grep -r X ."]' --queries '["what does X do"]'` |
23
23
  | Follow-up questions after indexing | `mcp2cli @context-mode ctx_search --queries '["question 1", "question 2"]'` |
package/dist/cli.mjs CHANGED
@@ -14,7 +14,7 @@ import { existsSync } from "node:fs";
14
14
  */
15
15
  const cmd = process.argv[2];
16
16
  if (cmd === "init") {
17
- const { runInit } = await import("./init-dY-MHOgS.mjs");
17
+ const { runInit } = await import("./init-BUkSYk2l.mjs");
18
18
  await runInit();
19
19
  process.exit(0);
20
20
  }
@@ -232,6 +232,20 @@ async function setupContextMode(homeDir) {
232
232
  function setupMcp2cli(homeDir) {
233
233
  const startScript = join(homeDir, ".pi", "extensions", "context-mode", "node_modules", "context-mode", "start.mjs");
234
234
  console.log("\n[mcp2cli skill + context-mode bake]");
235
+ if (spawnSync("mcp2cli", ["--version"], { stdio: "pipe" }).status === 0) console.log(" ✓ mcp2cli already installed");
236
+ else {
237
+ console.log(" Installing mcp2cli...");
238
+ if (spawnSync("uv", [
239
+ "tool",
240
+ "install",
241
+ "mcp2cli"
242
+ ], { stdio: "pipe" }).status === 0) console.log(" ✓ mcp2cli installed via uv");
243
+ else if (spawnSync("pip", ["install", "mcp2cli"], { stdio: "pipe" }).status === 0) console.log(" ✓ mcp2cli installed via pip");
244
+ else {
245
+ console.warn(" ⚠ mcp2cli install failed (tried uv and pip)");
246
+ console.warn(" Install manually: uv tool install mcp2cli");
247
+ }
248
+ }
235
249
  const skillAdd = spawnSync("npx", [
236
250
  "skills",
237
251
  "add",
@@ -262,10 +276,8 @@ function setupMcp2cli(homeDir) {
262
276
  "--mcp-stdio",
263
277
  `node ${startScript}`
264
278
  ], { stdio: "pipe" });
265
- if (bakeCreate.status !== 0) {
266
- console.warn(` mcp2cli bake failed: ${bakeCreate.stderr?.toString().trim()}`);
267
- console.warn(" Install mcp2cli first: pip install mcp2cli");
268
- } else console.log(" ✓ mcp2cli @context-mode baked — agent can now call: mcp2cli @context-mode <tool>");
279
+ if (bakeCreate.status !== 0) console.warn(` ⚠ mcp2cli bake failed: ${bakeCreate.stderr?.toString().trim()}`);
280
+ else console.log(" mcp2cli @context-mode baked — agent can now call: mcp2cli @context-mode <tool>");
269
281
  }
270
282
  //#endregion
271
283
  export { runInit };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frappe-builder",
3
- "version": "1.1.0-dev.21",
3
+ "version": "1.1.0-dev.22",
4
4
  "description": "Frappe-native AI co-pilot for building and customising Frappe/ERPNext applications",
5
5
  "type": "module",
6
6
  "bin": {