@jaypie/mcp 0.6.3 → 0.6.5

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.
@@ -8,7 +8,7 @@ import { gt } from 'semver';
8
8
  /**
9
9
  * Docs Suite - Documentation services (skill, version, release_notes)
10
10
  */
11
- const BUILD_VERSION_STRING = "@jaypie/mcp@0.6.3#291140bb"
11
+ const BUILD_VERSION_STRING = "@jaypie/mcp@0.6.5#d73a8800"
12
12
  ;
13
13
  const __filename$1 = fileURLToPath(import.meta.url);
14
14
  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.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Jaypie MCP",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,43 @@
1
+ ---
2
+ version: 1.2.23
3
+ date: 2025-01-26
4
+ summary: Fix shared secrets not injecting env vars across constructs (Issue #158)
5
+ ---
6
+
7
+ # @jaypie/constructs 1.2.23
8
+
9
+ ## Bug Fix
10
+
11
+ ### Shared Secrets Between Constructs (Issue #158)
12
+
13
+ Fixed an issue where secrets declared in multiple constructs (e.g., `JaypieQueuedLambda` and `JaypieNextJs`) would not properly inject `SECRET_*` environment variables or grant IAM permissions to the second construct.
14
+
15
+ **Root Cause**: `JaypieLambda` and `JaypieNextJs` were calling `resolveSecrets(scope, ...)` with their parent construct as the scope. This caused secrets to be cached per-construct rather than per-stack, so constructs couldn't share secrets.
16
+
17
+ **Fix**: Changed both `JaypieLambda` and `JaypieNextJs` to use `Stack.of(this)` as the scope for `resolveSecrets`. This ensures:
18
+ - Secrets are shared at the stack level across all constructs
19
+ - Each construct sets its own `SECRET_*` environment variables
20
+ - Each construct grants IAM permissions to its Lambda function
21
+
22
+ **Before** (broken):
23
+ ```typescript
24
+ // JaypieQueuedLambda created secrets under its own namespace
25
+ // JaypieNextJs couldn't find or use those secrets
26
+ const jobProcessor = new JaypieQueuedLambda(this, "JobProcessor", {
27
+ secrets: ["ANTHROPIC_API_KEY"], // Created JobProcessorANTHROPICAPIKEY-xxx
28
+ });
29
+ const nextjsApp = new JaypieNextJs(this, "NextJsApp", {
30
+ secrets: ["ANTHROPIC_API_KEY"], // Missing env var and permissions!
31
+ });
32
+ ```
33
+
34
+ **After** (fixed):
35
+ ```typescript
36
+ // Both constructs share secrets at stack level
37
+ const jobProcessor = new JaypieQueuedLambda(this, "JobProcessor", {
38
+ secrets: ["ANTHROPIC_API_KEY"], // Creates shared secret
39
+ });
40
+ const nextjsApp = new JaypieNextJs(this, "NextJsApp", {
41
+ secrets: ["ANTHROPIC_API_KEY"], // Reuses same secret, gets env var + permissions
42
+ });
43
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ version: 0.6.5
3
+ date: 2026-01-26
4
+ summary: Added migration guide for class to category refactor in DynamoDB skill
5
+ ---
6
+
7
+ # @jaypie/mcp 0.6.5
8
+
9
+ ## Changes
10
+
11
+ - Added migration section to `dynamodb` skill documenting the `class` → `category` field rename in @jaypie/dynamodb 0.4.0+
12
+ - Documents table recreation and migration script options for existing tables
@@ -147,3 +147,19 @@ describe("OrderService", () => {
147
147
  });
148
148
  ```
149
149
 
150
+ ## Migration: class to category (v0.4.0)
151
+
152
+ Version 0.4.0 renamed `class` → `category` and `indexClass` → `indexCategory`.
153
+
154
+ **If your table was created with an older version:**
155
+
156
+ 1. **Local dev**: Delete and recreate the table using MCP `createTable`
157
+ 2. **Production**: See `packages/dynamodb/CLAUDE.md` for migration script
158
+
159
+ | Old | New |
160
+ |-----|-----|
161
+ | `class` | `category` |
162
+ | `indexClass` | `indexCategory` |
163
+ | `INDEX_CLASS` | `INDEX_CATEGORY` |
164
+ | `queryByClass()` | `queryByCategory()` |
165
+
package/skills/llm.md CHANGED
@@ -142,6 +142,27 @@ const greetTool = fabricLlmTool(greetService);
142
142
  const toolkit = new Toolkit([greetTool]);
143
143
  ```
144
144
 
145
+ ### Explain Mode
146
+
147
+ Explain mode adds transparency to tool calling by requiring the LLM to state its reasoning when invoking tools.
148
+
149
+ ```typescript
150
+ // Enable via Toolkit constructor
151
+ const toolkit = new Toolkit([myTool], { explain: true });
152
+
153
+ // Or via operate options
154
+ const response = await Llm.operate("What's the weather?", {
155
+ model: "gpt-5.1",
156
+ tools: myTools,
157
+ explain: true,
158
+ });
159
+ ```
160
+
161
+ When enabled:
162
+ - Each tool receives an `__Explanation` parameter requiring the model to state why it's calling the tool
163
+ - The explanation is stripped before the tool executes (tools receive clean arguments)
164
+ - Useful for debugging and understanding LLM decision-making
165
+
145
166
  ## Structured Output
146
167
 
147
168
  ### Natural Schema