@kmmao/happy-wire 0.18.0 → 0.19.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/dist/index.cjs CHANGED
@@ -624,8 +624,10 @@ const KnowledgeEntryTypeSchema = z__namespace.enum([
624
624
  // Code convention / process rule
625
625
  "warning",
626
626
  // Known pitfall or gotcha
627
- "repo_map"
627
+ "repo_map",
628
628
  // Static repo structure snapshot (file tree + key exports)
629
+ "summary"
630
+ // Session-end summary (auto-generated at session teardown)
629
631
  ]);
630
632
  const KnowledgeContributorTypeSchema = z__namespace.enum([
631
633
  "session",
@@ -2124,23 +2126,64 @@ const GetContextUsageResponseSchema = z.z.object({
2124
2126
  serverName: z.z.string(),
2125
2127
  tokens: z.z.number().int().nonnegative(),
2126
2128
  isLoaded: z.z.boolean().optional()
2127
- }))
2129
+ })),
2130
+ /** Messages 内部 token 细分(SDK messageBreakdown)。仅 SDK 0.2.139+ 返回。 */
2131
+ messageBreakdown: z.z.object({
2132
+ toolCallTokens: z.z.number().int().nonnegative(),
2133
+ toolResultTokens: z.z.number().int().nonnegative(),
2134
+ attachmentTokens: z.z.number().int().nonnegative(),
2135
+ assistantMessageTokens: z.z.number().int().nonnegative(),
2136
+ userMessageTokens: z.z.number().int().nonnegative(),
2137
+ redirectedContextTokens: z.z.number().int().nonnegative(),
2138
+ unattributedTokens: z.z.number().int().nonnegative(),
2139
+ toolCallsByType: z.z.array(z.z.object({
2140
+ name: z.z.string(),
2141
+ callTokens: z.z.number().int().nonnegative(),
2142
+ resultTokens: z.z.number().int().nonnegative()
2143
+ })),
2144
+ attachmentsByType: z.z.array(z.z.object({
2145
+ name: z.z.string(),
2146
+ tokens: z.z.number().int().nonnegative()
2147
+ }))
2148
+ }).optional(),
2149
+ /** System Prompt 各段 token 细分。 */
2150
+ systemPromptSections: z.z.array(z.z.object({
2151
+ name: z.z.string(),
2152
+ tokens: z.z.number().int().nonnegative()
2153
+ })).optional(),
2154
+ /** API 实际用量(input/output/cache hit/miss)。 */
2155
+ apiUsage: z.z.object({
2156
+ inputTokens: z.z.number().int().nonnegative(),
2157
+ outputTokens: z.z.number().int().nonnegative(),
2158
+ cacheCreationInputTokens: z.z.number().int().nonnegative(),
2159
+ cacheReadInputTokens: z.z.number().int().nonnegative()
2160
+ }).nullable().optional()
2128
2161
  }).strict();
2129
2162
  const GetContextDetailRequestSchema = z.z.object({
2130
2163
  /**
2131
2164
  * Category name from getContextUsage (e.g. "Messages", "System prompt",
2132
2165
  * "Skills", "Custom agents", "Autocompact buffer", "Memory files").
2133
2166
  */
2134
- category: z.z.string().min(1).max(128)
2167
+ category: z.z.string().min(1).max(128),
2168
+ /**
2169
+ * When true, return only subcategory counts (no item content).
2170
+ * Only meaningful for the "Messages" category.
2171
+ */
2172
+ summaryOnly: z.z.boolean().optional(),
2173
+ /**
2174
+ * Filter to a specific subcategory within "Messages".
2175
+ * One of: "user", "system-reminder", "assistant".
2176
+ */
2177
+ subcategory: z.z.string().optional()
2135
2178
  }).strict();
2136
2179
  const GetContextDetailResponseSchema = z.z.object({
2137
- /** Parsed JSONL records for the requested category. */
2180
+ /** Parsed JSONL records for the requested category. Empty when summaryOnly=true. */
2138
2181
  items: z.z.array(z.z.object({
2139
2182
  /** JSONL record type (user, assistant, attachment, system, summary, etc.) */
2140
2183
  type: z.z.string(),
2141
2184
  /** Role when applicable (user / assistant) */
2142
2185
  role: z.z.string().optional(),
2143
- /** Full text content of the record. Truncated at 10 KB per item. */
2186
+ /** Full text content of the record. Truncated at 50 KB per item. */
2144
2187
  content: z.z.string(),
2145
2188
  /** UUID of the JSONL record */
2146
2189
  uuid: z.z.string().optional(),
@@ -2150,7 +2193,19 @@ const GetContextDetailResponseSchema = z.z.object({
2150
2193
  /** Category name echoed back for display */
2151
2194
  category: z.z.string(),
2152
2195
  /** Total number of matching items */
2153
- totalItems: z.z.number().int().nonnegative()
2196
+ totalItems: z.z.number().int().nonnegative(),
2197
+ /**
2198
+ * Subcategory breakdown for "Messages" when summaryOnly=true.
2199
+ * Each entry has a key, display label, and item count.
2200
+ */
2201
+ subcategories: z.z.array(z.z.object({
2202
+ /** Subcategory key: "user" | "system-reminder" | "assistant" */
2203
+ name: z.z.string(),
2204
+ /** Human-readable label */
2205
+ label: z.z.string(),
2206
+ /** Number of items in this subcategory */
2207
+ count: z.z.number().int().nonnegative()
2208
+ })).optional()
2154
2209
  }).strict();
2155
2210
  const GetMcpServersRequestSchema = z.z.object({}).strict();
2156
2211
  const GetMcpServersResponseSchema = z.z.object({
package/dist/index.d.cts CHANGED
@@ -2153,6 +2153,7 @@ declare const DaemonStateSchema: z.ZodObject<{
2153
2153
  type DaemonState = z.infer<typeof DaemonStateSchema>;
2154
2154
 
2155
2155
  declare const KnowledgeEntryTypeSchema: z.ZodEnum<{
2156
+ summary: "summary";
2156
2157
  discovery: "discovery";
2157
2158
  decision: "decision";
2158
2159
  fix: "fix";
@@ -2188,6 +2189,7 @@ declare const KnowledgeConfidenceSchema: z.ZodEnum<{
2188
2189
  type KnowledgeConfidence = z.infer<typeof KnowledgeConfidenceSchema>;
2189
2190
  declare const CreateKnowledgeEntryBodySchema: z.ZodObject<{
2190
2191
  entryType: z.ZodEnum<{
2192
+ summary: "summary";
2191
2193
  discovery: "discovery";
2192
2194
  decision: "decision";
2193
2195
  fix: "fix";
@@ -2245,6 +2247,7 @@ declare const UpdateKnowledgeEntryBodySchema: z.ZodObject<{
2245
2247
  type UpdateKnowledgeEntryBody = z.infer<typeof UpdateKnowledgeEntryBodySchema>;
2246
2248
  declare const QueryKnowledgeParamsSchema: z.ZodObject<{
2247
2249
  entryType: z.ZodOptional<z.ZodEnum<{
2250
+ summary: "summary";
2248
2251
  discovery: "discovery";
2249
2252
  decision: "decision";
2250
2253
  fix: "fix";
@@ -2299,6 +2302,7 @@ declare const KnowledgeInjectionResponseSchema: z.ZodObject<{
2299
2302
  entries: z.ZodArray<z.ZodObject<{
2300
2303
  id: z.ZodString;
2301
2304
  entryType: z.ZodEnum<{
2305
+ summary: "summary";
2302
2306
  discovery: "discovery";
2303
2307
  decision: "decision";
2304
2308
  fix: "fix";
@@ -2330,6 +2334,7 @@ type KnowledgeChainRelation = z.infer<typeof KnowledgeChainRelationSchema>;
2330
2334
  declare const KnowledgeChainEntrySchema: z.ZodObject<{
2331
2335
  id: z.ZodString;
2332
2336
  entryType: z.ZodEnum<{
2337
+ summary: "summary";
2333
2338
  discovery: "discovery";
2334
2339
  decision: "decision";
2335
2340
  fix: "fix";
@@ -2364,6 +2369,7 @@ declare const KnowledgeChainResponseSchema: z.ZodObject<{
2364
2369
  chain: z.ZodArray<z.ZodObject<{
2365
2370
  id: z.ZodString;
2366
2371
  entryType: z.ZodEnum<{
2372
+ summary: "summary";
2367
2373
  discovery: "discovery";
2368
2374
  decision: "decision";
2369
2375
  fix: "fix";
@@ -2408,6 +2414,7 @@ declare const CrossProjectSearchResultSchema: z.ZodObject<{
2408
2414
  projectId: z.ZodString;
2409
2415
  projectPath: z.ZodString;
2410
2416
  entryType: z.ZodEnum<{
2417
+ summary: "summary";
2411
2418
  discovery: "discovery";
2412
2419
  decision: "decision";
2413
2420
  fix: "fix";
@@ -2433,6 +2440,7 @@ declare const CrossProjectSearchResponseSchema: z.ZodObject<{
2433
2440
  projectId: z.ZodString;
2434
2441
  projectPath: z.ZodString;
2435
2442
  entryType: z.ZodEnum<{
2443
+ summary: "summary";
2436
2444
  discovery: "discovery";
2437
2445
  decision: "decision";
2438
2446
  fix: "fix";
@@ -3726,11 +3734,41 @@ declare const GetContextUsageResponseSchema: z$1.ZodObject<{
3726
3734
  tokens: z$1.ZodNumber;
3727
3735
  isLoaded: z$1.ZodOptional<z$1.ZodBoolean>;
3728
3736
  }, z$1.core.$strip>>;
3737
+ messageBreakdown: z$1.ZodOptional<z$1.ZodObject<{
3738
+ toolCallTokens: z$1.ZodNumber;
3739
+ toolResultTokens: z$1.ZodNumber;
3740
+ attachmentTokens: z$1.ZodNumber;
3741
+ assistantMessageTokens: z$1.ZodNumber;
3742
+ userMessageTokens: z$1.ZodNumber;
3743
+ redirectedContextTokens: z$1.ZodNumber;
3744
+ unattributedTokens: z$1.ZodNumber;
3745
+ toolCallsByType: z$1.ZodArray<z$1.ZodObject<{
3746
+ name: z$1.ZodString;
3747
+ callTokens: z$1.ZodNumber;
3748
+ resultTokens: z$1.ZodNumber;
3749
+ }, z$1.core.$strip>>;
3750
+ attachmentsByType: z$1.ZodArray<z$1.ZodObject<{
3751
+ name: z$1.ZodString;
3752
+ tokens: z$1.ZodNumber;
3753
+ }, z$1.core.$strip>>;
3754
+ }, z$1.core.$strip>>;
3755
+ systemPromptSections: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
3756
+ name: z$1.ZodString;
3757
+ tokens: z$1.ZodNumber;
3758
+ }, z$1.core.$strip>>>;
3759
+ apiUsage: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodObject<{
3760
+ inputTokens: z$1.ZodNumber;
3761
+ outputTokens: z$1.ZodNumber;
3762
+ cacheCreationInputTokens: z$1.ZodNumber;
3763
+ cacheReadInputTokens: z$1.ZodNumber;
3764
+ }, z$1.core.$strip>>>;
3729
3765
  }, z$1.core.$strict>;
3730
3766
  type GetContextUsageRequest = z$1.infer<typeof GetContextUsageRequestSchema>;
3731
3767
  type GetContextUsageResponse = z$1.infer<typeof GetContextUsageResponseSchema>;
3732
3768
  declare const GetContextDetailRequestSchema: z$1.ZodObject<{
3733
3769
  category: z$1.ZodString;
3770
+ summaryOnly: z$1.ZodOptional<z$1.ZodBoolean>;
3771
+ subcategory: z$1.ZodOptional<z$1.ZodString>;
3734
3772
  }, z$1.core.$strict>;
3735
3773
  declare const GetContextDetailResponseSchema: z$1.ZodObject<{
3736
3774
  items: z$1.ZodArray<z$1.ZodObject<{
@@ -3742,6 +3780,11 @@ declare const GetContextDetailResponseSchema: z$1.ZodObject<{
3742
3780
  }, z$1.core.$strip>>;
3743
3781
  category: z$1.ZodString;
3744
3782
  totalItems: z$1.ZodNumber;
3783
+ subcategories: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
3784
+ name: z$1.ZodString;
3785
+ label: z$1.ZodString;
3786
+ count: z$1.ZodNumber;
3787
+ }, z$1.core.$strip>>>;
3745
3788
  }, z$1.core.$strict>;
3746
3789
  type GetContextDetailRequest = z$1.infer<typeof GetContextDetailRequestSchema>;
3747
3790
  type GetContextDetailResponse = z$1.infer<typeof GetContextDetailResponseSchema>;
package/dist/index.d.mts CHANGED
@@ -2153,6 +2153,7 @@ declare const DaemonStateSchema: z.ZodObject<{
2153
2153
  type DaemonState = z.infer<typeof DaemonStateSchema>;
2154
2154
 
2155
2155
  declare const KnowledgeEntryTypeSchema: z.ZodEnum<{
2156
+ summary: "summary";
2156
2157
  discovery: "discovery";
2157
2158
  decision: "decision";
2158
2159
  fix: "fix";
@@ -2188,6 +2189,7 @@ declare const KnowledgeConfidenceSchema: z.ZodEnum<{
2188
2189
  type KnowledgeConfidence = z.infer<typeof KnowledgeConfidenceSchema>;
2189
2190
  declare const CreateKnowledgeEntryBodySchema: z.ZodObject<{
2190
2191
  entryType: z.ZodEnum<{
2192
+ summary: "summary";
2191
2193
  discovery: "discovery";
2192
2194
  decision: "decision";
2193
2195
  fix: "fix";
@@ -2245,6 +2247,7 @@ declare const UpdateKnowledgeEntryBodySchema: z.ZodObject<{
2245
2247
  type UpdateKnowledgeEntryBody = z.infer<typeof UpdateKnowledgeEntryBodySchema>;
2246
2248
  declare const QueryKnowledgeParamsSchema: z.ZodObject<{
2247
2249
  entryType: z.ZodOptional<z.ZodEnum<{
2250
+ summary: "summary";
2248
2251
  discovery: "discovery";
2249
2252
  decision: "decision";
2250
2253
  fix: "fix";
@@ -2299,6 +2302,7 @@ declare const KnowledgeInjectionResponseSchema: z.ZodObject<{
2299
2302
  entries: z.ZodArray<z.ZodObject<{
2300
2303
  id: z.ZodString;
2301
2304
  entryType: z.ZodEnum<{
2305
+ summary: "summary";
2302
2306
  discovery: "discovery";
2303
2307
  decision: "decision";
2304
2308
  fix: "fix";
@@ -2330,6 +2334,7 @@ type KnowledgeChainRelation = z.infer<typeof KnowledgeChainRelationSchema>;
2330
2334
  declare const KnowledgeChainEntrySchema: z.ZodObject<{
2331
2335
  id: z.ZodString;
2332
2336
  entryType: z.ZodEnum<{
2337
+ summary: "summary";
2333
2338
  discovery: "discovery";
2334
2339
  decision: "decision";
2335
2340
  fix: "fix";
@@ -2364,6 +2369,7 @@ declare const KnowledgeChainResponseSchema: z.ZodObject<{
2364
2369
  chain: z.ZodArray<z.ZodObject<{
2365
2370
  id: z.ZodString;
2366
2371
  entryType: z.ZodEnum<{
2372
+ summary: "summary";
2367
2373
  discovery: "discovery";
2368
2374
  decision: "decision";
2369
2375
  fix: "fix";
@@ -2408,6 +2414,7 @@ declare const CrossProjectSearchResultSchema: z.ZodObject<{
2408
2414
  projectId: z.ZodString;
2409
2415
  projectPath: z.ZodString;
2410
2416
  entryType: z.ZodEnum<{
2417
+ summary: "summary";
2411
2418
  discovery: "discovery";
2412
2419
  decision: "decision";
2413
2420
  fix: "fix";
@@ -2433,6 +2440,7 @@ declare const CrossProjectSearchResponseSchema: z.ZodObject<{
2433
2440
  projectId: z.ZodString;
2434
2441
  projectPath: z.ZodString;
2435
2442
  entryType: z.ZodEnum<{
2443
+ summary: "summary";
2436
2444
  discovery: "discovery";
2437
2445
  decision: "decision";
2438
2446
  fix: "fix";
@@ -3726,11 +3734,41 @@ declare const GetContextUsageResponseSchema: z$1.ZodObject<{
3726
3734
  tokens: z$1.ZodNumber;
3727
3735
  isLoaded: z$1.ZodOptional<z$1.ZodBoolean>;
3728
3736
  }, z$1.core.$strip>>;
3737
+ messageBreakdown: z$1.ZodOptional<z$1.ZodObject<{
3738
+ toolCallTokens: z$1.ZodNumber;
3739
+ toolResultTokens: z$1.ZodNumber;
3740
+ attachmentTokens: z$1.ZodNumber;
3741
+ assistantMessageTokens: z$1.ZodNumber;
3742
+ userMessageTokens: z$1.ZodNumber;
3743
+ redirectedContextTokens: z$1.ZodNumber;
3744
+ unattributedTokens: z$1.ZodNumber;
3745
+ toolCallsByType: z$1.ZodArray<z$1.ZodObject<{
3746
+ name: z$1.ZodString;
3747
+ callTokens: z$1.ZodNumber;
3748
+ resultTokens: z$1.ZodNumber;
3749
+ }, z$1.core.$strip>>;
3750
+ attachmentsByType: z$1.ZodArray<z$1.ZodObject<{
3751
+ name: z$1.ZodString;
3752
+ tokens: z$1.ZodNumber;
3753
+ }, z$1.core.$strip>>;
3754
+ }, z$1.core.$strip>>;
3755
+ systemPromptSections: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
3756
+ name: z$1.ZodString;
3757
+ tokens: z$1.ZodNumber;
3758
+ }, z$1.core.$strip>>>;
3759
+ apiUsage: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodObject<{
3760
+ inputTokens: z$1.ZodNumber;
3761
+ outputTokens: z$1.ZodNumber;
3762
+ cacheCreationInputTokens: z$1.ZodNumber;
3763
+ cacheReadInputTokens: z$1.ZodNumber;
3764
+ }, z$1.core.$strip>>>;
3729
3765
  }, z$1.core.$strict>;
3730
3766
  type GetContextUsageRequest = z$1.infer<typeof GetContextUsageRequestSchema>;
3731
3767
  type GetContextUsageResponse = z$1.infer<typeof GetContextUsageResponseSchema>;
3732
3768
  declare const GetContextDetailRequestSchema: z$1.ZodObject<{
3733
3769
  category: z$1.ZodString;
3770
+ summaryOnly: z$1.ZodOptional<z$1.ZodBoolean>;
3771
+ subcategory: z$1.ZodOptional<z$1.ZodString>;
3734
3772
  }, z$1.core.$strict>;
3735
3773
  declare const GetContextDetailResponseSchema: z$1.ZodObject<{
3736
3774
  items: z$1.ZodArray<z$1.ZodObject<{
@@ -3742,6 +3780,11 @@ declare const GetContextDetailResponseSchema: z$1.ZodObject<{
3742
3780
  }, z$1.core.$strip>>;
3743
3781
  category: z$1.ZodString;
3744
3782
  totalItems: z$1.ZodNumber;
3783
+ subcategories: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
3784
+ name: z$1.ZodString;
3785
+ label: z$1.ZodString;
3786
+ count: z$1.ZodNumber;
3787
+ }, z$1.core.$strip>>>;
3745
3788
  }, z$1.core.$strict>;
3746
3789
  type GetContextDetailRequest = z$1.infer<typeof GetContextDetailRequestSchema>;
3747
3790
  type GetContextDetailResponse = z$1.infer<typeof GetContextDetailResponseSchema>;
package/dist/index.mjs CHANGED
@@ -604,8 +604,10 @@ const KnowledgeEntryTypeSchema = z.enum([
604
604
  // Code convention / process rule
605
605
  "warning",
606
606
  // Known pitfall or gotcha
607
- "repo_map"
607
+ "repo_map",
608
608
  // Static repo structure snapshot (file tree + key exports)
609
+ "summary"
610
+ // Session-end summary (auto-generated at session teardown)
609
611
  ]);
610
612
  const KnowledgeContributorTypeSchema = z.enum([
611
613
  "session",
@@ -2104,23 +2106,64 @@ const GetContextUsageResponseSchema = z$1.object({
2104
2106
  serverName: z$1.string(),
2105
2107
  tokens: z$1.number().int().nonnegative(),
2106
2108
  isLoaded: z$1.boolean().optional()
2107
- }))
2109
+ })),
2110
+ /** Messages 内部 token 细分(SDK messageBreakdown)。仅 SDK 0.2.139+ 返回。 */
2111
+ messageBreakdown: z$1.object({
2112
+ toolCallTokens: z$1.number().int().nonnegative(),
2113
+ toolResultTokens: z$1.number().int().nonnegative(),
2114
+ attachmentTokens: z$1.number().int().nonnegative(),
2115
+ assistantMessageTokens: z$1.number().int().nonnegative(),
2116
+ userMessageTokens: z$1.number().int().nonnegative(),
2117
+ redirectedContextTokens: z$1.number().int().nonnegative(),
2118
+ unattributedTokens: z$1.number().int().nonnegative(),
2119
+ toolCallsByType: z$1.array(z$1.object({
2120
+ name: z$1.string(),
2121
+ callTokens: z$1.number().int().nonnegative(),
2122
+ resultTokens: z$1.number().int().nonnegative()
2123
+ })),
2124
+ attachmentsByType: z$1.array(z$1.object({
2125
+ name: z$1.string(),
2126
+ tokens: z$1.number().int().nonnegative()
2127
+ }))
2128
+ }).optional(),
2129
+ /** System Prompt 各段 token 细分。 */
2130
+ systemPromptSections: z$1.array(z$1.object({
2131
+ name: z$1.string(),
2132
+ tokens: z$1.number().int().nonnegative()
2133
+ })).optional(),
2134
+ /** API 实际用量(input/output/cache hit/miss)。 */
2135
+ apiUsage: z$1.object({
2136
+ inputTokens: z$1.number().int().nonnegative(),
2137
+ outputTokens: z$1.number().int().nonnegative(),
2138
+ cacheCreationInputTokens: z$1.number().int().nonnegative(),
2139
+ cacheReadInputTokens: z$1.number().int().nonnegative()
2140
+ }).nullable().optional()
2108
2141
  }).strict();
2109
2142
  const GetContextDetailRequestSchema = z$1.object({
2110
2143
  /**
2111
2144
  * Category name from getContextUsage (e.g. "Messages", "System prompt",
2112
2145
  * "Skills", "Custom agents", "Autocompact buffer", "Memory files").
2113
2146
  */
2114
- category: z$1.string().min(1).max(128)
2147
+ category: z$1.string().min(1).max(128),
2148
+ /**
2149
+ * When true, return only subcategory counts (no item content).
2150
+ * Only meaningful for the "Messages" category.
2151
+ */
2152
+ summaryOnly: z$1.boolean().optional(),
2153
+ /**
2154
+ * Filter to a specific subcategory within "Messages".
2155
+ * One of: "user", "system-reminder", "assistant".
2156
+ */
2157
+ subcategory: z$1.string().optional()
2115
2158
  }).strict();
2116
2159
  const GetContextDetailResponseSchema = z$1.object({
2117
- /** Parsed JSONL records for the requested category. */
2160
+ /** Parsed JSONL records for the requested category. Empty when summaryOnly=true. */
2118
2161
  items: z$1.array(z$1.object({
2119
2162
  /** JSONL record type (user, assistant, attachment, system, summary, etc.) */
2120
2163
  type: z$1.string(),
2121
2164
  /** Role when applicable (user / assistant) */
2122
2165
  role: z$1.string().optional(),
2123
- /** Full text content of the record. Truncated at 10 KB per item. */
2166
+ /** Full text content of the record. Truncated at 50 KB per item. */
2124
2167
  content: z$1.string(),
2125
2168
  /** UUID of the JSONL record */
2126
2169
  uuid: z$1.string().optional(),
@@ -2130,7 +2173,19 @@ const GetContextDetailResponseSchema = z$1.object({
2130
2173
  /** Category name echoed back for display */
2131
2174
  category: z$1.string(),
2132
2175
  /** Total number of matching items */
2133
- totalItems: z$1.number().int().nonnegative()
2176
+ totalItems: z$1.number().int().nonnegative(),
2177
+ /**
2178
+ * Subcategory breakdown for "Messages" when summaryOnly=true.
2179
+ * Each entry has a key, display label, and item count.
2180
+ */
2181
+ subcategories: z$1.array(z$1.object({
2182
+ /** Subcategory key: "user" | "system-reminder" | "assistant" */
2183
+ name: z$1.string(),
2184
+ /** Human-readable label */
2185
+ label: z$1.string(),
2186
+ /** Number of items in this subcategory */
2187
+ count: z$1.number().int().nonnegative()
2188
+ })).optional()
2134
2189
  }).strict();
2135
2190
  const GetMcpServersRequestSchema = z$1.object({}).strict();
2136
2191
  const GetMcpServersResponseSchema = z$1.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kmmao/happy-wire",
3
- "version": "0.18.0",
3
+ "version": "0.19.1",
4
4
  "description": "Shared message wire types and Zod schemas for Happy clients and services",
5
5
  "author": "kmmao",
6
6
  "license": "MIT",