@jaypie/mcp 0.7.4 → 0.7.7

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.
@@ -9,7 +9,7 @@ import { gt } from 'semver';
9
9
  /**
10
10
  * Docs Suite - Documentation services (skill, version, release_notes)
11
11
  */
12
- const BUILD_VERSION_STRING = "@jaypie/mcp@0.7.4#9b2629b2"
12
+ const BUILD_VERSION_STRING = "@jaypie/mcp@0.7.7#7d7a0427"
13
13
  ;
14
14
  const __filename$1 = fileURLToPath(import.meta.url);
15
15
  const __dirname$1 = path.dirname(__filename$1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaypie/mcp",
3
- "version": "0.7.4",
3
+ "version": "0.7.7",
4
4
  "description": "Jaypie MCP",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,20 @@
1
+ ---
2
+ version: 1.2.27
3
+ date: 2025-02-01
4
+ summary: Add EC2 and SSM read permissions to JaypieGitHubDeployRole for VPC lookups
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - Add EC2 describe permissions to `JaypieGitHubDeployRole` for CDK VPC lookups:
10
+ - `ec2:DescribeAvailabilityZones`
11
+ - `ec2:DescribeNetworkInterfaces`
12
+ - `ec2:DescribeRouteTables`
13
+ - `ec2:DescribeSecurityGroups`
14
+ - `ec2:DescribeSubnets`
15
+ - `ec2:DescribeVpcs`
16
+ - Add SSM parameter read permissions:
17
+ - `ssm:GetParameter`
18
+ - `ssm:GetParameters`
19
+
20
+ These permissions enable CDK stack synthesis that involves VPC lookups and SSM parameter resolution.
@@ -0,0 +1,12 @@
1
+ ---
2
+ version: 1.2.28
3
+ date: 2025-02-01
4
+ summary: Expand JaypieGitHubDeployRole permissions for CDK context lookups
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - Use `ec2:Describe*` wildcard for all EC2 describe operations (VPCs, subnets, VPN gateways, etc.)
10
+ - Use `cloudformation:Describe*` wildcard for CloudFormation lookups
11
+ - Add `cdk-hnb659fds-lookup-role-*` to assumable roles for CDK context provider
12
+ - Include SSM parameter read permissions (`ssm:GetParameter`, `ssm:GetParameters`)
@@ -0,0 +1,34 @@
1
+ ---
2
+ version: 1.2.8
3
+ date: 2025-02-01
4
+ summary: Fix CORS OPTIONS by calling flushHeaders() before res.end()
5
+ ---
6
+
7
+ ## Bug Fix
8
+
9
+ Fixed CORS OPTIONS preflight requests still hanging with Lambda streaming by calling `flushHeaders()` before `res.end()`.
10
+
11
+ ### Problem
12
+
13
+ The fix in v1.2.7 called `res.end()` for OPTIONS requests but didn't explicitly flush headers first. In Lambda streaming mode:
14
+
15
+ 1. `LambdaResponseStreaming._final()` closes the stream via `_wrappedStream.end()`
16
+ 2. `_wrappedStream` is only created when `flushHeaders()` is called
17
+ 3. Without explicit `flushHeaders()`, `_wrappedStream` could be null
18
+ 4. The Lambda stream never closes, causing the response to hang
19
+
20
+ ### Solution
21
+
22
+ Added explicit `res.flushHeaders()` call before `res.end()` in the CORS OPTIONS handler to ensure the Lambda stream wrapper is initialized before ending the response.
23
+
24
+ ```typescript
25
+ res.statusCode = 204;
26
+ res.setHeader("Content-Length", "0");
27
+ res.flushHeaders(); // Initialize _wrappedStream before ending
28
+ res.end();
29
+ ```
30
+
31
+ ### Related
32
+
33
+ - GitHub Issue: [#178](https://github.com/finlaysonstudio/jaypie/issues/178)
34
+ - Follow-up to: [#174](https://github.com/finlaysonstudio/jaypie/issues/174)
@@ -0,0 +1,13 @@
1
+ ---
2
+ version: 0.7.5
3
+ date: 2025-01-31
4
+ summary: Add monorepo and subpackage setup skills
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - Add `monorepo` skill for initializing Jaypie monorepo projects
10
+ - Add `subpackage` skill for creating packages within a monorepo
11
+ - Add `tools-llm` skill for LLM tool documentation
12
+ - Update `development` skill to reference new setup skills
13
+ - Update `tools` skill to reference tools-llm and add LLM environment variables
@@ -0,0 +1,13 @@
1
+ ---
2
+ version: 0.7.6
3
+ date: 2025-02-01
4
+ summary: Split CI/CD documentation into agent-optimized skills with complete templates
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - Add `cicd-actions` skill with copy-paste composite action templates
10
+ - Add `cicd-deploy` skill with sandbox and production deployment workflows
11
+ - Add `cicd-environments` skill with GitHub Environments configuration guide
12
+ - Update `cicd` skill to serve as overview with links to sub-skills
13
+ - Update `infrastructure` skill with new CI/CD sub-skills
package/skills/agents.md CHANGED
@@ -17,12 +17,25 @@ Some tasks should not be listed to avoid suboptimal pathing.
17
17
  ```markdown
18
18
  ## Jaypie
19
19
 
20
- Query `mcp__jaypie__skill(alias: String)` for development guidance:
20
+ Complete stack styles, techniques, and traditions.
21
+
22
+ - Call `mcp__jaypie__skill("skills")` to discover Jaypie development skills and tools available in this repository
23
+ - A `~` before a word or surrounding a word/phrase indicates it can be looked up as in ~skills
24
+ - Check ~tools (`mcp__jaypie__skill("tools")`) for all tools or ~tools-aws, ~tools-datadog, and ~tools-dynamodb individually
25
+ - File bugs, documentation, features, and other issues with `mcp__jaypie__skill("issues")`
26
+
27
+ ### Code
28
+
29
+ - `log.trace` happy path, `log.debug` things that should stand out. Avoid info. Use warn when recoverable. Use error when unrecoverable or "really bad"
30
+
31
+ ### Skills
32
+
33
+ `mcp__jaypie__skill(alias: String)`
21
34
 
22
35
  Contents: index, releasenotes
23
- Development: documentation, errors, logs, mocks, style, tests
36
+ Development: documentation, errors, llm, logs, mocks, monorepo, style, subpackages, tests
24
37
  Infrastructure: aws, cdk, cicd, datadog, dns, dynamodb, express, lambda, secrets, streaming, variables, websockets
25
- Patterns: fabric, models, services, vocabulary
38
+ Patterns: fabric, handlers, models, services, vocabulary
26
39
  Meta: issues, jaypie, skills, tools
27
40
  ```
28
41
 
@@ -0,0 +1,337 @@
1
+ ---
2
+ description: Reusable composite actions for GitHub Actions workflows
3
+ related: cicd, cicd-deploy, cicd-environments
4
+ ---
5
+
6
+ # Composite Actions
7
+
8
+ Jaypie projects use composite actions to share common workflow steps. Place these in `.github/actions/`.
9
+
10
+ ## Directory Structure
11
+
12
+ ```
13
+ .github/
14
+ ├── actions/
15
+ │ ├── setup-environment/
16
+ │ │ └── action.yml
17
+ │ ├── configure-aws/
18
+ │ │ └── action.yml
19
+ │ ├── setup-node-and-cache/
20
+ │ │ └── action.yml
21
+ │ ├── npm-install-build/
22
+ │ │ └── action.yml
23
+ │ └── cdk-deploy/
24
+ │ └── action.yml
25
+ └── workflows/
26
+ ├── deploy-sandbox.yml
27
+ └── deploy-production.yml
28
+ ```
29
+
30
+ ## setup-environment/action.yml
31
+
32
+ Sets Jaypie environment variables with bash parameter expansion defaults.
33
+
34
+ ```yaml
35
+ name: 'Setup Environment'
36
+ description: 'Set environment variables for Jaypie deployment'
37
+
38
+ inputs:
39
+ project-env:
40
+ description: 'Environment name (sandbox, production)'
41
+ required: false
42
+ default: 'sandbox'
43
+ project-key:
44
+ description: 'Project identifier'
45
+ required: true
46
+ project-nonce:
47
+ description: 'Unique resource identifier'
48
+ required: false
49
+ default: ''
50
+ log-level:
51
+ description: 'Log level (trace, debug, info, warn, error)'
52
+ required: false
53
+ default: ''
54
+ project-chaos:
55
+ description: 'Chaos mode (none, partial, full)'
56
+ required: false
57
+ default: ''
58
+
59
+ outputs:
60
+ project-env:
61
+ description: 'Resolved PROJECT_ENV'
62
+ value: ${{ steps.env.outputs.project-env }}
63
+ project-nonce:
64
+ description: 'Resolved PROJECT_NONCE'
65
+ value: ${{ steps.env.outputs.project-nonce }}
66
+ log-level:
67
+ description: 'Resolved LOG_LEVEL'
68
+ value: ${{ steps.env.outputs.log-level }}
69
+ project-chaos:
70
+ description: 'Resolved PROJECT_CHAOS'
71
+ value: ${{ steps.env.outputs.project-chaos }}
72
+
73
+ runs:
74
+ using: 'composite'
75
+ steps:
76
+ - name: Set environment variables
77
+ id: env
78
+ shell: bash
79
+ run: |
80
+ # Resolve PROJECT_ENV
81
+ PROJECT_ENV="${{ inputs.project-env }}"
82
+ echo "project-env=${PROJECT_ENV}" >> $GITHUB_OUTPUT
83
+ echo "PROJECT_ENV=${PROJECT_ENV}" >> $GITHUB_ENV
84
+
85
+ # Resolve PROJECT_KEY
86
+ echo "PROJECT_KEY=${{ inputs.project-key }}" >> $GITHUB_ENV
87
+
88
+ # Resolve PROJECT_NONCE (default: branch name or 'prod')
89
+ NONCE="${{ inputs.project-nonce }}"
90
+ if [ -z "$NONCE" ]; then
91
+ if [ "$PROJECT_ENV" = "production" ]; then
92
+ NONCE="prod"
93
+ else
94
+ NONCE="${GITHUB_REF_NAME//\//-}"
95
+ fi
96
+ fi
97
+ echo "project-nonce=${NONCE}" >> $GITHUB_OUTPUT
98
+ echo "PROJECT_NONCE=${NONCE}" >> $GITHUB_ENV
99
+
100
+ # Resolve LOG_LEVEL (default: trace for sandbox, info for production)
101
+ LOG_LEVEL="${{ inputs.log-level }}"
102
+ if [ -z "$LOG_LEVEL" ]; then
103
+ if [ "$PROJECT_ENV" = "production" ]; then
104
+ LOG_LEVEL="info"
105
+ else
106
+ LOG_LEVEL="trace"
107
+ fi
108
+ fi
109
+ echo "log-level=${LOG_LEVEL}" >> $GITHUB_OUTPUT
110
+ echo "LOG_LEVEL=${LOG_LEVEL}" >> $GITHUB_ENV
111
+
112
+ # Resolve PROJECT_CHAOS (default: none for production, full for sandbox)
113
+ CHAOS="${{ inputs.project-chaos }}"
114
+ if [ -z "$CHAOS" ]; then
115
+ if [ "$PROJECT_ENV" = "production" ]; then
116
+ CHAOS="none"
117
+ else
118
+ CHAOS="full"
119
+ fi
120
+ fi
121
+ echo "project-chaos=${CHAOS}" >> $GITHUB_OUTPUT
122
+ echo "PROJECT_CHAOS=${CHAOS}" >> $GITHUB_ENV
123
+ ```
124
+
125
+ ## configure-aws/action.yml
126
+
127
+ Configures AWS credentials via OIDC.
128
+
129
+ ```yaml
130
+ name: 'Configure AWS'
131
+ description: 'Configure AWS credentials via OIDC'
132
+
133
+ inputs:
134
+ role-arn:
135
+ description: 'AWS IAM Role ARN to assume'
136
+ required: true
137
+ region:
138
+ description: 'AWS region'
139
+ required: false
140
+ default: 'us-east-1'
141
+ role-session-name:
142
+ description: 'Session name for assumed role'
143
+ required: false
144
+ default: 'github-actions'
145
+
146
+ runs:
147
+ using: 'composite'
148
+ steps:
149
+ - name: Configure AWS credentials
150
+ uses: aws-actions/configure-aws-credentials@v4
151
+ with:
152
+ role-to-assume: ${{ inputs.role-arn }}
153
+ aws-region: ${{ inputs.region }}
154
+ role-session-name: ${{ inputs.role-session-name }}
155
+ ```
156
+
157
+ ## setup-node-and-cache/action.yml
158
+
159
+ Sets up Node.js with multi-layer caching.
160
+
161
+ ```yaml
162
+ name: 'Setup Node and Cache'
163
+ description: 'Setup Node.js with npm caching'
164
+
165
+ inputs:
166
+ node-version:
167
+ description: 'Node.js version'
168
+ required: false
169
+ default: '24'
170
+ cache-builds:
171
+ description: 'Cache build outputs'
172
+ required: false
173
+ default: 'true'
174
+
175
+ runs:
176
+ using: 'composite'
177
+ steps:
178
+ - name: Setup Node.js
179
+ uses: actions/setup-node@v4
180
+ with:
181
+ node-version: ${{ inputs.node-version }}
182
+ cache: 'npm'
183
+
184
+ - name: Cache node_modules
185
+ uses: actions/cache@v4
186
+ with:
187
+ path: |
188
+ node_modules
189
+ packages/*/node_modules
190
+ stacks/*/node_modules
191
+ key: ${{ runner.os }}-node-${{ inputs.node-version }}-${{ hashFiles('**/package-lock.json') }}
192
+ restore-keys: |
193
+ ${{ runner.os }}-node-${{ inputs.node-version }}-
194
+
195
+ - name: Cache build outputs
196
+ if: inputs.cache-builds == 'true'
197
+ uses: actions/cache@v4
198
+ with:
199
+ path: |
200
+ packages/*/dist
201
+ stacks/*/dist
202
+ stacks/*/.open-next
203
+ key: ${{ runner.os }}-build-${{ github.sha }}
204
+ restore-keys: |
205
+ ${{ runner.os }}-build-
206
+ ```
207
+
208
+ ## npm-install-build/action.yml
209
+
210
+ Installs dependencies and builds packages.
211
+
212
+ ```yaml
213
+ name: 'NPM Install and Build'
214
+ description: 'Install npm dependencies and build packages'
215
+
216
+ inputs:
217
+ install-command:
218
+ description: 'Install command to run'
219
+ required: false
220
+ default: 'npm ci'
221
+ build-command:
222
+ description: 'Build command to run'
223
+ required: false
224
+ default: 'npm run build'
225
+ skip-build:
226
+ description: 'Skip build step'
227
+ required: false
228
+ default: 'false'
229
+
230
+ runs:
231
+ using: 'composite'
232
+ steps:
233
+ - name: Install dependencies
234
+ shell: bash
235
+ run: ${{ inputs.install-command }}
236
+
237
+ - name: Build packages
238
+ if: inputs.skip-build != 'true'
239
+ shell: bash
240
+ run: ${{ inputs.build-command }}
241
+ ```
242
+
243
+ ## cdk-deploy/action.yml
244
+
245
+ Deploys CDK stack with proper configuration.
246
+
247
+ ```yaml
248
+ name: 'CDK Deploy'
249
+ description: 'Deploy CDK stack'
250
+
251
+ inputs:
252
+ stack-name:
253
+ description: 'CDK stack name or pattern'
254
+ required: true
255
+ working-directory:
256
+ description: 'Working directory for CDK commands'
257
+ required: false
258
+ default: 'stacks/cdk'
259
+ require-approval:
260
+ description: 'CDK approval mode (never, any-change, broadening)'
261
+ required: false
262
+ default: 'never'
263
+ extra-args:
264
+ description: 'Additional CDK deploy arguments'
265
+ required: false
266
+ default: ''
267
+
268
+ runs:
269
+ using: 'composite'
270
+ steps:
271
+ - name: Install CDK CLI
272
+ shell: bash
273
+ run: npm install -g aws-cdk
274
+
275
+ - name: CDK Deploy
276
+ shell: bash
277
+ working-directory: ${{ inputs.working-directory }}
278
+ run: |
279
+ cdk deploy "${{ inputs.stack-name }}" \
280
+ --require-approval ${{ inputs.require-approval }} \
281
+ --outputs-file cdk-outputs.json \
282
+ ${{ inputs.extra-args }}
283
+
284
+ - name: Upload CDK outputs
285
+ uses: actions/upload-artifact@v4
286
+ with:
287
+ name: cdk-outputs
288
+ path: ${{ inputs.working-directory }}/cdk-outputs.json
289
+ if-no-files-found: ignore
290
+ ```
291
+
292
+ ## Using Composite Actions
293
+
294
+ Reference actions in workflows:
295
+
296
+ ```yaml
297
+ jobs:
298
+ deploy:
299
+ runs-on: ubuntu-latest
300
+ environment: sandbox
301
+ permissions:
302
+ id-token: write
303
+ contents: read
304
+ steps:
305
+ - uses: actions/checkout@v4
306
+
307
+ - uses: ./.github/actions/setup-environment
308
+ with:
309
+ project-key: my-project
310
+ project-env: sandbox
311
+
312
+ - uses: ./.github/actions/configure-aws
313
+ with:
314
+ role-arn: ${{ vars.AWS_ROLE_ARN }}
315
+ region: ${{ vars.AWS_REGION || 'us-east-1' }}
316
+
317
+ - uses: ./.github/actions/setup-node-and-cache
318
+
319
+ - uses: ./.github/actions/npm-install-build
320
+
321
+ - uses: ./.github/actions/cdk-deploy
322
+ with:
323
+ stack-name: 'my-stack-*'
324
+ ```
325
+
326
+ ## Customization
327
+
328
+ Override defaults as needed:
329
+
330
+ ```yaml
331
+ - uses: ./.github/actions/setup-environment
332
+ with:
333
+ project-key: my-project
334
+ project-env: production
335
+ log-level: warn
336
+ project-chaos: none
337
+ ```