{ "name": "vscode-cowriting-plugin", "displayName": "Cowriting (Cline SDK POC)", "description": "Non-shippable POC: a standalone VS Code extension that drives @cline/sdk.", "version": "0.0.1", "private": true, "license": "Apache-2.0", "publisher": "benstull", "engines": { "vscode": "^1.90.0", "node": ">=22" }, "categories": [ "Other" ], "main": "./out/extension.cjs", "activationEvents": [ "onStartupFinished" ], "contributes": { "markdown.markdownItPlugins": true, "markdown.previewStyles": [ "./media/preview-annotations.css" ], "markdown.previewScripts": [ "./out/media/preview-mermaid.js" ], "configuration": { "title": "Cowriting", "properties": { "cowriting.liveProgress.revealOutput": { "type": "boolean", "default": true, "description": "When Claude is editing, reveal the \"Cowriting: Claude\" output channel (without stealing focus) as soon as Claude starts producing text, so you can read the output as it streams." }, "cowriting.annotations": { "type": "boolean", "default": true, "description": "Show authorship + change annotations in the Markdown preview for coedited documents." } } }, "commands": [ { "command": "cowriting.showClineSdkInfo", "title": "Cowriting: Show Cline SDK Info", "category": "Cowriting" }, { "command": "cowriting.createThread", "title": "Cowriting: Add Coauthoring Thread on Selection", "category": "Cowriting" }, { "command": "cowriting.reply", "title": "Reply", "category": "Cowriting" }, { "command": "cowriting.resolveThread", "title": "Resolve Thread", "category": "Cowriting" }, { "command": "cowriting.reopenThread", "title": "Reopen Thread", "category": "Cowriting" }, { "command": "cowriting.applyAgentEdit", "title": "Apply Agent Edit (internal seam)", "category": "Cowriting" }, { "command": "cowriting.edit", "title": "Ask Claude to Edit", "category": "Cowriting" }, { "command": "cowriting.editSelection", "title": "Ask Claude to Edit Selection", "category": "Cowriting" }, { "command": "cowriting.proposeAgentEdit", "title": "Propose Agent Edit (internal seam)", "category": "Cowriting" }, { "command": "cowriting.markReviewed", "title": "Mark Changes as Reviewed", "category": "Cowriting", "icon": "$(check-all)" }, { "command": "cowriting.reviewChanges", "title": "Review Changes", "category": "Cowriting", "icon": "$(git-compare)" }, { "command": "cowriting.openReviewPreview", "title": "Open Cowriting Review Preview", "category": "Cowriting" }, { "command": "cowriting.editDocument", "title": "Ask Claude to Edit Document", "category": "Cowriting" }, { "command": "cowriting.acceptAllProposals", "title": "Accept All Claude Proposals", "category": "Cowriting" }, { "command": "cowriting.rejectAllProposals", "title": "Reject All Claude Proposals", "category": "Cowriting" }, { "command": "cowriting.proposalAcceptMenu", "title": "Accept Claude Proposal", "category": "Cowriting" }, { "command": "cowriting.proposalRejectMenu", "title": "Reject Claude Proposal", "category": "Cowriting" }, { "command": "cowriting.coeditDocument", "title": "✦ Coedit this Document with Claude", "category": "Cowriting" }, { "command": "cowriting.stopCoediting", "title": "Stop editing with Claude", "category": "Cowriting" }, { "command": "cowriting.askClaude", "title": "Ask Claude", "category": "Cowriting", "icon": "$(sparkle)" }, { "command": "cowriting.makeThreadEdit", "title": "✦ Make this edit", "category": "Cowriting", "icon": "$(sparkle)" }, { "command": "cowriting.toggleAnnotations", "title": "Toggle Annotations", "category": "Cowriting", "icon": "$(eye)" } ], "menus": { "commandPalette": [ { "command": "cowriting.applyAgentEdit", "when": "false" }, { "command": "cowriting.proposeAgentEdit", "when": "false" }, { "command": "cowriting.createThread", "when": "editorHasSelection && (resourceScheme == file || resourceScheme == untitled) && cowriting.isCoediting" }, { "command": "cowriting.reviewChanges", "when": "editorLangId == markdown && cowriting.isCoediting" }, { "command": "cowriting.markReviewed", "when": "editorLangId == markdown && cowriting.isCoediting && cowriting.baselineMode == snapshot" }, { "command": "cowriting.edit", "when": "editorLangId == markdown" }, { "command": "cowriting.editSelection", "when": "false" }, { "command": "cowriting.editDocument", "when": "false" }, { "command": "cowriting.askClaude", "when": "editorLangId == markdown && cowriting.isCoediting" }, { "command": "cowriting.toggleAnnotations", "when": "editorLangId == markdown && cowriting.isCoediting" }, { "command": "cowriting.makeThreadEdit", "when": "false" }, { "command": "cowriting.acceptAllProposals", "when": "editorLangId == markdown && cowriting.isCoediting" }, { "command": "cowriting.rejectAllProposals", "when": "editorLangId == markdown && cowriting.isCoediting" }, { "command": "cowriting.proposalAcceptMenu", "when": "false" }, { "command": "cowriting.proposalRejectMenu", "when": "false" } ], "editor/title": [ { "command": "cowriting.reviewChanges", "when": "resourceLangId == markdown && cowriting.isCoediting", "group": "navigation@1" }, { "command": "cowriting.askClaude", "when": "resourceLangId == markdown && cowriting.isCoediting", "group": "navigation@2" }, { "command": "cowriting.toggleAnnotations", "when": "resourceLangId == markdown && cowriting.isCoediting", "group": "navigation@3" }, { "command": "cowriting.markReviewed", "when": "resourceLangId == markdown && cowriting.isCoediting && cowriting.baselineMode == snapshot", "group": "navigation@4" }, { "command": "cowriting.openReviewPreview", "when": "resourceLangId == markdown", "group": "navigation@9" } ], "editor/title/context": [ { "command": "cowriting.edit", "when": "resourceLangId == markdown && cowriting.isCoediting", "group": "1_cowriting@1" }, { "command": "cowriting.openReviewPreview", "when": "resourceLangId == markdown", "group": "1_cowriting@3" } ], "explorer/context": [ { "command": "cowriting.openReviewPreview", "when": "resourceLangId == markdown", "group": "navigation@9" } ], "editor/context": [ { "command": "cowriting.edit", "when": "editorLangId == markdown && (resourceScheme == file || resourceScheme == untitled) && cowriting.isCoediting", "group": "1_cowriting@1" }, { "command": "cowriting.createThread", "when": "editorHasSelection && (resourceScheme == file || resourceScheme == untitled) && cowriting.isCoediting", "group": "1_cowriting@2" }, { "command": "cowriting.coeditDocument", "when": "editorLangId == markdown && !cowriting.isCoediting", "group": "1_cowriting@1" }, { "command": "cowriting.stopCoediting", "when": "editorLangId == markdown && cowriting.isCoediting", "group": "1_cowriting@9" } ], "comments/commentThread/context": [ { "command": "cowriting.reply", "group": "inline@1", "when": "commentController == cowriting.threads" }, { "command": "cowriting.makeThreadEdit", "group": "inline@2", "when": "commentController == cowriting.threads && commentThread =~ /\\boffer\\b/" } ], "comments/commentThread/title": [ { "command": "cowriting.makeThreadEdit", "group": "inline@1", "when": "commentController == cowriting.threads && commentThread =~ /\\boffer\\b/" }, { "command": "cowriting.resolveThread", "group": "inline", "when": "commentController == cowriting.threads && commentThread =~ /\\bopen\\b/" }, { "command": "cowriting.reopenThread", "group": "inline", "when": "commentController == cowriting.threads && commentThread =~ /\\bresolved\\b/" } ] }, "keybindings": [ { "command": "cowriting.reviewChanges", "key": "ctrl+alt+r", "mac": "cmd+alt+r", "when": "editorLangId == markdown && cowriting.isCoediting" }, { "command": "cowriting.edit", "key": "ctrl+alt+e", "mac": "cmd+alt+e", "when": "editorTextFocus && editorLangId == markdown && cowriting.isCoediting" } ] }, "scripts": { "build": "node esbuild.mjs", "watch": "node esbuild.mjs --watch", "typecheck": "tsc --noEmit", "test": "vitest run", "clean:e2e": "node -e \"require('fs').rmSync('out/test',{recursive:true,force:true})\"", "pretest:e2e": "npm run build && npm run clean:e2e && tsc -p tsconfig.e2e.json", "test:e2e": "node ./out/test/e2e/runTest.js", "smoke:live": "npm run build && node scripts/smoke-live-turn.mjs", "smoke:native": "npm run pretest:e2e && node scripts/smoke-native-loop.mjs", "vscode:prepublish": "node esbuild.mjs" }, "dependencies": { "@cline/sdk": "0.0.46", "diff": "^7.0.0", "markdown-it": "^14.1.0", "mermaid": "^11.0.0" }, "devDependencies": { "@types/diff": "^7.0.0", "@types/markdown-it": "^14.1.0", "@types/mocha": "^10.0.7", "@types/node": "^22.0.0", "@types/vscode": "^1.90.0", "@vscode/test-electron": "^2.4.0", "ajv": "^8.20.0", "esbuild": "^0.23.0", "glob": "^11.0.0", "mocha": "^10.7.0", "typescript": "^5.5.0", "vitest": "^2.0.0" } }