@arpproject/vibearp-mcp 1.3.1 → 1.3.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/README.md CHANGED
@@ -41,6 +41,9 @@ rocrate-mcp-server -i codex
41
41
  Supported IDs are `codex`, `claude`, `opencode`, `kilo`, `roo`, `gemini`, and
42
42
  `qwen`. The generated configuration launches the standalone server through the
43
43
  shared per-user RockIT socket (`~/.rockit/rocrate-mcp-server.sock`).
44
+ For OpenCode, the installer preserves the config format it finds: native V2
45
+ configs use `mcp.servers`, while V1-shaped configs use the format that V2 still
46
+ supports for compatibility.
44
47
 
45
48
  The standalone server and RocKIT share the same per-user profile and schema
46
49
  storage by default: `~/.rockit`. Set `ROCKIT_ROOT_PATH` to use another shared
@@ -111,6 +114,9 @@ Az elérhető azonosítók: `codex`, `claude`, `opencode`, `kilo`, `roo`, `gemin
111
114
  és `qwen`. A létrehozott konfiguráció a standalone szervert a közös,
112
115
  felhasználónkénti RockIT socketen (`~/.rockit/rocrate-mcp-server.sock`) keresztül
113
116
  indítja.
117
+ OpenCode esetén a telepítő a meglévő konfiguráció formátumát követi: a natív V2
118
+ konfigurációban az `mcp.servers` szerkezetet használja, a V1 alakú beállításokat
119
+ pedig V2 kompatibilitási okból továbbra is elfogadja.
114
120
 
115
121
  A standalone szerver és a RocKIT alapértelmezés szerint ugyanazt a
116
122
  felhasználónkénti profil- és séma-tárolót használja: `~/.rockit`. Másik közös
package/lib/server.js CHANGED
@@ -29,9 +29,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
29
  mod
30
30
  ));
31
31
 
32
- // ../../node_modules/mime-types/node_modules/mime-db/db.json
32
+ // ../rockit-common/node_modules/mime-db/db.json
33
33
  var require_db = __commonJS({
34
- "../../node_modules/mime-types/node_modules/mime-db/db.json"(exports2, module2) {
34
+ "../rockit-common/node_modules/mime-db/db.json"(exports2, module2) {
35
35
  module2.exports = {
36
36
  "application/1d-interleaved-parityfec": {
37
37
  source: "iana"
@@ -8554,16 +8554,16 @@ var require_db = __commonJS({
8554
8554
  }
8555
8555
  });
8556
8556
 
8557
- // ../../node_modules/mime-types/node_modules/mime-db/index.js
8557
+ // ../rockit-common/node_modules/mime-db/index.js
8558
8558
  var require_mime_db = __commonJS({
8559
- "../../node_modules/mime-types/node_modules/mime-db/index.js"(exports2, module2) {
8559
+ "../rockit-common/node_modules/mime-db/index.js"(exports2, module2) {
8560
8560
  module2.exports = require_db();
8561
8561
  }
8562
8562
  });
8563
8563
 
8564
- // ../../node_modules/mime-types/index.js
8564
+ // ../rockit-common/node_modules/mime-types/index.js
8565
8565
  var require_mime_types = __commonJS({
8566
- "../../node_modules/mime-types/index.js"(exports2) {
8566
+ "../rockit-common/node_modules/mime-types/index.js"(exports2) {
8567
8567
  "use strict";
8568
8568
  var db = require_mime_db();
8569
8569
  var extname2 = require("path").extname;
@@ -8668,6 +8668,7 @@ var require_ro_crate_technical_files = __commonJS({
8668
8668
  exports2.RO_CRATE_METADATA_FILE,
8669
8669
  exports2.RO_CRATE_APPROVAL_FILE_NAME,
8670
8670
  exports2.RO_CRATE_APPROVAL_FILE,
8671
+ "**/.DS_Store",
8671
8672
  "AGENTS.md",
8672
8673
  "CLAUDE.md",
8673
8674
  `${exports2.ROCKIT_IGNORE_DIR}/`
@@ -8675,7 +8676,8 @@ var require_ro_crate_technical_files = __commonJS({
8675
8676
  exports2.DEFAULT_IGNORED_ROOT_FILES = [
8676
8677
  exports2.RO_CRATE_METADATA_FILE,
8677
8678
  exports2.RO_CRATE_PREVIEW_FILE,
8678
- exports2.RO_CRATE_APPROVAL_FILE_NAME
8679
+ exports2.RO_CRATE_APPROVAL_FILE_NAME,
8680
+ ".DS_Store"
8679
8681
  ];
8680
8682
  }
8681
8683
  });
@@ -8797,6 +8799,9 @@ var require_default_ro_crate = __commonJS({
8797
8799
  if (!normalized) {
8798
8800
  return false;
8799
8801
  }
8802
+ if (normalized.split("/").some((segment) => segment.toLowerCase() === ".ds_store")) {
8803
+ return false;
8804
+ }
8800
8805
  if (isRootEntry) {
8801
8806
  const rootName = normalized.split("/")[0];
8802
8807
  if (rootName.startsWith(".")) {
@@ -36475,6 +36480,9 @@ var require_schema_url_resolution = __commonJS({
36475
36480
  exports2.deriveResourceBaseUrl = deriveResourceBaseUrl;
36476
36481
  function buildSchemaFetchCandidates(input, provider) {
36477
36482
  const value = input.trim();
36483
+ if (!value) {
36484
+ return [];
36485
+ }
36478
36486
  const resourceBaseUrl = deriveResourceBaseUrl(provider, value);
36479
36487
  const providerTemplateCandidates = buildProviderTemplateCandidates(value, provider, resourceBaseUrl);
36480
36488
  if (!/^https?:\/\//.test(value)) {
@@ -44429,7 +44437,7 @@ var AGENT_DEFINITIONS = [
44429
44437
  executables: ["opencode"],
44430
44438
  markerPaths: [".opencode"],
44431
44439
  config: {
44432
- relativePath: [".config", "opencode", "config.json"],
44440
+ relativePath: [".config", "opencode", "opencode.json"],
44433
44441
  kind: "json"
44434
44442
  }
44435
44443
  },
@@ -44627,18 +44635,21 @@ function toSerializableLaunchConfig(launchConfig) {
44627
44635
  }
44628
44636
  function upsertJsonMcpConfig(content, agentId, launchConfig) {
44629
44637
  const parsed = content.trim() === "" ? {} : JSON.parse(content);
44630
- const existingMcp = parsed.mcp && typeof parsed.mcp === "object" && !Array.isArray(parsed.mcp) ? parsed.mcp : {};
44631
- const existingMcpServers = parsed.mcpServers && typeof parsed.mcpServers === "object" && !Array.isArray(parsed.mcpServers) ? parsed.mcpServers : {};
44638
+ const existingMcp = isRecord(parsed.mcp) ? parsed.mcp : {};
44639
+ const existingMcpServers = isRecord(parsed.mcpServers) ? parsed.mcpServers : {};
44632
44640
  if (agentId === "opencode") {
44633
- parsed.mcp = {
44634
- ...existingMcp,
44635
- rocrate: {
44636
- type: "local",
44637
- enabled: true,
44638
- command: [launchConfig.command, ...launchConfig.args],
44639
- environment: launchConfig.env
44640
- }
44641
+ const nativeV2 = isOpenCodeV2ServerMap(existingMcp.servers);
44642
+ const existingServers = isRecord(existingMcp.servers) ? existingMcp.servers : {};
44643
+ const server = {
44644
+ type: "local",
44645
+ ...nativeV2 ? { disabled: false } : { enabled: true },
44646
+ command: [launchConfig.command, ...launchConfig.args],
44647
+ environment: launchConfig.env
44641
44648
  };
44649
+ parsed.mcp = nativeV2 ? {
44650
+ ...existingMcp,
44651
+ servers: { ...existingServers, rocrate: server }
44652
+ } : { ...existingMcp, rocrate: server };
44642
44653
  } else {
44643
44654
  parsed.mcpServers = {
44644
44655
  ...existingMcpServers,
@@ -44648,6 +44659,12 @@ function upsertJsonMcpConfig(content, agentId, launchConfig) {
44648
44659
  return `${JSON.stringify(parsed, null, 2)}
44649
44660
  `;
44650
44661
  }
44662
+ function isRecord(value) {
44663
+ return typeof value === "object" && value !== null && !Array.isArray(value);
44664
+ }
44665
+ function isOpenCodeV2ServerMap(value) {
44666
+ return isRecord(value) && typeof value.type !== "string" && typeof value.command !== "string" && !Array.isArray(value.command);
44667
+ }
44651
44668
  function buildMcpConfigSection(agent, launchConfig) {
44652
44669
  if (agent.configKind === "toml") {
44653
44670
  return `${buildTomlSnippet(launchConfig)}
@@ -52328,7 +52345,7 @@ var tools = [
52328
52345
  },
52329
52346
  {
52330
52347
  name: "create_default_rocrate",
52331
- description: "Create an initial ro-crate-metadata.json for a directory that does not yet have one. Scans files, bootstraps .rockit/ignored.txt, and writes metadata atomically.",
52348
+ description: "Create an initial ro-crate-metadata.json for a directory that does not yet have one. For a user-requested local crate creation or directory-file addition, call this as the first metadata operation before context/profile discovery. Scans directory contents while excluding .DS_Store at every depth, bootstraps .rockit/ignored.txt with the **/.DS_Store default ignore rule, and writes metadata atomically. Never use it to overwrite an existing crate unless overwrite=true was explicitly requested.",
52332
52349
  inputSchema: {
52333
52350
  type: "object",
52334
52351
  properties: {
@@ -52765,13 +52782,21 @@ Use MCP \`rocrate\` tools for metadata edits and validation. Do not edit
52765
52782
  \`ro-crate-metadata.json\` directly unless the user explicitly asks for raw JSON
52766
52783
  editing and accepts the risk.
52767
52784
 
52768
- If the user starts work in a local directory and \`ro-crate-metadata.json\` is not
52769
- present, offer to initialize the directory with \`create_default_rocrate\` before
52770
- other metadata work. Explain that it scans the directory, writes
52771
- \`ro-crate-metadata.json\`, and bootstraps \`.rockit/ignored.txt\`. Do not overwrite
52772
- an existing metadata file unless the user explicitly asks and the tool call uses
52785
+ For a user-requested local RO-Crate creation or addition of files from a
52786
+ directory, check whether \`ro-crate-metadata.json\` exists. If it is absent, call
52787
+ \`create_default_rocrate\` as the first metadata operation after reading this
52788
+ workflow doc. Do not merely offer the tool or ask whether to initialize; the
52789
+ user's request authorizes this initialization. Then continue with
52790
+ \`get_rocrate_context\` and profile discovery before adding curated metadata. For
52791
+ read-only requests, do not initialize a missing crate. Do not overwrite an
52792
+ existing metadata file unless the user explicitly asks and the tool call uses
52773
52793
  \`overwrite=true\`.
52774
52794
 
52795
+ \`create_default_rocrate\` excludes \`.DS_Store\` files at every directory depth and
52796
+ adds the \`**/.DS_Store\` ignore rule to \`.rockit/ignored.txt\` by default. When
52797
+ adding files to an existing crate, omit \`.DS_Store\` entities by default and
52798
+ preserve or add its ignore rule in \`.rockit/ignored.txt\`.
52799
+
52775
52800
  ## Managed Workflow
52776
52801
 
52777
52802
  Before each step, output a brief summary after reading the referenced workflow
@@ -52916,7 +52941,11 @@ These rules are mandatory for RO-Crate metadata quality.
52916
52941
  Always follow this sequence when curating RO-Crate metadata:
52917
52942
 
52918
52943
  0. Use MCP \`rocrate\` tools for metadata edits and validation. Do not edit JSON directly.
52919
- 1. Call \`get_rocrate_context\` before any edit.
52944
+ 1. If the user requested local crate creation or adding files from a directory
52945
+ and \`ro-crate-metadata.json\` is absent, call \`create_default_rocrate\` first.
52946
+ This initializes the requested crate; do not stop to ask whether to do it.
52947
+ Then call \`get_rocrate_context\`. For an existing crate, call
52948
+ \`get_rocrate_context\` before any edit.
52920
52949
  In local mode this must be treated as a profile-resolution step as well as a context read.
52921
52950
  If the crate already contains \`conformsTo\` URLs, do not proceed until the corresponding
52922
52951
  profiles have been downloaded into the local profile store or the resolution failure
@@ -52939,7 +52968,9 @@ Always follow this sequence when curating RO-Crate metadata:
52939
52968
  locally,
52940
52969
  - do not collapse the list to only the profile you recommend,
52941
52970
  - if one profile seems best, mark it as recommended while still listing the other available profiles,
52942
- - offer a numbered menu in this order: all listed local profiles and remote templates first, then "provide another metadata profile URL", then "continue without a profile",
52971
+ - show the choices in the visible chat message as a clearly formatted Markdown menu, not only in tool output or collapsed details. Use a numbered list with one selectable profile/template per item; do not combine choices into a comma-separated paragraph.
52972
+ - group local profiles and remote CEDAR templates under separate short headings. Include each local profile's name, version, and \`conformsTo\` URL. For each remote leaf template, show its provider/folder path and template name; keep each choice on its own numbered line. Mark a recommendation inline without hiding other choices.
52973
+ - offer a numbered menu in this order: all listed local profiles and remote templates first, then "provide another metadata profile URL", then "continue without a profile". End with a direct prompt such as "Reply with the number of your choice." Keep the numbering continuous across groups.
52943
52974
  - stop and wait for the user's choice before planning fields, searching the web, or writing metadata,
52944
52975
  - for an already-downloaded local profile, call \`update_profile_conforms_to\`
52945
52976
  with its \`conformsTo\` URL after the user chooses it,
@@ -69995,10 +70026,11 @@ For a direct request to open, view, show, inspect, or launch a dataset in AROMA\
69995
70026
  Before RO-Crate editing/advice, call read_agent_workflow_doc with name "rocrate_workflow.md" and follow it.
69996
70027
  Read the referenced step doc before each workflow step.
69997
70028
  Primary artifact is ro-crate-metadata.json.
69998
- If no ro-crate-metadata.json exists in a local directory, offer create_default_rocrate before other metadata work; never overwrite existing metadata unless explicitly requested with overwrite=true.
70029
+ For a user-requested local RO-Crate creation or addition of files from a directory, if the target has no ro-crate-metadata.json, call create_default_rocrate as the first metadata operation after reading the workflow doc. Do not merely offer the tool or ask whether to initialize; the user's request authorizes this initialization. Then continue with get_rocrate_context and profile discovery before adding curated metadata. For read-only requests, do not initialize a missing crate. Never overwrite existing metadata unless the user explicitly requests it and the tool call uses overwrite=true.
70030
+ When adding files from a directory, omit .DS_Store entities by default. The default initialization excludes .DS_Store at every depth and writes the recursive .DS_Store ignore rule to .rockit/ignored.txt; preserve or add that ignore rule when maintaining the ignore file.
69999
70031
  Prefer RO-Crate tools over ad-hoc edits.
70000
70032
  The RO-Crate MCP dashboard is available at ${getDashboardUrl()}; open it when the user asks to inspect MCP activity or dashboard telemetry.
70001
- First edit step is get_rocrate_context to discover active profile constraints; do not start with web search.
70033
+ After initialization when needed, call get_rocrate_context to discover active profile constraints before curated metadata edits; do not start with web search.
70002
70034
  Use update_profile_conforms_to to change profile URLs on conformsTo; apply_changes must not edit conformsTo.
70003
70035
  apply_changes writes by default; set dryRun=true to preview without persisting.
70004
70036
  Treat profile scope as entity-local (only entities explicitly declaring that profile URL in conformsTo).