@akira-tl/forgerelay 1.3.2 → 1.3.3
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
CHANGED
|
@@ -4,6 +4,12 @@ All notable ForgeRelay changes are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.3.3] - 2026-10-15
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- `open_workspace` 现在明确区分 Host 顶层 Core tool、`capabilityCatalog` 与 `capabilityFingerprint`:`minimal` / `full` 的核心工具仍由 Host 当前 `tools/list` snapshot 决定,不再允许仅因 fingerprint/catalog 未列出 `write`、`edit` 或 `bash` 就把 ForgeRelay 判断为只读;模型可见标签也改为明确的 Capability catalog 与 semantic feature fingerprint 表述。
|
|
12
|
+
|
|
7
13
|
## [1.3.2] - 2026-10-08
|
|
8
14
|
|
|
9
15
|
### Security
|
|
@@ -12,7 +12,7 @@ import { logToolCall, workspaceLogContext } from "../../core/tool-support.js";
|
|
|
12
12
|
import { buildExecutionShellContext } from "../../../server-instructions.js";
|
|
13
13
|
import { workspaceColorFor, workspaceIdentityName } from "../../../../workspace-colors.js";
|
|
14
14
|
export const workspaceTaskUsageInstruction = "Use workspace.tasks proactively for work that spans multiple steps or sessions: create or update Tasks to preserve useful next steps and current state, and read its summary when resuming relevant unfinished work. Do not query it mechanically on every open_workspace call.";
|
|
15
|
-
export const capabilityDiscoveryInstruction = "For capability describe/run, use only names present in capabilityCatalog. capabilityFingerprint.capabilities is a semantic feature fingerprint, not a callable registry; capabilityGuides are documentation descriptors, not callable capabilities.";
|
|
15
|
+
export const capabilityDiscoveryInstruction = "Core MCP tools are separate from capabilityCatalog and capabilityFingerprint; the Host's current tools/list snapshot determines which top-level tools can be called. In toolMode=minimal or full, ForgeRelay's regular core surface is open_workspace, capability, close_workspace, read, write, edit, rename, delete, and bash. Do not infer that write, edit, or bash are unavailable merely because they are absent from capabilityCatalog or capabilityFingerprint. If an expected core tool is missing from the Host tool snapshot, treat the Host MCP metadata as stale or incomplete rather than describing ForgeRelay as read-only. For capability describe/run, use only names present in capabilityCatalog. capabilityFingerprint.capabilities is a semantic feature fingerprint, not a callable registry; capabilityGuides are documentation descriptors, not callable capabilities.";
|
|
16
16
|
export async function presentLocalWorkspaceOpen(options, input, contextData) {
|
|
17
17
|
const { config, forgerelayVersion: FORGERELAY_VERSION, workspaces, workspaceTasks, reviewCheckpoints, capabilityRegistry, subagentProviders, hooks, rememberWorkspacePanelState, } = options;
|
|
18
18
|
const { path, workspaceId, mode, baseRef, targetBranch, newWorktree, newWorkspace, context } = input;
|
|
@@ -155,7 +155,7 @@ export async function presentLocalWorkspaceOpen(options, input, contextData) {
|
|
|
155
155
|
? `Available skills: ${visibleSkills.map((skill) => skill.name).join(", ")}`
|
|
156
156
|
: undefined,
|
|
157
157
|
capabilityCatalog.length > 0
|
|
158
|
-
? `
|
|
158
|
+
? `Capability catalog entries: ${capabilityCatalog.map((entry) => entry.name).join(", ")}`
|
|
159
159
|
: undefined,
|
|
160
160
|
visibleCapabilityGuides.length > 0
|
|
161
161
|
? `Capability guides: ${visibleCapabilityGuides.map((guide) => guide.name).join(", ")}`
|
|
@@ -175,7 +175,7 @@ export async function presentLocalWorkspaceOpen(options, input, contextData) {
|
|
|
175
175
|
staleWorkspaces.length > 0
|
|
176
176
|
? `This Workspace has been idle for more than 2 days: ${staleWorkspaces.map((stale) => `${stale.workspaceId} last-used=${stale.lastUsedAt}`).join(", ")}. It remains available to resume or explicitly close; do not clean it up automatically.`
|
|
177
177
|
: undefined,
|
|
178
|
-
`ForgeRelay ${capabilityFingerprint.version}
|
|
178
|
+
`ForgeRelay semantic feature fingerprint (${capabilityFingerprint.version}): ${capabilityFingerprint.capabilities.join(", ")}`,
|
|
179
179
|
instruction,
|
|
180
180
|
resourceUpdate?.text,
|
|
181
181
|
].filter(Boolean).join("\n"),
|
|
@@ -503,7 +503,7 @@ async function handleOpenWorkspace(options, input, requestContext) {
|
|
|
503
503
|
? `Available skills: ${relayedSkills.map((skill) => String(skill.name ?? "")).filter(Boolean).join(", ")}`
|
|
504
504
|
: undefined,
|
|
505
505
|
relayedCapabilities.length > 0
|
|
506
|
-
? `
|
|
506
|
+
? `Capability catalog entries: ${relayedCapabilities.map((entry) => String(entry.name ?? "")).filter(Boolean).join(", ")}`
|
|
507
507
|
: undefined,
|
|
508
508
|
opened.instruction,
|
|
509
509
|
].filter(Boolean).join("\n");
|
package/docs/configuration.md
CHANGED
|
@@ -453,7 +453,12 @@ version, tool mode, and stable semantic capability names. The fingerprint also
|
|
|
453
453
|
reports enabled optional domains such as subagent profile discovery, native
|
|
454
454
|
artifact download, MCP App UI, or aggregate `review.changes` when those
|
|
455
455
|
features are actually available; it remains a semantic summary rather than a
|
|
456
|
-
copy of `tools/list`.
|
|
456
|
+
copy of `tools/list`. Neither `capabilityFingerprint` nor `capabilityCatalog`
|
|
457
|
+
is evidence that an omitted Core tool is unavailable. The Host's current
|
|
458
|
+
`tools/list` snapshot is authoritative for top-level callability; in
|
|
459
|
+
`minimal` and `full`, the expected regular Core surface remains
|
|
460
|
+
`open_workspace`, `capability`, `close_workspace`, `read`, `write`,
|
|
461
|
+
`edit`, `rename`, `delete`, and `bash`.
|
|
457
462
|
|
|
458
463
|
Bootstrap responses also return `capabilityGuides`, which are compact descriptors
|
|
459
464
|
for built-in ForgeRelay documentation that the Agent can explicitly load with
|
|
@@ -466,11 +471,14 @@ context.
|
|
|
466
471
|
|
|
467
472
|
There is no separate progressive-disclosure configuration switch. Capability
|
|
468
473
|
Guide discovery is built in, while optional low-frequency actions are advertised
|
|
469
|
-
through the workspace Capability catalog instead of adding top-level tools. If
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
+
through the workspace Capability catalog instead of adding top-level tools. If an
|
|
475
|
+
expected Core tool is missing from the Host's current tool snapshot, or the
|
|
476
|
+
fingerprint reports a semantic feature that the Host metadata does not reflect,
|
|
477
|
+
treat that as stale or incomplete Host MCP metadata: reconnect/refresh the
|
|
478
|
+
integration or use a Host context that reloads `tools/list`. Do not describe
|
|
479
|
+
ForgeRelay as read-only merely because `write`, `edit`, or `bash` is absent
|
|
480
|
+
from the fingerprint or Capability catalog. The ForgeRelay process cannot force
|
|
481
|
+
a Host to invalidate its cached schema.
|
|
474
482
|
|
|
475
483
|
### LSP code intelligence
|
|
476
484
|
|