@edicarlos.lds/businessmap-mcp 4.0.0 β 4.0.1
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/CONTRIBUTING.md +9 -6
- package/docs/RELEASE_PROCESS.md +88 -106
- package/docs/TOOLS.md +9 -0
- package/package.json +4 -5
package/CONTRIBUTING.md
CHANGED
|
@@ -53,14 +53,17 @@ Keep changes focused and include tests for behavior changes. Before opening a
|
|
|
53
53
|
pull request, run the local checks listed above. CI runs the same checks on
|
|
54
54
|
Node.js 22.
|
|
55
55
|
|
|
56
|
-
Use conventional commits
|
|
56
|
+
Use conventional commits in pull request titles. Pull requests are squash
|
|
57
|
+
merged and releases are published automatically from `main` based on these
|
|
58
|
+
prefixes (see [docs/RELEASE_PROCESS.md](docs/RELEASE_PROCESS.md)):
|
|
57
59
|
|
|
58
60
|
```text
|
|
59
|
-
feat: add a new capability
|
|
60
|
-
fix: correct existing behavior
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
feat: add a new capability (minor release)
|
|
62
|
+
fix: correct existing behavior (patch release)
|
|
63
|
+
feat!: change that breaks compatibility (major release)
|
|
64
|
+
docs: improve documentation (no release)
|
|
65
|
+
refactor: restructure without changing behavior (no release)
|
|
66
|
+
test: add or improve tests (no release)
|
|
64
67
|
```
|
|
65
68
|
|
|
66
69
|
Changes to tool names, input schemas, response shapes, or default behavior must
|
package/docs/RELEASE_PROCESS.md
CHANGED
|
@@ -1,146 +1,128 @@
|
|
|
1
1
|
# Release Process
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Releases are fully automated by the [Release workflow](../.github/workflows/release.yml).
|
|
4
|
+
Merging to `main` is the only manual step.
|
|
4
5
|
|
|
5
|
-
## π
|
|
6
|
+
## π What Happens on Every Push to `main`
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
1. **Validation**: lint, unit tests, build, knip and, when the smoke secrets are
|
|
9
|
+
configured, the `test:npx` package smoke test.
|
|
10
|
+
2. **Version calculation** from [Conventional Commits](https://www.conventionalcommits.org)
|
|
11
|
+
since the last `vX.Y.Z` tag:
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
| Commits since last tag | Release |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `feat!:`, `fix(scope)!:` or a `BREAKING CHANGE:` footer | major |
|
|
16
|
+
| `feat:` | minor |
|
|
17
|
+
| `fix:`, `perf:` (including `fix(deps):` from Dependabot) | patch |
|
|
18
|
+
| only `chore:`, `docs:`, `test:`, `ci:`, `refactor:`, ... | no release |
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
3. **Release commit and tag**: `chore(release): X.Y.Z` plus tag `vX.Y.Z`, pushed to `main`.
|
|
21
|
+
4. **npm publication** with provenance, through npm Trusted Publishing (no token stored in GitHub).
|
|
22
|
+
5. **GitHub release** with the generated release notes.
|
|
17
23
|
|
|
18
|
-
|
|
24
|
+
Runs are serialized, so pushes made while a release is running are released by
|
|
25
|
+
the next run.
|
|
19
26
|
|
|
20
|
-
|
|
27
|
+
## π·οΈ Commit Convention
|
|
21
28
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- [ ] You are authenticated to GitHub CLI: `gh auth status`
|
|
25
|
-
- [ ] Working directory is clean
|
|
29
|
+
Pull requests are squash merged, so the **PR title** becomes the commit message
|
|
30
|
+
that drives the release. Use:
|
|
26
31
|
|
|
27
|
-
|
|
32
|
+
```text
|
|
33
|
+
feat: add a new capability -> minor
|
|
34
|
+
fix: correct existing behavior -> patch
|
|
35
|
+
perf: make something faster -> patch
|
|
36
|
+
feat!: remove deprecated tool -> major
|
|
37
|
+
docs: / refactor: / test: / chore: -> no release on their own
|
|
38
|
+
```
|
|
28
39
|
|
|
29
|
-
|
|
40
|
+
For a breaking change without `!`, add a footer to the commit body:
|
|
30
41
|
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
# or for a specific version:
|
|
34
|
-
npm run preview:release 1.2.3
|
|
42
|
+
```text
|
|
43
|
+
BREAKING CHANGE: list_cards no longer accepts board_name
|
|
35
44
|
```
|
|
36
45
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Execute the publish npm command:
|
|
46
|
+
## π Previewing the Next Release
|
|
40
47
|
|
|
41
48
|
```bash
|
|
42
|
-
npm run
|
|
49
|
+
npm run preview:release # next version and notes, as the workflow would compute them
|
|
50
|
+
npm run preview:release 1.2.3 # notes for an explicit version
|
|
43
51
|
```
|
|
44
52
|
|
|
45
|
-
The
|
|
46
|
-
|
|
47
|
-
1. Verify authentications
|
|
48
|
-
2. Build and test
|
|
49
|
-
3. Show version options (patch/minor/major)
|
|
50
|
-
4. Generate release notes preview
|
|
51
|
-
5. Confirm publication
|
|
52
|
-
6. Execute the entire process automatically
|
|
53
|
-
|
|
54
|
-
## π Release Notes Format
|
|
55
|
-
|
|
56
|
-
Release notes are automatically generated based on commits since the last tag and organized by category:
|
|
57
|
-
|
|
58
|
-
### π New Features
|
|
59
|
-
|
|
60
|
-
- Commits starting with `feat:`, `feature:` or `FEAT:`
|
|
61
|
-
|
|
62
|
-
### π Bug Fixes
|
|
63
|
-
|
|
64
|
-
- Commits starting with `fix:` or `FIX:`
|
|
65
|
-
|
|
66
|
-
### β»οΈ Code Refactoring
|
|
67
|
-
|
|
68
|
-
- Commits starting with `refactor:` or `REFACTOR:`
|
|
69
|
-
|
|
70
|
-
### π Documentation
|
|
71
|
-
|
|
72
|
-
- Commits starting with `docs:`, `doc:` or `DOCS:`
|
|
73
|
-
|
|
74
|
-
### π§ Other Changes
|
|
75
|
-
|
|
76
|
-
- All other commits
|
|
53
|
+
The workflow can also be started manually from **Actions β Release β Run workflow**
|
|
54
|
+
with **dry_run** checked to see the version and notes without publishing anything.
|
|
77
55
|
|
|
78
|
-
##
|
|
79
|
-
|
|
80
|
-
To maximize release notes quality, it's recommended to use the following prefixes:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
feat: add new functionality
|
|
84
|
-
fix: fix bug
|
|
85
|
-
docs: update documentation
|
|
86
|
-
refactor: refactor code
|
|
87
|
-
test: add or update tests
|
|
88
|
-
chore: maintenance tasks
|
|
89
|
-
```
|
|
56
|
+
## ποΈ Forcing a Specific Version
|
|
90
57
|
|
|
91
|
-
|
|
58
|
+
Bump `version` in `package.json` (and `package-lock.json`) in a pull request,
|
|
59
|
+
for example with `npm version 5.0.0 --no-git-tag-version`. When it lands on
|
|
60
|
+
`main`, the workflow sees an unpublished version, tags that commit and releases
|
|
61
|
+
it as is instead of computing a bump.
|
|
92
62
|
|
|
93
|
-
|
|
94
|
-
- `npm run publish:github` - Create GitHub release only
|
|
95
|
-
- `npm run preview:release` - Preview release notes
|
|
96
|
-
- `scripts/generate-release-notes.sh` - Generate release notes for specific version
|
|
63
|
+
## π Release Notes Format
|
|
97
64
|
|
|
98
|
-
|
|
65
|
+
Commits since the previous tag are grouped by type, each one credited to its
|
|
66
|
+
GitHub author:
|
|
99
67
|
|
|
100
68
|
```markdown
|
|
101
69
|
## What's Changed
|
|
102
70
|
|
|
71
|
+
### β οΈ Breaking Changes
|
|
103
72
|
### π New Features
|
|
104
|
-
- add user authentication support by @username
|
|
105
|
-
- implement card filtering by @username
|
|
106
|
-
|
|
107
73
|
### π Bug Fixes
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
74
|
+
### β‘ Performance
|
|
75
|
+
### β»οΈ Code Refactoring
|
|
111
76
|
### π Documentation
|
|
112
|
-
|
|
77
|
+
### π¦ Dependencies (scope `deps` / `deps-dev`)
|
|
78
|
+
### π§ Other Changes
|
|
113
79
|
|
|
114
80
|
**Full Changelog**: https://github.com/edicarloslds/businessmap-mcp/compare/v1.0.0...v1.1.0
|
|
115
81
|
```
|
|
116
82
|
|
|
117
|
-
##
|
|
118
|
-
|
|
119
|
-
|
|
83
|
+
## βοΈ One-time Setup
|
|
84
|
+
|
|
85
|
+
1. **GitHub environment**: in *Settings β Environments*, create `npm` and under
|
|
86
|
+
*Deployment branches and tags* select *Selected branches and tags* with only
|
|
87
|
+
`main`. Only the release job running on `main` can then request an npm
|
|
88
|
+
publish token.
|
|
89
|
+
2. **npm Trusted Publishing**: on npmjs.com, open the package β *Settings* β
|
|
90
|
+
*Trusted Publisher* β *GitHub Actions* and set:
|
|
91
|
+
- Organization or user: `edicarloslds`
|
|
92
|
+
- Repository: `businessmap-mcp`
|
|
93
|
+
- Workflow filename: `release.yml`
|
|
94
|
+
- Environment name: `npm`
|
|
95
|
+
- Allowed actions: `npm publish` (besides the default `npm stage publish`),
|
|
96
|
+
since the workflow publishes directly without a manual approval step
|
|
97
|
+
3. **Smoke test secrets** (optional): add environment secrets to `npm` or repository secrets
|
|
98
|
+
`BUSINESSMAP_SMOKE_API_URL` and `BUSINESSMAP_SMOKE_API_TOKEN`, ideally a
|
|
99
|
+
read-only token. Without them the smoke test step is skipped.
|
|
100
|
+
4. **Squash merge only**: in *Settings β General β Pull Requests*, keep only
|
|
101
|
+
*Allow squash merging* with the default message set to the PR title.
|
|
102
|
+
5. **Branch protection** (if enabled later): allow GitHub Actions to push the
|
|
103
|
+
release commit and tag to `main`, otherwise the release push is rejected.
|
|
104
|
+
|
|
105
|
+
## π§ Scripts
|
|
106
|
+
|
|
107
|
+
- `scripts/release.sh` - non-interactive release used by the workflow (`DRY_RUN=true` to simulate)
|
|
108
|
+
- `scripts/next-version.sh` - bump type implied by the commits in a range
|
|
109
|
+
- `scripts/generate-release-notes.sh` - release notes for a version and commit range
|
|
110
|
+
- `scripts/preview-release-notes.sh` - local preview of the next release
|
|
120
111
|
|
|
121
|
-
|
|
122
|
-
npm login
|
|
123
|
-
```
|
|
112
|
+
## π¨ Troubleshooting
|
|
124
113
|
|
|
125
|
-
###
|
|
114
|
+
### A release failed halfway
|
|
126
115
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
116
|
+
Re-run the failed workflow. `scripts/release.sh` is idempotent: when the version
|
|
117
|
+
in `package.json` is missing from npm or has no GitHub release yet, it finishes
|
|
118
|
+
that release instead of computing a new one.
|
|
130
119
|
|
|
131
|
-
###
|
|
120
|
+
### Merged a fix but nothing was released
|
|
132
121
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
git add .
|
|
136
|
-
git commit -m "prepare for release"
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Tag already exists
|
|
122
|
+
Check that the squash commit on `main` starts with `fix:`/`feat:`/`perf:` and
|
|
123
|
+
run `npm run preview:release` locally to see what the workflow detects.
|
|
140
124
|
|
|
141
|
-
|
|
125
|
+
### npm publish fails with 404 / ENEEDAUTH
|
|
142
126
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
git push origin :refs/tags/v1.2.3
|
|
146
|
-
```
|
|
127
|
+
The Trusted Publisher on npmjs.com must match the repository and the
|
|
128
|
+
`release.yml` filename exactly.
|
package/docs/TOOLS.md
CHANGED
|
@@ -22,6 +22,15 @@ structure fetches, and explicit summary/full detail levels. These deterministic
|
|
|
22
22
|
checks complement production trajectory evals, where tool-call count, latency,
|
|
23
23
|
and token cost should also be monitored.
|
|
24
24
|
|
|
25
|
+
## Architecture inspiration
|
|
26
|
+
|
|
27
|
+
The progressive-disclosure architecture used by this server was inspired by
|
|
28
|
+
[βMCPs need to be designed tooβ](https://www.raindrop.ai/blog/mcp-design/), by
|
|
29
|
+
Jackson Ferrigno at Raindrop. The article's tool-hierarchy approach informed
|
|
30
|
+
the separation between compact discovery, focused detail, and deeper forensic
|
|
31
|
+
operations in this project. Credit belongs to the author and the Raindrop team
|
|
32
|
+
for publishing the design and its evaluation results.
|
|
33
|
+
|
|
25
34
|
---
|
|
26
35
|
|
|
27
36
|
## Tools
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edicarlos.lds/businessmap-mcp",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Model Context Protocol server for BusinessMap (Kanbanize) integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,8 +25,6 @@
|
|
|
25
25
|
"eval:hierarchy": "jest --runInBand src/server/tools/board-tools.test.ts src/server/tools/card-tools.test.ts src/server/resources/card-resources.test.ts",
|
|
26
26
|
"test:coverage": "jest --coverage --runInBand",
|
|
27
27
|
"test:npx": "bash scripts/test-npx.sh",
|
|
28
|
-
"publish:npm": "bash scripts/publish-npm.sh",
|
|
29
|
-
"publish:github": "bash scripts/publish-github.sh",
|
|
30
28
|
"preview:release": "bash scripts/preview-release-notes.sh",
|
|
31
29
|
"lint": "eslint src/**/*.ts",
|
|
32
30
|
"lint:fix": "eslint src/**/*.ts --fix",
|
|
@@ -69,7 +67,7 @@
|
|
|
69
67
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
70
68
|
"axios": "^1.12.0",
|
|
71
69
|
"cors": "^2.8.5",
|
|
72
|
-
"dotenv": "^
|
|
70
|
+
"dotenv": "^18.0.4",
|
|
73
71
|
"express": "^5.1.0",
|
|
74
72
|
"zod": "^4.4.3"
|
|
75
73
|
},
|
|
@@ -93,9 +91,10 @@
|
|
|
93
91
|
},
|
|
94
92
|
"overrides": {
|
|
95
93
|
"hono": ">=4.12.25",
|
|
94
|
+
"@hono/node-server": ">=2.0.5",
|
|
96
95
|
"form-data": ">=4.0.6",
|
|
97
96
|
"js-yaml": ">=5.2.2",
|
|
98
97
|
"@babel/core": "^7.29.6",
|
|
99
|
-
"brace-expansion": ">=5.0.
|
|
98
|
+
"brace-expansion": ">=5.0.9"
|
|
100
99
|
}
|
|
101
100
|
}
|