├── .github └── workflows │ └── npm-publish.yml ├── .gitignore ├── .idea ├── AugmentWebviewStateStore.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── git_toolbox_blame.xml ├── git_toolbox_prj.xml ├── inspectionProfiles │ └── Project_Default.xml ├── jsLinters │ └── eslint.xml ├── modules.xml ├── prettier.xml ├── sf-mcp.iml ├── shelf │ ├── Uncommitted_changes_before_Checkout_at_4_8_25,_22_47_[Changes] │ │ └── shelved.patch │ └── Uncommitted_changes_before_Checkout_at_4_8_25__22_47__Changes_.xml ├── vcs.xml └── workspace.xml ├── .prettierrc ├── CHANGELOG.md ├── CLAUDE.md ├── README.md ├── build ├── index.js ├── resources.js ├── sfCommands.js └── utils.js ├── eslint.config.js ├── package-lock.json ├── package.json ├── run.sh ├── src ├── index.ts ├── resources.ts ├── sfCommands.ts └── utils.ts └── tsconfig.json /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created 2 | # For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages 3 | 4 | name: Node.js Package 5 | 6 | on: 7 | release: 8 | types: [created] 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: actions/setup-node@v4 16 | with: 17 | node-version: 20 18 | - run: npm ci 19 | - run: npm test 20 | 21 | publish-npm: 22 | needs: build 23 | runs-on: ubuntu-latest 24 | steps: 25 | - uses: actions/checkout@v4 26 | - uses: actions/setup-node@v4 27 | with: 28 | node-version: 20 29 | registry-url: https://registry.npmjs.org/ 30 | - run: npm ci 31 | - run: npm publish 32 | env: 33 | NODE_AUTH_TOKEN: ${{secrets.NPMJS_TOKEN}} 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Node template 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | .cache 107 | 108 | # Docusaurus cache and generated files 109 | .docusaurus 110 | 111 | # Serverless directories 112 | .serverless/ 113 | 114 | # FuseBox cache 115 | .fusebox/ 116 | 117 | # DynamoDB Local files 118 | .dynamodb/ 119 | 120 | # TernJS port file 121 | .tern-port 122 | 123 | # Stores VSCode versions used for testing VSCode extensions 124 | .vscode-test 125 | 126 | # yarn v2 127 | .yarn/cache 128 | .yarn/unplugged 129 | .yarn/build-state.yml 130 | .yarn/install-state.gz 131 | .pnp.* 132 | 133 | -------------------------------------------------------------------------------- /.idea/AugmentWebviewStateStore.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 66 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/git_toolbox_blame.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/git_toolbox_prj.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/jsLinters/eslint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/prettier.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /.idea/sf-mcp.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Checkout_at_4_8_25,_22_47_[Changes]/shelved.patch: -------------------------------------------------------------------------------- 1 | Index: .idea/vcs.xml 2 | IDEA additional info: 3 | Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP 4 | <+>\n\n \n \n \n \n \n \n \n \n \n 5 | Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP 6 | <+>UTF-8 7 | =================================================================== 8 | diff --git a/.idea/vcs.xml b/.idea/vcs.xml 9 | --- a/.idea/vcs.xml (revision da38db3187809b42c47604d9d078238d2d02705a) 10 | +++ b/.idea/vcs.xml (date 1744177016069) 11 | @@ -1,11 +1,5 @@ 12 | 13 | 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | 21 | 22 | 23 | Index: .idea/workspace.xml 24 | IDEA additional info: 25 | Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP 26 | <+>\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n "lastFilter": {\n "state": "OPEN",\n "assignee": "codefriar"\n }\n}\n \n \n \n {\n "selectedUrlAndAccountId": {\n "url": "git@github.com:codefriar/sf-mcp.git",\n "accountId": "cd1051c7-86d1-42aa-9984-58b0635d53d5"\n },\n "recentNewPullRequestHead": {\n "server": {\n "useHttp": false,\n "host": "github.com",\n "port": null,\n "suffix": null\n },\n "owner": "codefriar",\n "repository": "sf-mcp"\n }\n}\n \n \n {\n "associatedIndex": 4\n}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1743015380248\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 81 | 82 | - 83 | - feat 84 | - roots 85 | - Now with Roots 86 | - Now using "roots" - configurable inputs to the MCP that set the project directories, including instructions in the readme 87 | - 88 | - 89 | - 90 | - 91 | 92 | \ No newline at end of file 93 | -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Checkout_at_4_8_25__22_47__Changes_.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 17 | 19 | { 20 | "lastFilter": { 21 | "state": "OPEN", 22 | "assignee": "codefriar" 23 | } 24 | } 25 | { 26 | "selectedUrlAndAccountId": { 27 | "url": "git@github.com:codefriar/sf-mcp.git", 28 | "accountId": "cd1051c7-86d1-42aa-9984-58b0635d53d5" 29 | }, 30 | "recentNewPullRequestHead": { 31 | "server": { 32 | "useHttp": false, 33 | "host": "github.com", 34 | "port": null, 35 | "suffix": null 36 | }, 37 | "owner": "codefriar", 38 | "repository": "sf-mcp" 39 | } 40 | } 41 | { 42 | "associatedIndex": 4 43 | } 44 | 45 | 46 | 49 | { 50 | "keyToString": { 51 | "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true", 52 | "RunOnceActivity.ShowReadmeOnStart": "true", 53 | "RunOnceActivity.git.unshallow": "true", 54 | "git-widget-placeholder": "#2 on feat/contextualExecution", 55 | "js.linters.configure.manually.selectedeslint": "true", 56 | "node.js.detected.package.eslint": "true", 57 | "node.js.detected.package.standard": "true", 58 | "node.js.detected.package.tslint": "true", 59 | "node.js.selected.package.eslint": "/Users/kpoorman/src/sfMcp/node_modules/@eslint/eslintrc", 60 | "node.js.selected.package.standard": "", 61 | "node.js.selected.package.tslint": "(autodetect)", 62 | "nodejs_package_manager_path": "npm", 63 | "settings.editor.selected.configurable": "settings.javascript.linters.eslint", 64 | "ts.external.directory.path": "/Applications/IntelliJ IDEA.app/Contents/plugins/javascript-plugin/jsLanguageServicesImpl/external", 65 | "vue.rearranger.settings.migration": "true" 66 | } 67 | } 68 | 69 | 74 | 75 | 76 | 77 | 78 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 1743015380248 88 | 99 | 100 | 107 | 108 | 115 | 116 | 123 | 124 | 131 | 132 | 139 | 140 | 147 | 150 | 151 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 162 | 163 | 164 |