Add Cowork plugin, DCR setup, and security checks - #7
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 3 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit af72ee8. Configure here.
| }, | ||
| "files": [ | ||
| "cowork/", | ||
| "dist/evolver-cowork.zip", |
There was a problem hiding this comment.
Committed ZIP can drift from source
High Severity
The npm package ships dist/evolver-cowork.zip, but validate:cowork and CI only check the cowork/ source. The build process rebuilds the ZIP without verifying if the newly built artifact matches the committed version, which could result in an outdated dist/evolver-cowork.zip being shipped.
Triggered by team rule: Mandatory review after completing all tasks
Reviewed by Cursor Bugbot for commit af72ee8. Configure here.
| } | ||
| for (const requiredTool of ['gep_status', 'gep_recall', 'gep_search_community', 'gep_evolve', 'gep_record_outcome']) { | ||
| assert(toolNames.has(requiredTool), `MCP tool description is missing ${requiredTool}`); | ||
| } |
There was a problem hiding this comment.
Validator skips required identity tool
Medium Severity
The validation script doesn't require the gep_identity tool, even though it's essential for EvoMap sign-in and operations. This means a package could pass validation but be functionally incomplete.
Triggered by team rule: GEP evolution memory full integration
Reviewed by Cursor Bugbot for commit af72ee8. Configure here.
| assert(remote.authorization === undefined, 'authorization must be omitted so Cowork can use EvoMap Dynamic Client Registration'); | ||
| assert(remote.mcpToolDescription && typeof remote.mcpToolDescription.file === 'string', 'connector must reference a static MCP tool description'); | ||
|
|
||
| const toolCatalog = readJson(path.join(root, remote.mcpToolDescription.file)); |
There was a problem hiding this comment.
Tool catalog path unchecked
Medium Severity
The validatePackage function doesn't validate remote.mcpToolDescription.file for path traversal. This allows a crafted manifest to specify a path outside the package root, leading to arbitrary file reads during validation.
Reviewed by Cursor Bugbot for commit af72ee8. Configure here.


Touches hot-path: no
Phase: legacy-backfill
Risk vector: neutral
Summary
Backfilled metadata for PR #7 (
Add Cowork plugin, DCR setup, and security checks), which was opened beforepr metadata policybecame a required check in this repository. This edit changes only the PR body, not the branch diff. The original author-supplied body is preserved below.Scope and cuts
This is a metadata backfill for an already-open PR. It does not claim the implementation cut nothing; that cannot be inferred safely by a body-migration pass. The PR author or reviewer should refine this section before merge if the original request had omitted work.
Module boundary
Unknown from metadata alone. Review the changed files, preserved original body, and CI results before merging. This backfill itself touches no code and changes no branch content.
Alternative considered
Leave this legacy PR body in the old format. Rejected because the newly required machine gate would remain absent or fail for missing required sections even when the underlying diff is unrelated to the gate rollout. A mechanical metadata shell is safer than pretending to infer exact scope from outside the PR author's context, because it preserves the original body and makes the uncertainty visible.
Validation
Body shape generated from this repository's default-branch template and validated with its default-branch validator before upload. Original body preserved below. No product code, workflow, branch, or commit is changed by this PR-body edit.
Rollback / recovery
Restore the original body from
/tmp/evo-pr-backfill-all/evolver-copilot-plugin-before.jsonentry #7, or from the “Original body before metadata backfill” section below.Original body before metadata backfill
Original PR author:
somethingwentwellSummary
gep_statusidentity verification before other Evolver operationsPOST https://evomap.ai/oauth/registerVerification
npm run checknpm audit --omit=dev --audit-level=high --offlinenpm run build:coworkgit diff --checkCowork package:
dist/evolver-cowork.zipSHA-256:
706cb911984ae4e6c841436d5807f1c0662c574d2d961fa64b05cd010ae54458Known deployment blocker
Microsoft DCR provisioning currently fails because EvoMap's registration response omits
client_secret. The README documents the required confidential-client response and secure handling. A focused backend issue will be created after this PR is merged.Note
Medium Risk
New OAuth/DCR and hosted-connector surface increases auth and deployment risk, though secrets stay server-side and the skill enforces identity checks; end-to-end Cowork deploy remains blocked until EvoMap returns
client_secretfrom DCR.Overview
v0.2.0 extends Evolver beyond VS Code with a Microsoft 365 Copilot Cowork upload package (
cowork/→dist/evolver-cowork.zip): Unified App manifest,capability-evolverAgent Skill (auth viagep_identity/gep_status, redaction rules), hostedhttps://evomap.ai/mcpconnector with DCR (no embedded secrets), and a static eight-toolmcp-tools.jsoncatalog.Adds validate/build/remote-check scripts and tests for deterministic ZIP output, plus a
toolkit/evolver-cowork-dcrAgents Toolkit project to provision OAuth viadcr/registerand document admin/user flows. README and CHANGELOG call out a deployment blocker: EvoMap’sPOST /oauth/registermust return a confidentialclient_secretfor Microsoft DCR.CI and supply chain: new
security.yml(npm audit, local SAST, tests, Cowork validate/build, PR dependency review, CodeQL) and weekly Dependabot for npm and GitHub Actions.Reviewed by Cursor Bugbot for commit af72ee8. Bugbot is set up for automated code reviews on this repo. Configure here.