@jaypie/mcp 0.7.3 → 0.7.6

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.3#f9c2b3fe"
12
+ const BUILD_VERSION_STRING = "@jaypie/mcp@0.7.6#2f4ca154"
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.3",
3
+ "version": "0.7.6",
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,48 @@
1
+ ---
2
+ version: 1.2.7
3
+ date: 2025-01-30
4
+ summary: Fix CORS OPTIONS preflight hanging with Lambda streaming
5
+ ---
6
+
7
+ ## Bug Fix
8
+
9
+ Fixed an issue where CORS OPTIONS preflight requests would hang indefinitely when using `createLambdaStreamHandler` with the `cors` middleware.
10
+
11
+ ### Problem
12
+
13
+ When using Lambda response streaming, browser CORS preflight (OPTIONS) requests would hang because:
14
+ - The standard cors package's call to `res.end()` could get delayed by streaming's async behavior
15
+ - The Lambda response stream would stay open waiting for streaming data that never comes
16
+ - Browsers would timeout waiting for the preflight response
17
+
18
+ ### Solution
19
+
20
+ The `cors` middleware now detects OPTIONS requests early and handles them synchronously:
21
+ - Sets all required CORS headers directly (Access-Control-Allow-Origin, Access-Control-Allow-Methods, etc.)
22
+ - Terminates the response immediately with a 204 No Content status
23
+ - Ensures the response stream doesn't enter streaming mode for preflight requests
24
+
25
+ ### Usage
26
+
27
+ No changes required. The fix is automatic when using `cors` with `createLambdaStreamHandler`:
28
+
29
+ ```typescript
30
+ import express from "express";
31
+ import { cors, createLambdaStreamHandler } from "@jaypie/express";
32
+
33
+ const app = express();
34
+ app.use(cors({ origin: "https://example.com" }));
35
+
36
+ // Streaming endpoint works correctly with CORS
37
+ app.post("/stream", (req, res) => {
38
+ res.setHeader("Content-Type", "text/event-stream");
39
+ res.write("data: hello\n\n");
40
+ res.end();
41
+ });
42
+
43
+ export const handler = createLambdaStreamHandler(app);
44
+ ```
45
+
46
+ ### Related
47
+
48
+ - GitHub Issue: [#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,21 @@ 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
+ ### Skills
28
+
29
+ `mcp__jaypie__skill(alias: String)`
21
30
 
22
31
  Contents: index, releasenotes
23
- Development: documentation, errors, logs, mocks, style, tests
32
+ Development: documentation, errors, logs, mocks, monorepo, style, subpackages, tests
24
33
  Infrastructure: aws, cdk, cicd, datadog, dns, dynamodb, express, lambda, secrets, streaming, variables, websockets
25
- Patterns: fabric, models, services, vocabulary
34
+ Patterns: fabric, handlers, models, services, vocabulary
26
35
  Meta: issues, jaypie, skills, tools
27
36
  ```
28
37
 
@@ -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
+ ```