soloforge 1.1.31 → 1.1.32

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.
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMlD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA+C5C"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA+C5C"}
@@ -1,6 +1,6 @@
1
1
  export { generateClaudeMd } from "./claude_md.js";
2
2
  import { debug } from "../../engine/core/logger.js";
3
- const hookCommand = (subcommand) => `env PATH="$PATH:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" soloforge ${subcommand}`;
3
+ import { hookCommand } from "../shared/hook_command.js";
4
4
  /**
5
5
  * 生成 Claude Code hooks 配置对象。
6
6
  * @returns hooks 配置对象,包含 PreToolUse、PostToolUse 和 UserPromptSubmit 钩子
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,EAAE,CACzC,6EAA6E,UAAU,EAAE,CAAC;AAE5F;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAChC,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC;yBACpC;qBACF;iBACF;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;yBACnC;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;yBAClC;qBACF;iBACF;aACF;YACH,kBAAkB,EAAE;gBAClB;oBACE,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;yBACnC;qBACF;iBACF;aACF;SACA;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAChC,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC;yBACpC;qBACF;iBACF;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;yBACnC;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;yBAClC;qBACF;iBACF;aACF;YACH,kBAAkB,EAAE;gBAClB;oBACE,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;yBACnC;qBACF;iBACF;aACF;SACA;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex_config.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex/codex_config.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgBlE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAwCjD"}
1
+ {"version":3,"file":"codex_config.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex/codex_config.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgBlE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAwCjD"}
@@ -1,4 +1,5 @@
1
1
  import { debug } from "../../engine/core/logger.js";
2
+ import { hookCommand } from "../shared/hook_command.js";
2
3
  function escapeTomlString(value) {
3
4
  return value
4
5
  .replace(/\\/g, "\\\\")
@@ -11,7 +12,6 @@ function toTomlArray(items) {
11
12
  const escaped = items.map((s) => `"${escapeTomlString(s)}"`);
12
13
  return `[${escaped.join(", ")}]`;
13
14
  }
14
- const hookCommand = (subcommand) => `env PATH="$PATH:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" soloforge ${subcommand}`;
15
15
  /**
16
16
  * 生成 Codex MCP 服务器 TOML 配置。
17
17
  * @param projectPath - 项目路径
@@ -1 +1 @@
1
- {"version":3,"file":"codex_config.js","sourceRoot":"","sources":["../../../src/adapters/codex/codex_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW,CAAC,KAAe;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,EAAE,CACzC,6EAA6E,UAAU,EAAE,CAAC;AAE5F;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAC7C,OAAO;;SAEA,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;;;uBAGN,gBAAgB,CAAC,WAAW,CAAC;;;;SAI3C,WAAW,CAAC,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;;;;CAI7D,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,4BAA4B;oBACrC,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC;4BACnC,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;gBACD;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;4BAClC,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;4BACjC,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;aACF;SACF;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"codex_config.js","sourceRoot":"","sources":["../../../src/adapters/codex/codex_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW,CAAC,KAAe;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAC7C,OAAO;;SAEA,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;;;uBAGN,gBAAgB,CAAC,WAAW,CAAC;;;;SAI3C,WAAW,CAAC,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;;;;CAI7D,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,4BAA4B;oBACrC,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC;4BACnC,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;gBACD;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC;4BAClC,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,QAAQ;oBACjB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;4BACjC,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;aACF;SACF;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Hook 命令构建 — 运行时动态解析 soloforge 可执行路径。
3
+ *
4
+ * 不再硬编码 PATH,而是:
5
+ * 1. 解析当前 node 可执行文件所在目录(如 /opt/homebrew/bin)
6
+ * 2. 解析 soloforge 实际绝对路径(通过 process.argv 或 which)
7
+ * 3. 生成最小化的 PATH 前缀 + soloforge 绝对路径命令
8
+ */
9
+ /**
10
+ * 构建 hook 子命令字符串。
11
+ *
12
+ * 运行时动态解析路径,不再硬编码 /opt/homebrew/bin 等目录。
13
+ * 生成格式:`env PATH="<nodeBinDir>:$PATH" <soloforgePath> <subcommand>`
14
+ * 如果 soloforge 已在系统 PATH 中,则简化为直接调用。
15
+ *
16
+ * @param subcommand - soloforge 子命令(如 check-write)
17
+ * @returns 可在 IDE hook 中执行的命令字符串
18
+ */
19
+ export declare function hookCommand(subcommand: string): string;
20
+ //# sourceMappingURL=hook_command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook_command.d.ts","sourceRoot":"","sources":["../../../src/adapters/shared/hook_command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsDH;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAetD"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Hook 命令构建 — 运行时动态解析 soloforge 可执行路径。
3
+ *
4
+ * 不再硬编码 PATH,而是:
5
+ * 1. 解析当前 node 可执行文件所在目录(如 /opt/homebrew/bin)
6
+ * 2. 解析 soloforge 实际绝对路径(通过 process.argv 或 which)
7
+ * 3. 生成最小化的 PATH 前缀 + soloforge 绝对路径命令
8
+ */
9
+ import path from "node:path";
10
+ import fs from "node:fs";
11
+ import { debug } from "../../engine/core/logger.js";
12
+ /** 已解析的 soloforge 可执行路径(单例缓存) */
13
+ let _resolvedSoloforgePath;
14
+ /**
15
+ * 解析 soloforge 可执行文件的绝对路径。
16
+ *
17
+ * 策略优先级:
18
+ * 1. process.argv[1] — 当前正在执行的脚本路径(最可靠)
19
+ * 2. npm global bin 目录下的 soloforge
20
+ * 3. 回退到 "soloforge"(依赖系统 PATH)
21
+ */
22
+ function resolveSoloforgeBin() {
23
+ if (_resolvedSoloforgePath)
24
+ return _resolvedSoloforgePath;
25
+ // 策略 1: 当前进程的 soloforge 入口脚本
26
+ // 验证路径文件名为 soloforge 或 soloforge.js,避免在 vitest 等测试环境中
27
+ // 将 worker 入口(如 tinypool)误判为 soloforge
28
+ const argv1 = process.argv[1];
29
+ if (argv1) {
30
+ const resolved = path.resolve(argv1);
31
+ const base = path.basename(resolved).replace(/\.js$/, "");
32
+ if (fs.existsSync(resolved) && base === "soloforge") {
33
+ _resolvedSoloforgePath = resolved;
34
+ debug("Hook命令", `解析 soloforge 路径 (argv): ${resolved}`);
35
+ return resolved;
36
+ }
37
+ }
38
+ // 策略 2: node 所在目录下查找 soloforge
39
+ const nodeDir = path.dirname(process.execPath);
40
+ const candidates = [
41
+ path.join(nodeDir, "soloforge"),
42
+ path.join(nodeDir, "soloforge.js"),
43
+ ];
44
+ for (const candidate of candidates) {
45
+ if (fs.existsSync(candidate)) {
46
+ _resolvedSoloforgePath = candidate;
47
+ debug("Hook命令", `解析 soloforge 路径 (node bin): ${candidate}`);
48
+ return candidate;
49
+ }
50
+ }
51
+ // 策略 3: 回退到系统 PATH 中的 soloforge
52
+ _resolvedSoloforgePath = "soloforge";
53
+ debug("Hook命令", "回退到系统 PATH 中的 soloforge");
54
+ return "soloforge";
55
+ }
56
+ /**
57
+ * 构建 hook 子命令字符串。
58
+ *
59
+ * 运行时动态解析路径,不再硬编码 /opt/homebrew/bin 等目录。
60
+ * 生成格式:`env PATH="<nodeBinDir>:$PATH" <soloforgePath> <subcommand>`
61
+ * 如果 soloforge 已在系统 PATH 中,则简化为直接调用。
62
+ *
63
+ * @param subcommand - soloforge 子命令(如 check-write)
64
+ * @returns 可在 IDE hook 中执行的命令字符串
65
+ */
66
+ export function hookCommand(subcommand) {
67
+ const nodeBinDir = path.dirname(process.execPath);
68
+ const soloforgeBin = resolveSoloforgeBin();
69
+ // 如果 soloforge 解析为绝对路径,直接用绝对路径调用(无需 PATH 前缀)
70
+ if (path.isAbsolute(soloforgeBin)) {
71
+ // 判断是否需要通过 node 执行(.js 文件)
72
+ if (soloforgeBin.endsWith(".js")) {
73
+ return `env PATH="${nodeBinDir}:$PATH" node "${soloforgeBin}" ${subcommand}`;
74
+ }
75
+ return `env PATH="${nodeBinDir}:$PATH" "${soloforgeBin}" ${subcommand}`;
76
+ }
77
+ // 回退:soloforge 在系统 PATH 中,但仍需确保 node 可被找到
78
+ return `env PATH="${nodeBinDir}:$PATH" soloforge ${subcommand}`;
79
+ }
80
+ //# sourceMappingURL=hook_command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook_command.js","sourceRoot":"","sources":["../../../src/adapters/shared/hook_command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,iCAAiC;AACjC,IAAI,sBAA0C,CAAC;AAE/C;;;;;;;GAOG;AACH,SAAS,mBAAmB;IAC1B,IAAI,sBAAsB;QAAE,OAAO,sBAAsB,CAAC;IAE1D,6BAA6B;IAC7B,sDAAsD;IACtD,uCAAuC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACpD,sBAAsB,GAAG,QAAQ,CAAC;YAClC,KAAK,CAAC,QAAQ,EAAE,2BAA2B,QAAQ,EAAE,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;KACnC,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,sBAAsB,GAAG,SAAS,CAAC;YACnC,KAAK,CAAC,QAAQ,EAAE,+BAA+B,SAAS,EAAE,CAAC,CAAC;YAC5D,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,sBAAsB,GAAG,WAAW,CAAC;IACrC,KAAK,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IAC3C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,6CAA6C;IAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,2BAA2B;QAC3B,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,aAAa,UAAU,iBAAiB,YAAY,KAAK,UAAU,EAAE,CAAC;QAC/E,CAAC;QACD,OAAO,aAAa,UAAU,YAAY,YAAY,KAAK,UAAU,EAAE,CAAC;IAC1E,CAAC;IAED,0CAA0C;IAC1C,OAAO,aAAa,UAAU,qBAAqB,UAAU,EAAE,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soloforge",
3
- "version": "1.1.31",
3
+ "version": "1.1.32",
4
4
  "description": "AI-driven development workflow system - one person does the work of a five-person team",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",