@akira-tl/forgerelay 0.8.5 → 0.8.7
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 +22 -0
- package/README.md +8 -10
- package/dist/activity/audit-store.js +44 -6
- package/dist/activity/mcp-query-tools.js +53 -36
- package/dist/activity/query-service.js +41 -11
- package/dist/cli.js +16 -17
- package/dist/composite-activity.js +124 -33
- package/dist/config.js +8 -13
- package/dist/db/migrations.js +9 -0
- package/dist/db/schema.js +1 -0
- package/dist/lsp/test-support/server-fixture.js +7 -7
- package/dist/mcp/server-instructions.js +2 -2
- package/dist/process-sessions.js +2 -2
- package/dist/remote-auth.js +11 -1
- package/dist/remote-mcp-connection-pool.js +90 -0
- package/dist/remote-transport.js +28 -14
- package/dist/remote-workspace-relay.js +53 -23
- package/dist/server.js +105 -70
- package/dist/skills.js +1 -1
- package/dist/subagents/profiles.js +1 -2
- package/dist/subagents/providers/adapters/pi.js +2 -2
- package/dist/subagents/providers/availability.js +2 -2
- package/dist/subagents/providers/path.js +4 -4
- package/dist/ui/.vite/manifest.json +32 -32
- package/dist/ui/activity-panel-app.html +3 -3
- package/dist/ui/assets/{activity-panel-app-E1ju2dqI.js → activity-panel-app-CUAN6zyW.js} +1 -1
- package/dist/ui/assets/{heavy-payload-CeW-n9w5.js → heavy-payload-CgzrutLm.js} +1 -1
- package/dist/ui/assets/{review-payload-B9CO298v.js → review-payload-BrLbezbq.js} +1 -1
- package/dist/ui/assets/{scrollbar-C2twAENW.js → scrollbar-CbhpdW05.js} +1 -1
- package/dist/ui/assets/workspace-app-Bhj96tsR.js +1 -0
- package/dist/ui/assets/{workspace-app-CwbJnb_w.js → workspace-app-CxwJuZyS.js} +1 -1
- package/dist/ui/assets/{workspace-app-BztEvZIC.js → workspace-app-D6UR0AFl.js} +3 -3
- package/dist/ui/assets/workspace-app-ldjBmCJR.css +1 -0
- package/dist/ui/assets/workspace-lifecycle-app-Cqfhx9pV.js +1 -0
- package/dist/ui/workspace-app.html +4 -4
- package/dist/ui/workspace-lifecycle-app.html +4 -4
- package/dist/user-config.js +3 -19
- package/dist/workspace-presentation.js +69 -0
- package/dist/workspace-store.js +29 -1
- package/dist/workspaces.js +59 -19
- package/docs/agent-profile-schema.md +4 -9
- package/docs/artifact-exchange.md +2 -1
- package/docs/chatgpt-coding-workflow.md +21 -19
- package/docs/configuration.md +34 -39
- package/docs/gotchas.md +10 -7
- package/docs/roadmap.md +11 -4
- package/docs/security.md +3 -2
- package/docs/setup.md +8 -5
- package/docs/versioning.md +1 -1
- package/package.json +3 -2
- package/scripts/debug/accept.mjs +7 -1
- package/scripts/debug/relay-accept.mjs +0 -1
- package/scripts/debug/runtime.mjs +0 -4
- package/scripts/debug/runtime.test.mjs +0 -2
- package/scripts/debug/traffic/run.sh +5 -0
- package/scripts/debug/traffic/traffic-audit.mjs +907 -0
- package/scripts/release/push-ready.mjs +124 -0
- package/scripts/release/push-ready.test.mjs +108 -0
- package/scripts/release/release-gate.test.mjs +1 -0
- package/scripts/release-proof.mjs +16 -1
- package/dist/ui/assets/workspace-app-YnUST8IP.css +0 -1
- package/dist/ui/assets/workspace-app-rKuhdae8.js +0 -1
- package/dist/ui/assets/workspace-lifecycle-app-CEfMdudP.js +0 -1
package/docs/roadmap.md
CHANGED
|
@@ -305,7 +305,11 @@ must be published successfully before work begins on the next stage.
|
|
|
305
305
|
allowlist-based read-only inspection of other Workspaces and their safe Task
|
|
306
306
|
projections;
|
|
307
307
|
- **0.8.5** — verify the complete contract across Workspace Relay and publish the
|
|
308
|
-
accepted 0.8 lifecycle/Task model
|
|
308
|
+
accepted 0.8 lifecycle/Task model;
|
|
309
|
+
- **0.8.7** — make `open_workspace(context="auto")` bootstrap delivery component-level,
|
|
310
|
+
returning only changed/removed AGENTS, nested-instruction, Skill/diagnostic,
|
|
311
|
+
Capability-guide, or Subagent-profile domains while preserving `full`/`none`,
|
|
312
|
+
Composite member, Relay, and legacy delivery-record semantics.
|
|
309
313
|
|
|
310
314
|
The release boundary is part of the dependency graph, not just a documentation
|
|
311
315
|
milestone: the next stage remains blocked until the previous version's tag-triggered
|
|
@@ -365,6 +369,9 @@ New public names use ForgeRelay:
|
|
|
365
369
|
- `.forgerelay`
|
|
366
370
|
- `forgerelay/*` managed branches
|
|
367
371
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
372
|
+
Rename-era public compatibility adapters have a bounded migration window rather
|
|
373
|
+
than permanent support. `DEVSPACE_*`, automatic `~/.devspace` reuse, legacy
|
|
374
|
+
`.devspace/agents` discovery, and old package-path special cases are retired once
|
|
375
|
+
they are outside that window. Persisted internal identifiers remain compatible
|
|
376
|
+
when removing them would orphan real user state; those are storage/protocol
|
|
377
|
+
migration concerns, not public product aliases.
|
package/docs/security.md
CHANGED
|
@@ -60,8 +60,9 @@ FORGERELAY_OAUTH_OWNER_TOKEN="$(openssl rand -base64 32)"
|
|
|
60
60
|
|
|
61
61
|
The token must be at least 16 characters.
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
Rename-era `DEVSPACE_*` environment-variable and automatic `~/.devspace`
|
|
64
|
+
configuration fallbacks have ended. Use canonical `FORGERELAY_*` settings and
|
|
65
|
+
explicit paths when migrating older installations.
|
|
65
66
|
|
|
66
67
|
## Public URL and tunnels
|
|
67
68
|
|
package/docs/setup.md
CHANGED
|
@@ -121,11 +121,14 @@ Keep `auth.json` private.
|
|
|
121
121
|
|
|
122
122
|
### Existing DevSpace configuration
|
|
123
123
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
Automatic DevSpace directory fallback has ended. ForgeRelay defaults to
|
|
125
|
+
`~/.forgerelay` and ignores `DEVSPACE_CONFIG_DIR`.
|
|
126
|
+
|
|
127
|
+
Before upgrading an older installation, move or copy the needed configuration
|
|
128
|
+
and credentials into the ForgeRelay directory, or temporarily point
|
|
129
|
+
`FORGERELAY_CONFIG_DIR` at the old directory. If state or managed worktrees live
|
|
130
|
+
under older paths, preserve them with explicit `stateDir` / `worktreeRoot`
|
|
131
|
+
configuration until migration is complete.
|
|
129
132
|
|
|
130
133
|
## Check the setup
|
|
131
134
|
|
package/docs/versioning.md
CHANGED
|
@@ -167,7 +167,7 @@ npm publishing token.
|
|
|
167
167
|
3. Run the appropriate `release:patch`, `release:minor`, or `release:major`
|
|
168
168
|
command.
|
|
169
169
|
4. Review the generated version and changelog diff, then commit the release-ready code and metadata.
|
|
170
|
-
5.
|
|
170
|
+
5. Run `npm run release:verify` on the committed release HEAD, then run `npm run release:push-ready`. This is the only normal release-ready branch push entrypoint: it requires a proof for the current HEAD, atomically advances `origin/main` plus the current `release/*` branch when applicable, rejects a local `main` with real unique patches, and synchronizes the local `main` ref after the remote push succeeds.
|
|
171
171
|
6. Create the exact version tag, for example:
|
|
172
172
|
|
|
173
173
|
```bash
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akira-tl/forgerelay",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.7",
|
|
4
4
|
"description": "Local development control plane for MCP coding agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/Akira-TL/forgerelay#readme",
|
|
@@ -48,9 +48,10 @@
|
|
|
48
48
|
"release:parity": "node scripts/release-parity.mjs",
|
|
49
49
|
"release:pack": "node scripts/release/pack.mjs",
|
|
50
50
|
"release:publish": "node scripts/release/publish.mjs",
|
|
51
|
+
"release:push-ready": "node scripts/release/push-ready.mjs",
|
|
51
52
|
"postinstall": "node scripts/fix-node-pty-permissions.mjs",
|
|
52
53
|
"start": "node dist/cli.js serve",
|
|
53
|
-
"test": "node --test scripts/debug/runtime.test.mjs scripts/release-proof.test.mjs scripts/release/release-gate.test.mjs scripts/release/release-version.test.mjs && tsx src/oauth/router.test.ts && tsx src/remote-auth-cli.test.ts && tsx src/remote-ssh-auth-cli.test.ts && tsx src/remote-workspace-relay.test.ts && tsx src/remote-workspace-relay-process.test.ts && tsx src/config.test.ts && tsx src/lsp/language-server-config.test.ts && tsx src/lsp/normalization/hover.test.ts && tsx src/lsp/references.server.test.ts && tsx src/lsp/operations/document-symbols.server.test.ts && tsx src/lsp/operations/workspace-symbols.server.test.ts && tsx src/lsp/operations/diagnostics-push.server.test.ts && tsx src/lsp/operations/diagnostics-pull.server.test.ts && tsx src/lsp/operations/request-hardening.server.test.ts && tsx src/lsp/operations/recovery.server.test.ts && tsx src/lsp/operations/lifecycle.server.test.ts && tsx src/lsp/runtime/semantic-requests.test.ts && tsx src/logger.test.ts && tsx src/proxy-trust.test.ts && tsx src/mcp-app-template.test.ts && tsx src/hooks.test.ts && tsx src/capability-registry.test.ts && tsx src/mcp/server-instructions.test.ts && tsx src/request-meta.test.ts && tsx src/incoming-artifacts.test.ts && tsx src/artifact-download.test.ts && tsx src/ui/card-types.test.ts && tsx src/ui/workspace-lifecycle-app.test.ts && tsx src/ui/activity/model.test.ts && tsx src/ui/patch-display.test.ts && tsx src/ui/tool-display.test.ts && tsx src/apply-patch.test.ts && tsx src/process-platform.test.ts && tsx src/process-sessions.test.ts && tsx src/mcp-sessions.test.ts && tsx src/server-shutdown.test.ts && tsx src/subagents/providers/adapters/codex.test.ts && tsx src/subagents/providers/registry.test.ts && tsx src/subagents/providers/availability.test.ts && tsx src/subagents/profiles.test.ts && tsx src/subagents/cli-target.test.ts && tsx src/subagents/sessions/store.test.ts && tsx src/subagents/sessions/manager.test.ts && tsx src/subagents/sessions/mcp/capability.server.test.ts && tsx src/subagents/sessions/mcp/continuation.server.test.ts && tsx src/subagents/sessions/mcp/lifecycle.server.test.ts && tsx src/subagents/sessions/mcp/reconciliation.server.test.ts && tsx src/subagents/sessions/mcp/routing.server.test.ts && tsx src/roots.test.ts && tsx src/file-mutations.test.ts && tsx src/operations/edit-preflight.test.ts && tsx src/skills.test.ts && tsx src/db/migrations.test.ts && tsx src/workspace-store.test.ts && tsx src/workspace-tasks.test.ts && tsx src/workspace-task-reminders.test.ts && tsx src/activity/audit-store.test.ts && tsx src/activity/bash-output-store.test.ts && tsx src/activity/lifecycle.test.ts && tsx src/activity/query-service.test.ts && tsx src/operations/core-operation-executor.test.ts && tsx src/operations/bulk-mutation.test.ts && tsx src/operations/batch/scheduler.test.ts && tsx src/operations/batch/executor-policy.test.ts && tsx src/workspaces.test.ts && tsx src/workspace-conversation.test.ts && tsx src/review-checkpoints.test.ts && tsx src/lsp/code-intelligence.server.test.ts && npm run build:app && tsx src/server.test.ts && tsx src/oauth-store.test.ts && tsx src/cli.test.ts",
|
|
54
|
+
"test": "node --test scripts/debug/runtime.test.mjs scripts/release-proof.test.mjs scripts/release/release-gate.test.mjs scripts/release/push-ready.test.mjs scripts/release/release-version.test.mjs && tsx src/oauth/router.test.ts && tsx src/remote-auth-cli.test.ts && tsx src/remote-ssh-auth-cli.test.ts && tsx src/remote-workspace-relay.test.ts && tsx src/remote-workspace-relay-process.test.ts && tsx src/config.test.ts && tsx src/lsp/language-server-config.test.ts && tsx src/lsp/normalization/hover.test.ts && tsx src/lsp/references.server.test.ts && tsx src/lsp/operations/document-symbols.server.test.ts && tsx src/lsp/operations/workspace-symbols.server.test.ts && tsx src/lsp/operations/diagnostics-push.server.test.ts && tsx src/lsp/operations/diagnostics-pull.server.test.ts && tsx src/lsp/operations/request-hardening.server.test.ts && tsx src/lsp/operations/recovery.server.test.ts && tsx src/lsp/operations/lifecycle.server.test.ts && tsx src/lsp/runtime/semantic-requests.test.ts && tsx src/logger.test.ts && tsx src/proxy-trust.test.ts && tsx src/mcp-app-template.test.ts && tsx src/hooks.test.ts && tsx src/capability-registry.test.ts && tsx src/mcp/server-instructions.test.ts && tsx src/request-meta.test.ts && tsx src/incoming-artifacts.test.ts && tsx src/artifact-download.test.ts && tsx src/ui/card-types.test.ts && tsx src/ui/workspace-lifecycle-app.test.ts && tsx src/ui/activity/model.test.ts && tsx src/ui/patch-display.test.ts && tsx src/ui/tool-display.test.ts && tsx src/apply-patch.test.ts && tsx src/process-platform.test.ts && tsx src/process-sessions.test.ts && tsx src/mcp-sessions.test.ts && tsx src/server-shutdown.test.ts && tsx src/subagents/providers/adapters/codex.test.ts && tsx src/subagents/providers/registry.test.ts && tsx src/subagents/providers/availability.test.ts && tsx src/subagents/profiles.test.ts && tsx src/subagents/cli-target.test.ts && tsx src/subagents/sessions/store.test.ts && tsx src/subagents/sessions/manager.test.ts && tsx src/subagents/sessions/mcp/capability.server.test.ts && tsx src/subagents/sessions/mcp/continuation.server.test.ts && tsx src/subagents/sessions/mcp/lifecycle.server.test.ts && tsx src/subagents/sessions/mcp/reconciliation.server.test.ts && tsx src/subagents/sessions/mcp/routing.server.test.ts && tsx src/roots.test.ts && tsx src/file-mutations.test.ts && tsx src/operations/edit-preflight.test.ts && tsx src/skills.test.ts && tsx src/db/migrations.test.ts && tsx src/workspace-store.test.ts && tsx src/workspace-tasks.test.ts && tsx src/workspace-task-reminders.test.ts && tsx src/activity/audit-store.test.ts && tsx src/activity/bash-output-store.test.ts && tsx src/activity/lifecycle.test.ts && tsx src/activity/query-service.test.ts && tsx src/operations/core-operation-executor.test.ts && tsx src/operations/bulk-mutation.test.ts && tsx src/operations/batch/scheduler.test.ts && tsx src/operations/batch/executor-policy.test.ts && tsx src/workspaces.test.ts && tsx src/workspace-conversation.test.ts && tsx src/review-checkpoints.test.ts && tsx src/lsp/code-intelligence.server.test.ts && npm run build:app && tsx src/server.test.ts && tsx src/oauth-store.test.ts && tsx src/cli.test.ts",
|
|
54
55
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
55
56
|
"release:check": "node scripts/release-version.mjs check",
|
|
56
57
|
"release:tag-check": "node scripts/release-version.mjs tag",
|
package/scripts/debug/accept.mjs
CHANGED
|
@@ -155,6 +155,7 @@ try {
|
|
|
155
155
|
"open_workspace",
|
|
156
156
|
"activity_panel",
|
|
157
157
|
"activity_snapshot",
|
|
158
|
+
"activity_index",
|
|
158
159
|
"activity_detail",
|
|
159
160
|
"activity_output",
|
|
160
161
|
"capability",
|
|
@@ -694,8 +695,13 @@ try {
|
|
|
694
695
|
});
|
|
695
696
|
assert.equal(inspectorSnapshot.isError, undefined);
|
|
696
697
|
assert.ok(inspectorSnapshot.structuredContent.revision > 0);
|
|
698
|
+
assert.equal(inspectorSnapshot.structuredContent.activities, undefined);
|
|
699
|
+
const inspectorIndex = callTool(oauth.accessToken, sessionId, 93, "activity_index", {
|
|
700
|
+
turnId: inspectorTurnId,
|
|
701
|
+
});
|
|
702
|
+
assert.equal(inspectorIndex.isError, undefined);
|
|
697
703
|
assert.deepEqual(
|
|
698
|
-
|
|
704
|
+
inspectorIndex.structuredContent.activities.map(({ tool, workspaceId: activityWorkspaceId, target }) => ({
|
|
699
705
|
tool,
|
|
700
706
|
workspaceId: activityWorkspaceId,
|
|
701
707
|
target,
|
|
@@ -75,10 +75,6 @@ export function createInteractiveDebugEnvironment({
|
|
|
75
75
|
delete debugEnv[key];
|
|
76
76
|
continue;
|
|
77
77
|
}
|
|
78
|
-
if (key.startsWith("DEVSPACE_")) {
|
|
79
|
-
delete debugEnv[key];
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
78
|
if (
|
|
83
79
|
key.startsWith("FORGERELAY_")
|
|
84
80
|
&& !key.startsWith("FORGERELAY_LOG_")
|
|
@@ -39,7 +39,6 @@ test("interactive debug uses one dedicated persisted config under ~/.forgerelay/
|
|
|
39
39
|
FORGERELAY_ALLOWED_HOSTS: "wrong.example.test",
|
|
40
40
|
FORGERELAY_OAUTH_OWNER_TOKEN: "wrong-owner-password-123456",
|
|
41
41
|
FORGERELAY_WIDGETS: "off",
|
|
42
|
-
DEVSPACE_ALLOWED_ROOTS: "/wrong/root",
|
|
43
42
|
FORGERELAY_LOG_LEVEL: "debug",
|
|
44
43
|
},
|
|
45
44
|
home,
|
|
@@ -62,7 +61,6 @@ test("interactive debug uses one dedicated persisted config under ~/.forgerelay/
|
|
|
62
61
|
assert.equal(result.env.FORGERELAY_ALLOWED_HOSTS, undefined);
|
|
63
62
|
assert.equal(result.env.FORGERELAY_OAUTH_OWNER_TOKEN, undefined);
|
|
64
63
|
assert.equal(result.env.FORGERELAY_WIDGETS, undefined);
|
|
65
|
-
assert.equal(result.env.DEVSPACE_ALLOWED_ROOTS, undefined);
|
|
66
64
|
assert.equal(result.env.FORGERELAY_LOG_LEVEL, "debug");
|
|
67
65
|
});
|
|
68
66
|
|