@jaypie/mcp 0.8.65 → 0.8.67

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.8.65#58028ec6"
12
+ const BUILD_VERSION_STRING = "@jaypie/mcp@0.8.67#266d669f"
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.8.65",
3
+ "version": "0.8.67",
4
4
  "description": "Jaypie MCP",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,18 @@
1
+ ---
2
+ version: 1.2.61
3
+ date: 2026-06-11
4
+ summary: Lambda serviceTag now sets the PROJECT_SERVICE environment variable
5
+ ---
6
+
7
+ ## @jaypie/constructs 1.2.61
8
+
9
+ ### Added
10
+
11
+ - **`serviceTag` sets `PROJECT_SERVICE`** (`JaypieLambda` and the
12
+ `JaypieQueuedLambda`, `JaypieBucketQueuedLambda`, `JaypieExpressLambda`,
13
+ `JaypieWebSocketLambda` constructs built on it). When a `serviceTag` is
14
+ provided, its value is now injected as the `PROJECT_SERVICE` environment
15
+ variable on the Lambda in addition to the existing service tag. Precedence is
16
+ explicit `environment.PROJECT_SERVICE` > `serviceTag` > `process.env.PROJECT_SERVICE`,
17
+ so a service no longer needs `PROJECT_SERVICE` set in the deploy environment to
18
+ identify itself at runtime.
@@ -0,0 +1,12 @@
1
+ ---
2
+ version: 1.2.50
3
+ date: 2026-06-11
4
+ summary: Pick up @jaypie/logger 1.2.16 (data field in JSON output) and @jaypie/llm 1.2.38 peer (google provider naming)
5
+ ---
6
+
7
+ ## jaypie 1.2.50
8
+
9
+ ### Changes
10
+
11
+ - **Dependencies**: `@jaypie/logger` ^1.2.16 — trailing log object split into `data` field in JSON output
12
+ - **Peer dependencies**: `@jaypie/llm` ^1.2.38 — provider name standardized on `"google"` with deprecated `"gemini"` aliases
@@ -0,0 +1,15 @@
1
+ ---
2
+ version: 1.2.38
3
+ date: 2026-06-11
4
+ summary: Standardize provider name on "google"; PROVIDER.GEMINI and GeminiProvider remain as deprecated aliases
5
+ ---
6
+
7
+ ## @jaypie/llm 1.2.38
8
+
9
+ ### Changes
10
+
11
+ - **Provider naming**: "Google" is the provider; Gemini is the model family
12
+ - `PROVIDER.GOOGLE` replaces `PROVIDER.GEMINI` (deprecated alias kept, same object)
13
+ - `GoogleProvider` replaces `GeminiProvider` (deprecated alias export kept)
14
+ - `new Llm("gemini")` and fallback `{ provider: "gemini" }` still resolve to `"google"` with a deprecation warning (unchanged)
15
+ - **Model constants**: Added `MODEL` export with named model constants; Google `TINY` is now `gemini-3.1-flash-lite`
@@ -0,0 +1,26 @@
1
+ ---
2
+ version: 1.2.16
3
+ date: 2026-06-11
4
+ summary: Split trailing object into structured data field in JSON output
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - `log.warn("message", { details })` (and all level methods) now emits `{ "message": "message", "data": { "details": ... } }` in JSON format instead of concatenating the stringified object into the message
10
+ - Applies when the final argument is an object (or array) and all preceding arguments are scalars; preceding scalars are joined into `message`
11
+ - Falls back to the previous space-joined concatenation when the object is not last, when multiple objects are passed, or when the trailing object does not serialize to JSON (e.g., `Error` instances)
12
+ - Text format output is unchanged
13
+
14
+ ## Migration
15
+
16
+ JSON output for `log.warn("Processing", { id: "my-id" })` changes from:
17
+
18
+ ```json
19
+ {"message":"Processing {\"id\":\"my-id\"}"}
20
+ ```
21
+
22
+ to:
23
+
24
+ ```json
25
+ {"message":"Processing","data":{"id":"my-id"}}
26
+ ```
@@ -0,0 +1,14 @@
1
+ ---
2
+ version: 0.8.66
3
+ date: 2026-06-05
4
+ summary: Document request envelope in skill("api") — requests use the same { data } object-vs-array rules as responses
5
+ ---
6
+
7
+ ## Changed
8
+
9
+ - **`api` skill** now documents the **request envelope**. Request bodies follow
10
+ the same `{ data }` convention as responses: `{ data: {} }` for a single record
11
+ (object), `{ data: [] }` for an array of records. The request rule was
12
+ previously undocumented in every skill file — only response format was covered.
13
+ - Retitled the skill to **API Request and Response Format** and added a request
14
+ rule to the shared rules list.
@@ -0,0 +1,12 @@
1
+ ---
2
+ version: 0.8.67
3
+ date: 2026-06-11
4
+ summary: Update skill("logs") for logger data field and skill("llm") for Google provider naming
5
+ ---
6
+
7
+ ## @jaypie/mcp 0.8.67
8
+
9
+ ### Changes
10
+
11
+ - **skill("logs")**: Document trailing-object split into `data` field in JSON log output
12
+ - **skill("llm")**: Provider for Gemini models is named `"google"` (`"gemini"` deprecated); refresh provider default-model table to current constants
@@ -0,0 +1,11 @@
1
+ ---
2
+ version: 1.2.41
3
+ date: 2026-06-11
4
+ summary: Add GoogleProvider mock; GeminiProvider remains as deprecated alias
5
+ ---
6
+
7
+ ## @jaypie/testkit 1.2.41
8
+
9
+ ### Changes
10
+
11
+ - **LLM mocks**: `GoogleProvider` mock added following the `@jaypie/llm` rename; `GeminiProvider` remains as a deprecated alias
package/skills/api.md CHANGED
@@ -1,11 +1,27 @@
1
1
  ---
2
- description: API response format and conventions
2
+ description: API request and response format and conventions
3
3
  related: express, handlers, style
4
4
  ---
5
5
 
6
- # API Response Format
6
+ # API Request and Response Format
7
7
 
8
- All API responses follow a consistent envelope format.
8
+ All API requests and responses follow a consistent envelope format.
9
+
10
+ ## Request Envelope
11
+
12
+ Request bodies follow the same `{ data }` envelope as responses.
13
+
14
+ ```json
15
+ // Single record
16
+ { "data": { "name": "Example" } }
17
+
18
+ // Array of records
19
+ { "data": [{ "name": "First" }, { "name": "Second" }] }
20
+ ```
21
+
22
+ - `{ data: {} }` — single record (object)
23
+ - `{ data: [] }` — array of records (even if zero or one result)
24
+ - No other top-level keys at the root
9
25
 
10
26
  ## Response Envelope
11
27
 
@@ -39,8 +55,9 @@ Every response body is a JSON object with one top-level key:
39
55
 
40
56
  ### Rules
41
57
 
42
- 1. A response contains either `data` or `errors`, never both
43
- 2. Single records use an object: `{ data: {} }`
44
- 3. Multiple records use an array: `{ data: [] }`
45
- 4. Errors always use an array: `{ errors: [] }`
46
- 5. No other top-level keys (no `status`, `message`, `meta` at the root)
58
+ 1. Requests and responses both use the `{ data }` envelope
59
+ 2. A response contains either `data` or `errors`, never both
60
+ 3. Single records use an object: `{ data: {} }`
61
+ 4. Multiple records use an array: `{ data: [] }`
62
+ 5. Errors always use an array: `{ errors: [] }` (responses only)
63
+ 6. No other top-level keys (no `status`, `message`, `meta` at the root)
package/skills/llm.md CHANGED
@@ -21,11 +21,13 @@ console.log(response.content); // "4"
21
21
 
22
22
  | Provider | Match Keywords | Default Model |
23
23
  |----------|----------------|---------------|
24
- | OpenAI | "openai", "gpt", /^o\d/ | gpt-5.2 |
25
- | Anthropic | "anthropic", "claude", "haiku", "opus", "sonnet" | claude-sonnet-4-5 |
26
- | Google | "google", "gemini" | gemini-3-pro-preview |
27
- | OpenRouter | "openrouter" | z-ai/glm-4.7 |
28
- | xAI | "xai", "grok" | grok-4-1-fast-reasoning |
24
+ | OpenAI | "openai", "gpt", /^o\d/ | gpt-5.4 |
25
+ | Anthropic | "anthropic", "claude", "haiku", "opus", "sonnet" | claude-sonnet-4-6 |
26
+ | Google | "google", "gemini" | gemini-3.1-pro-preview |
27
+ | OpenRouter | "openrouter" | anthropic/claude-sonnet-4-6 |
28
+ | xAI | "xai", "grok" | grok-latest |
29
+
30
+ The provider name for Gemini models is `"google"` — `"gemini"` is accepted as a deprecated alias.
29
31
 
30
32
  ```typescript
31
33
  // Provider auto-detected from model
@@ -317,7 +319,7 @@ const review2 = await llm.operate(code2);
317
319
 
318
320
  ```bash
319
321
  ANTHROPIC_API_KEY # Required for Anthropic
320
- GOOGLE_API_KEY # Required for Gemini
322
+ GOOGLE_API_KEY # Required for Google (Gemini models)
321
323
  OPENAI_API_KEY # Required for OpenAI
322
324
  OPENROUTER_API_KEY # Required for OpenRouter
323
325
  XAI_API_KEY # Required for xAI (Grok)
package/skills/logs.md CHANGED
@@ -30,17 +30,19 @@ log.fatal("Fatal error"); // only used internally in jaypie
30
30
 
31
31
  ## Logging Data
32
32
 
33
- DO NOT use multiple parameters when logging:
34
- <BAD>
33
+ A trailing object becomes the structured `data` field; preceding scalars join into `message`:
34
+
35
35
  ```typescript
36
- log.info("Processing", { id: "my-id" });
36
+ log.warn("Processing failed", { id: "my-id" });
37
+ // => { "message": "Processing failed", "data": { "id": "my-id" } }
37
38
  ```
38
- </BAD>
39
39
 
40
- Use `log.var` to log single-key objects that parse in Datadog:
40
+ This only splits when the object is last and everything before it is scalar. An object mid-call, multiple objects, or a non-serializable object (e.g., `Error`) falls back to space-joined stringification — keep objects last and singular.
41
+
42
+ Prefer `log.var` to log single-key objects that parse in Datadog:
41
43
  <GOOD>
42
44
  ```typescript
43
- log.trace("Processing", { id: "my-id" });
45
+ log.trace("Processing");
44
46
  log.var({ id: "my-id" });
45
47
  ```
46
48
  </GOOD>