Skip to content

feat: add agent workspace golden path#69

Merged
khaliqgant merged 5 commits intomainfrom
implementation-easier
May 1, 2026
Merged

feat: add agent workspace golden path#69
khaliqgant merged 5 commits intomainfrom
implementation-easier

Conversation

@khaliqgant
Copy link
Copy Markdown
Member

Summary

  • adds the agent workspace golden path spec, acceptance contract, workflow, docs, and evidence
  • adds SDK helpers/demo/E2E for Notion connect, mount env, agent invites, and relaycast-aware collaboration
  • keeps setup-client contract aligned with pollIntervalMs/onPoll(elapsed) and SDK version headers

Validation

  • npm run test --workspace=packages/sdk/typescript -- src/setup.test.ts src/mount-harness.test.ts
  • npm run typecheck --workspace=packages/sdk/typescript
  • npm run agent-workspace:e2e --workspace=packages/sdk/typescript

Related

  • Cloud companion PR follows with readiness/status route support
  • Relaycast PR #125 has been updated with invite-consumption coverage

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dea36c0150

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +379 to +383
const normalized = path.posix.normalize(input.replace(/\\/g, "/"));
if (normalized === "." || normalized === "") {
return "";
}
return normalized.replace(/^\/+/, "");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reject parent-directory segments in harness write paths

writeLocalFile accepts any relativePath that normalizeRelativePath returns, but that helper does not reject .. segments, so inputs like ../../outside.txt will be joined against RELAYFILE_LOCAL_DIR and can write outside the mounted workspace directory. This becomes a real escape if the path comes from agent-controlled input, and it bypasses the harness boundary the feature is meant to enforce.

Useful? React with 👍 / 👎.

Comment on lines +54 to +58
await workspace.waitForNotion({
connectionId: notion.connectionId,
pollIntervalMs: 25,
timeoutMs: 1_000,
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Mark mock Notion connection ready before waiting in demo

In the default mock flow, createMockCloudServer keeps integration status ready: false until /mock/integrations/:provider/webhook is called, but this demo calls waitForNotion immediately and never triggers that webhook. As a result, the advertised demo:agent-workspace command times out under its own built-in mocks instead of completing successfully.

Useful? React with 👍 / 👎.

Comment thread packages/sdk/typescript/src/setup.ts Outdated
type WorkspacePermissions
} from "./setup-types.js"

export const RELAYFILE_SDK_VERSION = "0.5.3"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Synchronize SDK version constant with published package version

The SDK now sends X-Relayfile-SDK-Version from RELAYFILE_SDK_VERSION, but this constant is hardcoded to 0.5.3 while the package is 0.6.0. Any cloud-side feature gating, telemetry, or compatibility logic keyed on this header will receive stale version data, which can misroute behavior for this release.

Useful? React with 👍 / 👎.

@khaliqgant khaliqgant merged commit cc12c4e into main May 1, 2026
6 checks passed
@khaliqgant khaliqgant deleted the implementation-easier branch May 1, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant