@uluops/setup 0.9.0 → 0.9.2
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/dist/harnesses/codex.js
CHANGED
|
@@ -11,6 +11,7 @@ import { homedir } from "node:os";
|
|
|
11
11
|
import { join } from "node:path";
|
|
12
12
|
import { ULUOPS_SERVERS, } from "./types.js";
|
|
13
13
|
import { atomicWrite } from "../lib/atomic-write.js";
|
|
14
|
+
import { OPS_MCP_SPEC, REGISTRY_MCP_SPEC } from "../lib/mcp-packages.js";
|
|
14
15
|
const RAW_TOML = "__rawToml";
|
|
15
16
|
/**
|
|
16
17
|
* Tools to seed with `approval_mode = "approve"` (Codex's auto-allow opt-in).
|
|
@@ -196,8 +197,8 @@ class CodexMcpConfig {
|
|
|
196
197
|
const registryHasUserTools = hasUserToolEntries(raw, "uluops-registry");
|
|
197
198
|
raw = removeServerConfigBlocks(removeServerConfigBlocks(raw, "uluops-tracker"), "uluops-registry");
|
|
198
199
|
const blocks = [
|
|
199
|
-
serverBlock("uluops-tracker",
|
|
200
|
-
serverBlock("uluops-registry",
|
|
200
|
+
serverBlock("uluops-tracker", OPS_MCP_SPEC, apiKey, trackerHasUserTools ? [] : TRACKER_READ_TOOLS),
|
|
201
|
+
serverBlock("uluops-registry", REGISTRY_MCP_SPEC, apiKey, registryHasUserTools ? [] : REGISTRY_READ_TOOLS),
|
|
201
202
|
].join("\n\n");
|
|
202
203
|
return { [RAW_TOML]: [raw.trimEnd(), blocks].filter(Boolean).join("\n\n") + "\n" };
|
|
203
204
|
}
|
|
@@ -16,6 +16,7 @@ import { join, isAbsolute } from "node:path";
|
|
|
16
16
|
import { parse as parseJsonc } from "jsonc-parser";
|
|
17
17
|
import { ULUOPS_SERVERS, ConfigParseError } from "./types.js";
|
|
18
18
|
import { atomicWrite } from "../lib/atomic-write.js";
|
|
19
|
+
import { OPS_MCP_SPEC, REGISTRY_MCP_SPEC } from "../lib/mcp-packages.js";
|
|
19
20
|
class OpenCodeMcpConfig {
|
|
20
21
|
/** Maps requested path → actual resolved path (for .jsonc fallback). */
|
|
21
22
|
resolvedPaths = new Map();
|
|
@@ -51,7 +52,7 @@ class OpenCodeMcpConfig {
|
|
|
51
52
|
// their bundled SDKs. See lib/config-merger.ts for rationale.
|
|
52
53
|
const tracker = {
|
|
53
54
|
type: "local",
|
|
54
|
-
command: ["npx", "-y",
|
|
55
|
+
command: ["npx", "-y", OPS_MCP_SPEC],
|
|
55
56
|
enabled: true,
|
|
56
57
|
timeout: 30000,
|
|
57
58
|
environment: {
|
|
@@ -60,7 +61,7 @@ class OpenCodeMcpConfig {
|
|
|
60
61
|
};
|
|
61
62
|
const registry = {
|
|
62
63
|
type: "local",
|
|
63
|
-
command: ["npx", "-y",
|
|
64
|
+
command: ["npx", "-y", REGISTRY_MCP_SPEC],
|
|
64
65
|
enabled: true,
|
|
65
66
|
timeout: 30000,
|
|
66
67
|
environment: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { atomicWrite } from "./atomic-write.js";
|
|
3
|
-
|
|
3
|
+
import { MCP_PACKAGES, OPS_MCP_SPEC, REGISTRY_MCP_SPEC, } from "./mcp-packages.js";
|
|
4
4
|
/**
|
|
5
5
|
* In-process memoization for the npm availability probe.
|
|
6
6
|
*
|
|
@@ -102,7 +102,7 @@ export function mergeUluopsMcp(config, apiKey, trust = false) {
|
|
|
102
102
|
...existing,
|
|
103
103
|
"uluops-tracker": {
|
|
104
104
|
command: "npx",
|
|
105
|
-
args: ["-y",
|
|
105
|
+
args: ["-y", OPS_MCP_SPEC],
|
|
106
106
|
env: {
|
|
107
107
|
ULUOPS_API_KEY: apiKey,
|
|
108
108
|
},
|
|
@@ -110,7 +110,7 @@ export function mergeUluopsMcp(config, apiKey, trust = false) {
|
|
|
110
110
|
},
|
|
111
111
|
"uluops-registry": {
|
|
112
112
|
command: "npx",
|
|
113
|
-
args: ["-y",
|
|
113
|
+
args: ["-y", REGISTRY_MCP_SPEC],
|
|
114
114
|
env: {
|
|
115
115
|
ULUOPS_API_KEY: apiKey,
|
|
116
116
|
},
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pinned MCP server package versions.
|
|
3
|
+
*
|
|
4
|
+
* Every harness's MCP config writer (claude-code/gemini-cli/opencode JSON
|
|
5
|
+
* mergers, codex TOML writer) stamps these spec strings into the harness
|
|
6
|
+
* config so `npx -y <spec>` resolves a known-good version instead of
|
|
7
|
+
* latest. Pinning makes a `@uluops/setup` release self-contained — what
|
|
8
|
+
* users get on first launch is what the package was tested against,
|
|
9
|
+
* regardless of when later MCP server versions ship.
|
|
10
|
+
*
|
|
11
|
+
* **Bump rule:** when an MCP server publishes a new version, bump the
|
|
12
|
+
* version here in the same setup release. A pinned setup install never
|
|
13
|
+
* silently picks up a downstream regression; a missed bump shows up as
|
|
14
|
+
* the next setup release stamping the previous combination.
|
|
15
|
+
*
|
|
16
|
+
* The bare package NAMES (without versions) remain available as
|
|
17
|
+
* `MCP_PACKAGES` for the npm availability probe — that probe asks
|
|
18
|
+
* "does this name exist on the registry" not "does this version exist".
|
|
19
|
+
* Pinning the probe to a specific version would turn a temporary
|
|
20
|
+
* registry blip on an older version into a setup failure even when
|
|
21
|
+
* the latest version was reachable.
|
|
22
|
+
*/
|
|
23
|
+
export declare const OPS_MCP_PACKAGE = "@uluops/ops-mcp";
|
|
24
|
+
export declare const OPS_MCP_VERSION = "0.3.1";
|
|
25
|
+
export declare const OPS_MCP_SPEC: "@uluops/ops-mcp@0.3.1";
|
|
26
|
+
export declare const REGISTRY_MCP_PACKAGE = "@uluops/registry-mcp";
|
|
27
|
+
export declare const REGISTRY_MCP_VERSION = "0.2.6";
|
|
28
|
+
export declare const REGISTRY_MCP_SPEC: "@uluops/registry-mcp@0.2.6";
|
|
29
|
+
/**
|
|
30
|
+
* Bare package names for the npm availability probe. The probe checks
|
|
31
|
+
* existence on the registry, not version-specific resolvability, so it
|
|
32
|
+
* uses these unversioned names.
|
|
33
|
+
*/
|
|
34
|
+
export declare const MCP_PACKAGES: readonly string[];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pinned MCP server package versions.
|
|
3
|
+
*
|
|
4
|
+
* Every harness's MCP config writer (claude-code/gemini-cli/opencode JSON
|
|
5
|
+
* mergers, codex TOML writer) stamps these spec strings into the harness
|
|
6
|
+
* config so `npx -y <spec>` resolves a known-good version instead of
|
|
7
|
+
* latest. Pinning makes a `@uluops/setup` release self-contained — what
|
|
8
|
+
* users get on first launch is what the package was tested against,
|
|
9
|
+
* regardless of when later MCP server versions ship.
|
|
10
|
+
*
|
|
11
|
+
* **Bump rule:** when an MCP server publishes a new version, bump the
|
|
12
|
+
* version here in the same setup release. A pinned setup install never
|
|
13
|
+
* silently picks up a downstream regression; a missed bump shows up as
|
|
14
|
+
* the next setup release stamping the previous combination.
|
|
15
|
+
*
|
|
16
|
+
* The bare package NAMES (without versions) remain available as
|
|
17
|
+
* `MCP_PACKAGES` for the npm availability probe — that probe asks
|
|
18
|
+
* "does this name exist on the registry" not "does this version exist".
|
|
19
|
+
* Pinning the probe to a specific version would turn a temporary
|
|
20
|
+
* registry blip on an older version into a setup failure even when
|
|
21
|
+
* the latest version was reachable.
|
|
22
|
+
*/
|
|
23
|
+
export const OPS_MCP_PACKAGE = "@uluops/ops-mcp";
|
|
24
|
+
export const OPS_MCP_VERSION = "0.3.1";
|
|
25
|
+
export const OPS_MCP_SPEC = `${OPS_MCP_PACKAGE}@${OPS_MCP_VERSION}`;
|
|
26
|
+
export const REGISTRY_MCP_PACKAGE = "@uluops/registry-mcp";
|
|
27
|
+
export const REGISTRY_MCP_VERSION = "0.2.6";
|
|
28
|
+
export const REGISTRY_MCP_SPEC = `${REGISTRY_MCP_PACKAGE}@${REGISTRY_MCP_VERSION}`;
|
|
29
|
+
/**
|
|
30
|
+
* Bare package names for the npm availability probe. The probe checks
|
|
31
|
+
* existence on the registry, not version-specific resolvability, so it
|
|
32
|
+
* uses these unversioned names.
|
|
33
|
+
*/
|
|
34
|
+
export const MCP_PACKAGES = [
|
|
35
|
+
OPS_MCP_PACKAGE,
|
|
36
|
+
REGISTRY_MCP_PACKAGE,
|
|
37
|
+
];
|