@arpproject/vibearp-mcp 1.3.0 → 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 +8 -0
- package/lib/server.js +68 -29
- 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
|
|
@@ -150,6 +156,8 @@ engedélyezett hozzáféréssel rendelkezik.
|
|
|
150
156
|
This package is maintained by SZTAKI, Department of Distributed Systems
|
|
151
157
|
(<https://dsd.sztaki.hu>).
|
|
152
158
|
|
|
159
|
+
Contact: [rockit@dsd.sztaki.hu](mailto:rockit@dsd.sztaki.hu).
|
|
160
|
+
|
|
153
161
|
Individual contributors are listed in `package.json`.
|
|
154
162
|
|
|
155
163
|
## License
|
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: {
|
|
@@ -52752,6 +52769,11 @@ You are editing an RO-Crate as a data steward.
|
|
|
52752
52769
|
|
|
52753
52770
|
## Mandatory Startup
|
|
52754
52771
|
|
|
52772
|
+
The configured RO-Crate MCP server's call names are "RO-Crate MCP" and
|
|
52773
|
+
"VibeARP". When a user says either name, use the configured server's tools even
|
|
52774
|
+
if the harness displays a different server label (commonly \`rocrate\` or
|
|
52775
|
+
\`rocrate-mcp-server\`).
|
|
52776
|
+
|
|
52755
52777
|
Before advising on or editing RO-Crate metadata, read this top-level workflow doc
|
|
52756
52778
|
with \`read_agent_workflow_doc\`. Then read the step-specific workflow doc before
|
|
52757
52779
|
each step.
|
|
@@ -52760,13 +52782,21 @@ Use MCP \`rocrate\` tools for metadata edits and validation. Do not edit
|
|
|
52760
52782
|
\`ro-crate-metadata.json\` directly unless the user explicitly asks for raw JSON
|
|
52761
52783
|
editing and accepts the risk.
|
|
52762
52784
|
|
|
52763
|
-
|
|
52764
|
-
|
|
52765
|
-
|
|
52766
|
-
|
|
52767
|
-
|
|
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
|
|
52768
52793
|
\`overwrite=true\`.
|
|
52769
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
|
+
|
|
52770
52800
|
## Managed Workflow
|
|
52771
52801
|
|
|
52772
52802
|
Before each step, output a brief summary after reading the referenced workflow
|
|
@@ -52911,7 +52941,11 @@ These rules are mandatory for RO-Crate metadata quality.
|
|
|
52911
52941
|
Always follow this sequence when curating RO-Crate metadata:
|
|
52912
52942
|
|
|
52913
52943
|
0. Use MCP \`rocrate\` tools for metadata edits and validation. Do not edit JSON directly.
|
|
52914
|
-
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.
|
|
52915
52949
|
In local mode this must be treated as a profile-resolution step as well as a context read.
|
|
52916
52950
|
If the crate already contains \`conformsTo\` URLs, do not proceed until the corresponding
|
|
52917
52951
|
profiles have been downloaded into the local profile store or the resolution failure
|
|
@@ -52934,7 +52968,9 @@ Always follow this sequence when curating RO-Crate metadata:
|
|
|
52934
52968
|
locally,
|
|
52935
52969
|
- do not collapse the list to only the profile you recommend,
|
|
52936
52970
|
- if one profile seems best, mark it as recommended while still listing the other available profiles,
|
|
52937
|
-
-
|
|
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.
|
|
52938
52974
|
- stop and wait for the user's choice before planning fields, searching the web, or writing metadata,
|
|
52939
52975
|
- for an already-downloaded local profile, call \`update_profile_conforms_to\`
|
|
52940
52976
|
with its \`conformsTo\` URL after the user chooses it,
|
|
@@ -69242,8 +69278,9 @@ async function startServerWithTransports(options) {
|
|
|
69242
69278
|
const mcpServer = new McpServer(
|
|
69243
69279
|
{
|
|
69244
69280
|
name: "rocrate-mcp-server",
|
|
69281
|
+
title: "RO-Crate MCP / VibeARP",
|
|
69245
69282
|
version: getBuildInfo().version,
|
|
69246
|
-
description: "RO-Crate metadata tools. The canonical way to open a local RO-Crate dataset in AROMA is open_aroma_for_local_file."
|
|
69283
|
+
description: "RO-Crate metadata tools, also known as RO-Crate MCP or VibeARP. These names refer to this same server. The canonical way to open a local RO-Crate dataset in AROMA is open_aroma_for_local_file."
|
|
69247
69284
|
},
|
|
69248
69285
|
{
|
|
69249
69286
|
capabilities: {
|
|
@@ -69983,15 +70020,17 @@ function getDashboardUrl() {
|
|
|
69983
70020
|
}
|
|
69984
70021
|
function getMcpServerInstructions() {
|
|
69985
70022
|
return `RO-CRATE TOOL ROUTING
|
|
70023
|
+
This MCP server is known by the call names "RO-Crate MCP" and "VibeARP". When a user mentions either name, use this configured RO-Crate MCP server's tools, regardless of the server label shown by the harness (commonly "rocrate" or "rocrate-mcp-server"). Do not search for or select a different MCP server based on these names.
|
|
69986
70024
|
The canonical way to open a local RO-Crate dataset in AROMA is open_aroma_for_local_file.
|
|
69987
70025
|
For a direct request to open, view, show, inspect, or launch a dataset in AROMA\u2014including the exact request "open dataset in AROMA"\u2014call open_aroma_for_local_file immediately as the first tool. Treat "dataset" as the RO-Crate in the current working directory and pass "ro-crate-metadata.json"; otherwise pass the dataset's ro-crate-metadata.json path.
|
|
69988
70026
|
Before RO-Crate editing/advice, call read_agent_workflow_doc with name "rocrate_workflow.md" and follow it.
|
|
69989
70027
|
Read the referenced step doc before each workflow step.
|
|
69990
70028
|
Primary artifact is ro-crate-metadata.json.
|
|
69991
|
-
|
|
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.
|
|
69992
70031
|
Prefer RO-Crate tools over ad-hoc edits.
|
|
69993
70032
|
The RO-Crate MCP dashboard is available at ${getDashboardUrl()}; open it when the user asks to inspect MCP activity or dashboard telemetry.
|
|
69994
|
-
|
|
70033
|
+
After initialization when needed, call get_rocrate_context to discover active profile constraints before curated metadata edits; do not start with web search.
|
|
69995
70034
|
Use update_profile_conforms_to to change profile URLs on conformsTo; apply_changes must not edit conformsTo.
|
|
69996
70035
|
apply_changes writes by default; set dryRun=true to preview without persisting.
|
|
69997
70036
|
Treat profile scope as entity-local (only entities explicitly declaring that profile URL in conformsTo).
|