@firfi/huly-mcp 0.55.2 → 0.55.4

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/README.md CHANGED
@@ -70,24 +70,15 @@ Exact native tool names still dispatch when a client calls them directly, but ma
70
70
  <details>
71
71
  <summary>Codex</summary>
72
72
 
73
- Use Codex's MCP manager:
73
+ `npx` automatically downloads and caches Huly MCP; `pnpm dlx @firfi/huly-mcp@latest` is an alternative. Huly is optional, so Codex can start without it and a cold download may leave the first turn without Huly tools. Run `/mcp` to check the connection.
74
74
 
75
- ```bash
76
- codex mcp add huly \
77
- --env MCP_TRANSPORT=stdio-resident \
78
- --env HULY_URL=https://your-huly-instance.example.com \
79
- --env HULY_TOKEN=your-huly-api-token \
80
- --env HULY_WORKSPACE=yourworkspace \
81
- -- npx -y @firfi/huly-mcp@latest
82
- ```
83
-
84
- Or add it directly to `~/.codex/config.toml`:
75
+ Add to `~/.codex/config.toml` (the 120-second startup allowance includes installation):
85
76
 
86
77
  ```toml
87
78
  [mcp_servers.huly]
79
+ startup_timeout_sec = 120
88
80
  command = "npx"
89
81
  args = ["-y", "@firfi/huly-mcp@latest"]
90
- startup_timeout_sec = 60
91
82
 
92
83
  [mcp_servers.huly.env]
93
84
  MCP_TRANSPORT = "stdio-resident"
@@ -229,10 +220,7 @@ the [production release guide](docs/NPM_PRODUCTION_RELEASE.md) for preflight che
229
220
 
230
221
  ## Shared resident stdio
231
222
 
232
- The setup examples explicitly select `MCP_TRANSPORT=stdio-resident`. MCP clients still use stdio, while compatible clients under the same OS user share a Node backend through small native bridges. Linux and macOS arm64/x64 binaries are included; no Rust installation is needed. Resident startup has a 30-second budget. If the native bridge cannot run or resident startup fails, the connection automatically falls back to ordinary stdio with its buffered MCP input preserved. This transition happens before any MCP request is sent to the resident. A failed active resident never reconnects or replays requests.
233
-
234
- Allow at least 60 seconds for MCP startup in the client so it can wait for the resident attempt, cleanup, and ordinary stdio startup. For Codex, set `startup_timeout_sec = 60` in its Huly server configuration, including when adding the server through `codex mcp add`.
235
- For Claude Code, set `MCP_TIMEOUT=60000` in the environment that launches `claude`, or add `"MCP_TIMEOUT": "60000"` under `env` in `~/.claude/settings.json` ([Claude Code environment variables](https://code.claude.com/docs/en/env-vars)). Setting it only in the Huly server's `env` does not increase the parent client's startup timeout.
223
+ The setup examples explicitly select `MCP_TRANSPORT=stdio-resident`. MCP clients still use stdio, while compatible clients under the same OS user share a Node backend through small native bridges. Linux and macOS arm64/x64 binaries are included; no Rust installation is needed. Application requests remain buffered during the 30-second resident startup budget. Startup failure launches ordinary stdio and dispatches the buffered application input once. A failed active resident never reconnects or replays application requests.
236
224
 
237
225
  Omitting `MCP_TRANSPORT` still selects ordinary `stdio`, preserving existing installations. Set `MCP_TRANSPORT=stdio` explicitly to keep a separate backend per client. Restart the MCP client after changing the setting.
238
226
 
@@ -54789,7 +54789,7 @@ var VERSION;
54789
54789
  var init_version = __esm({
54790
54790
  "src/version.ts"() {
54791
54791
  "use strict";
54792
- VERSION = true ? "0.55.2" : "0.0.0-dev";
54792
+ VERSION = true ? "0.55.4" : "0.0.0-dev";
54793
54793
  }
54794
54794
  });
54795
54795
 
@@ -222479,7 +222479,7 @@ var init_server_startup = __esm({
222479
222479
  const configuration = yield* Effect_exports.result(resolveProcessConfiguration(transport, environment, captured));
222480
222480
  if (Result_exports.isFailure(configuration)) {
222481
222481
  if (transport === "stdio" && configuration.failure._tag === "CliProfileStoreError")
222482
- return yield* runProfileStartupDiagnostic(configuration.failure, "0.55.2");
222482
+ return yield* runProfileStartupDiagnostic(configuration.failure, "0.55.4");
222483
222483
  return yield* Effect_exports.fail(configuration.failure);
222484
222484
  }
222485
222485
  const { authMethod, configLayer, runtimeConfigContext } = configuration.success;
@@ -222829,7 +222829,7 @@ var init_native_exec = __esm({
222829
222829
  const { main: local2 } = yield* Effect_exports.promise(() => Promise.resolve().then(() => (init_server_startup(), server_startup_exports)));
222830
222830
  return yield* local2;
222831
222831
  }).pipe(
222832
- Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.2")),
222832
+ Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.4")),
222833
222833
  Effect_exports.provide(layer7),
222834
222834
  Effect_exports.tapError(
222835
222835
  (error3) => Effect_exports.sync(
@@ -223199,7 +223199,7 @@ ${hello}
223199
223199
  Effect_exports.catchTag(
223200
223200
  "CliProfileStoreError",
223201
223201
  (error3) => publish4(`${NATIVE_LOCAL_HEADER}
223202
- `).pipe(Effect_exports.andThen(runProfileStartupDiagnostic(error3, "0.55.2")))
223202
+ `).pipe(Effect_exports.andThen(runProfileStartupDiagnostic(error3, "0.55.4")))
223203
223203
  ),
223204
223204
  Effect_exports.mapError(
223205
223205
  (error3) => error3 instanceof ConfigValidationError || error3 instanceof McpProcessPolicyError || error3 instanceof ManagedLaunchError || error3 instanceof ProtectedFileError || error3 instanceof BackendResponseError ? error3 : nativeBridgeFailure()
@@ -223234,7 +223234,7 @@ var init_manual_adapter_main = __esm({
223234
223234
  const captured = yield* captureManualResidentSelection(environment);
223235
223235
  yield* runManualAdapter(captured?.selection);
223236
223236
  }).pipe(
223237
- Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.2")),
223237
+ Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.4")),
223238
223238
  Effect_exports.provide(layer7),
223239
223239
  Effect_exports.mapError(
223240
223240
  (error3) => error3 instanceof BackendResponseError || error3 instanceof CliProfileStoreError || error3 instanceof ConfigValidationError || error3 instanceof McpProcessPolicyError || error3 instanceof ProtectedFileError ? error3 : new BackendResponseError({
@@ -223336,7 +223336,7 @@ if (unsupportedRuntime) {
223336
223336
  detectedNodeVersion: process.versions.node,
223337
223337
  executable: process.execPath,
223338
223338
  requiredNodeVersion: nodeEngineRequirement,
223339
- serverVersion: "0.55.2"
223339
+ serverVersion: "0.55.4"
223340
223340
  });
223341
223341
  startUnsupportedNodeMcp(config);
223342
223342
  } else if (process.env.MCP_TRANSPORT === "resident-child") {
package/dist/index.cjs CHANGED
@@ -37,7 +37,7 @@ var probeNativeExecutable = (executable) => {
37
37
  if (process.env.MCP_TRANSPORT === "stdio-resident") {
38
38
  const executable = nativeExecutableFor({ platform: process.platform, architecture: process.arch, packageFile: __filename, execveAvailable: typeof process.execve === "function" });
39
39
  if (executable !== void 0) {
40
- process.execve(executable, [executable, process.execPath, __filename], { ...process.env, MCP_NATIVE_EXPECTED_VERSION: "0.55.2" });
40
+ process.execve(executable, [executable, process.execPath, __filename], { ...process.env, MCP_NATIVE_EXPECTED_VERSION: "0.55.4" });
41
41
  } else {
42
42
  process.stderr.write("Native resident bridge unavailable; starting ordinary stdio\n");
43
43
  process.env.MCP_TRANSPORT = "stdio";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firfi/huly-mcp",
3
- "version": "0.55.2",
3
+ "version": "0.55.4",
4
4
  "description": "Huly MCP: feature-complete MCP server for Huly integration",
5
5
  "mcpName": "io.github.dearlordylord/huly-mcp",
6
6
  "type": "module",