@akira-tl/forgerelay 0.10.4 → 0.10.5
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/CHANGELOG.md +6 -0
- package/dist/mcp/server/workspace/runtime/workspace-open-presentation.js +1 -3
- package/dist/server.js +8 -6
- package/dist/workspaces/bootstrap.js +0 -1
- package/dist/workspaces/resources/resource-monitor.js +4 -5
- package/dist/workspaces/resources/skills.js +0 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable ForgeRelay changes are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.5] - 2026-09-06
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- All discovered Skills remain visible to the Agent for model-side matching; legacy `disable-model-invocation` frontmatter is ignored instead of hiding a Skill from `open_workspace` discovery.
|
|
12
|
+
|
|
7
13
|
## [0.10.4] - 2026-09-06
|
|
8
14
|
|
|
9
15
|
### Added
|
|
@@ -42,9 +42,7 @@ export async function presentLocalWorkspaceOpen(options, input, contextData) {
|
|
|
42
42
|
root: workspace.root,
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
const cardSkills = workspace.skills
|
|
46
|
-
.filter((skill) => !skill.disableModelInvocation)
|
|
47
|
-
.map((skill) => ({
|
|
45
|
+
const cardSkills = workspace.skills.map((skill) => ({
|
|
48
46
|
name: skill.name,
|
|
49
47
|
description: skill.description,
|
|
50
48
|
}));
|
package/dist/server.js
CHANGED
|
@@ -323,9 +323,10 @@ export function createMcpServer(config, workspaces, reviewCheckpoints, processSe
|
|
|
323
323
|
const availableAgentsFiles = opened.availableAgentsFiles.map((file) => ({
|
|
324
324
|
path: formatAgentsPath(file.path, workspace.root),
|
|
325
325
|
}));
|
|
326
|
-
const skills = workspace.skills
|
|
327
|
-
|
|
328
|
-
|
|
326
|
+
const skills = workspace.skills.map((skill) => ({
|
|
327
|
+
name: skill.name,
|
|
328
|
+
description: skill.description,
|
|
329
|
+
}));
|
|
329
330
|
const capabilityGuides = workspace.capabilityGuides.map((guide) => ({
|
|
330
331
|
name: guide.name,
|
|
331
332
|
description: guide.description,
|
|
@@ -404,9 +405,10 @@ export function createMcpServer(config, workspaces, reviewCheckpoints, processSe
|
|
|
404
405
|
providerUnavailableReason: availability?.reason,
|
|
405
406
|
};
|
|
406
407
|
});
|
|
407
|
-
const skills = workspace.skills
|
|
408
|
-
|
|
409
|
-
|
|
408
|
+
const skills = workspace.skills.map((skill) => ({
|
|
409
|
+
name: skill.name,
|
|
410
|
+
description: skill.description,
|
|
411
|
+
}));
|
|
410
412
|
return compactWorkspacePresentation({
|
|
411
413
|
workspaceId: workspace.id,
|
|
412
414
|
root: workspace.root,
|
|
@@ -34,7 +34,6 @@ export function bootstrapContextFingerprints(workspace, agentsFiles, availableAg
|
|
|
34
34
|
name: skill.name,
|
|
35
35
|
description: skill.description,
|
|
36
36
|
filePath: resolve(skill.filePath),
|
|
37
|
-
disableModelInvocation: skill.disableModelInvocation ?? false,
|
|
38
37
|
}))
|
|
39
38
|
.sort((left, right) => left.name.localeCompare(right.name) || left.filePath.localeCompare(right.filePath)),
|
|
40
39
|
skillDiagnostics: workspace.skillDiagnostics,
|
|
@@ -348,17 +348,16 @@ function formatSkillMetadataDelta(change) {
|
|
|
348
348
|
if (JSON.stringify(oldSummary) === JSON.stringify(newSummary))
|
|
349
349
|
return undefined;
|
|
350
350
|
if (!oldSummary) {
|
|
351
|
-
return `Skill metadata added: ${change.displayPath}\n+ name: ${newSummary?.name ?? change.skillName ?? "unknown"}\n+ description: ${newSummary?.description ?? ""}
|
|
351
|
+
return `Skill metadata added: ${change.displayPath}\n+ name: ${newSummary?.name ?? change.skillName ?? "unknown"}\n+ description: ${newSummary?.description ?? ""}`;
|
|
352
352
|
}
|
|
353
353
|
if (!newSummary)
|
|
354
354
|
return `Skill removed: ${change.displayPath}`;
|
|
355
355
|
const lines = [`Skill metadata delta: ${change.displayPath}`];
|
|
356
|
-
for (const field of ["name", "description"
|
|
356
|
+
for (const field of ["name", "description"]) {
|
|
357
357
|
if (oldSummary[field] === newSummary[field])
|
|
358
358
|
continue;
|
|
359
|
-
|
|
360
|
-
lines.push(
|
|
361
|
-
lines.push(`+ ${label}: ${String(newSummary[field])}`);
|
|
359
|
+
lines.push(`- ${field}: ${String(oldSummary[field])}`);
|
|
360
|
+
lines.push(`+ ${field}: ${String(newSummary[field])}`);
|
|
362
361
|
}
|
|
363
362
|
return lines.join("\n");
|
|
364
363
|
}
|
|
@@ -173,7 +173,6 @@ function skillSummaryFromFrontmatter(frontmatter, filePath) {
|
|
|
173
173
|
return {
|
|
174
174
|
name: normalizedSkillName(frontmatter.name, filePath),
|
|
175
175
|
description: typeof frontmatter.description === "string" ? frontmatter.description.trim() : "",
|
|
176
|
-
disableModelInvocation: frontmatter["disable-model-invocation"] === true,
|
|
177
176
|
};
|
|
178
177
|
}
|
|
179
178
|
function parseSkillFrontmatter(content) {
|
package/package.json
CHANGED