@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 +6 -0
- package/lib/server.js +60 -28
- package/lib/server.js.map +3 -3
- package/node_modules/cedar-template-converter/dist/cedar-converter.d.ts.map +1 -1
- package/node_modules/cedar-template-converter/dist/cedar-converter.js +12 -3
- package/node_modules/cedar-template-converter/dist/cedar-converter.js.map +1 -1
- package/package.json +2 -2
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
|
-
//
|
|
32
|
+
// ../rockit-common/node_modules/mime-db/db.json
|
|
33
33
|
var require_db = __commonJS({
|
|
34
|
-
"
|
|
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
|
-
//
|
|
8557
|
+
// ../rockit-common/node_modules/mime-db/index.js
|
|
8558
8558
|
var require_mime_db = __commonJS({
|
|
8559
|
-
"
|
|
8559
|
+
"../rockit-common/node_modules/mime-db/index.js"(exports2, module2) {
|
|
8560
8560
|
module2.exports = require_db();
|
|
8561
8561
|
}
|
|
8562
8562
|
});
|
|
8563
8563
|
|
|
8564
|
-
//
|
|
8564
|
+
// ../rockit-common/node_modules/mime-types/index.js
|
|
8565
8565
|
var require_mime_types = __commonJS({
|
|
8566
|
-
"
|
|
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", "
|
|
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 =
|
|
44631
|
-
const existingMcpServers =
|
|
44638
|
+
const existingMcp = isRecord(parsed.mcp) ? parsed.mcp : {};
|
|
44639
|
+
const existingMcpServers = isRecord(parsed.mcpServers) ? parsed.mcpServers : {};
|
|
44632
44640
|
if (agentId === "opencode") {
|
|
44633
|
-
|
|
44634
|
-
|
|
44635
|
-
|
|
44636
|
-
|
|
44637
|
-
|
|
44638
|
-
|
|
44639
|
-
|
|
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
|
|
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
|
-
|
|
52769
|
-
|
|
52770
|
-
|
|
52771
|
-
|
|
52772
|
-
|
|
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.
|
|
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
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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).
|