@kawacode/mcp 6.9.4 → 7.0.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.
Files changed (106) hide show
  1. package/CLAUDE.md.example +23 -0
  2. package/README.md +88 -1
  3. package/build/index.js +20 -18
  4. package/build/index.js.map +1 -1
  5. package/build/prompts/intent-first-workflow.js +6 -8
  6. package/build/prompts/intent-first-workflow.js.map +1 -1
  7. package/build/services/muninn-ipc.js +6 -2
  8. package/build/services/muninn-ipc.js.map +1 -1
  9. package/build/tools/_mangled-args.d.ts +63 -0
  10. package/build/tools/_mangled-args.js +116 -0
  11. package/build/tools/_mangled-args.js.map +1 -0
  12. package/build/tools/_mangled-args.test.js +110 -0
  13. package/build/tools/_mangled-args.test.js.map +1 -0
  14. package/build/tools/activate-intent.d.ts +8 -52
  15. package/build/tools/activate-intent.js +26 -7
  16. package/build/tools/activate-intent.js.map +1 -1
  17. package/build/tools/arbiter-apply.d.ts +0 -52
  18. package/build/tools/arbiter-apply.js +0 -3
  19. package/build/tools/arbiter-apply.js.map +1 -1
  20. package/build/tools/arbiter-resolve.d.ts +0 -52
  21. package/build/tools/arbiter-resolve.js +0 -3
  22. package/build/tools/arbiter-resolve.js.map +1 -1
  23. package/build/tools/check-active-intent.d.ts +0 -52
  24. package/build/tools/check-active-intent.js +2 -24
  25. package/build/tools/check-active-intent.js.map +1 -1
  26. package/build/tools/complete-intent.d.ts +4 -56
  27. package/build/tools/complete-intent.js +15 -44
  28. package/build/tools/complete-intent.js.map +1 -1
  29. package/build/tools/create-intent.d.ts +0 -52
  30. package/build/tools/create-intent.js +0 -4
  31. package/build/tools/create-intent.js.map +1 -1
  32. package/build/tools/detect-intent-conflicts.d.ts +0 -52
  33. package/build/tools/detect-intent-conflicts.js +0 -3
  34. package/build/tools/detect-intent-conflicts.js.map +1 -1
  35. package/build/tools/edit-session-decision.d.ts +0 -52
  36. package/build/tools/edit-session-decision.js +0 -3
  37. package/build/tools/edit-session-decision.js.map +1 -1
  38. package/build/tools/get-decision-detail.d.ts +19 -55
  39. package/build/tools/get-decision-detail.js +12 -7
  40. package/build/tools/get-decision-detail.js.map +1 -1
  41. package/build/tools/get-intents-for-file.d.ts +35 -53
  42. package/build/tools/get-intents-for-file.js +61 -26
  43. package/build/tools/get-intents-for-file.js.map +1 -1
  44. package/build/tools/get-project-decisions.d.ts +0 -52
  45. package/build/tools/get-project-decisions.js +0 -3
  46. package/build/tools/get-project-decisions.js.map +1 -1
  47. package/build/tools/get-relevant-context.d.ts +0 -52
  48. package/build/tools/get-relevant-context.js +0 -3
  49. package/build/tools/get-relevant-context.js.map +1 -1
  50. package/build/tools/get-resolution-context.d.ts +0 -52
  51. package/build/tools/get-resolution-context.js +0 -4
  52. package/build/tools/get-resolution-context.js.map +1 -1
  53. package/build/tools/get-session-decisions.d.ts +10 -53
  54. package/build/tools/get-session-decisions.js +2 -4
  55. package/build/tools/get-session-decisions.js.map +1 -1
  56. package/build/tools/index.d.ts +11 -675
  57. package/build/tools/index.js +2 -11
  58. package/build/tools/index.js.map +1 -1
  59. package/build/tools/infer-history.js +5 -19
  60. package/build/tools/infer-history.js.map +1 -1
  61. package/build/tools/list-team-intents.d.ts +4 -56
  62. package/build/tools/list-team-intents.js +0 -3
  63. package/build/tools/list-team-intents.js.map +1 -1
  64. package/build/tools/log-work.d.ts +0 -52
  65. package/build/tools/log-work.js +0 -3
  66. package/build/tools/log-work.js.map +1 -1
  67. package/build/tools/pre-edit-acknowledge.d.ts +0 -52
  68. package/build/tools/pre-edit-acknowledge.js +0 -2
  69. package/build/tools/pre-edit-acknowledge.js.map +1 -1
  70. package/build/tools/pre-edit-decision-check.d.ts +0 -52
  71. package/build/tools/pre-edit-decision-check.js +0 -4
  72. package/build/tools/pre-edit-decision-check.js.map +1 -1
  73. package/build/tools/record-decision.d.ts +2 -52
  74. package/build/tools/record-decision.js +6 -5
  75. package/build/tools/record-decision.js.map +1 -1
  76. package/build/tools/resume-intent.d.ts +9 -60
  77. package/build/tools/resume-intent.js +40 -23
  78. package/build/tools/resume-intent.js.map +1 -1
  79. package/build/tools/update-intent.d.ts +0 -52
  80. package/build/tools/update-intent.js +1 -5
  81. package/build/tools/update-intent.js.map +1 -1
  82. package/build/types/refs.d.ts +73 -0
  83. package/build/types/refs.js +73 -0
  84. package/build/types/refs.js.map +1 -0
  85. package/package.json +1 -1
  86. package/build/tools/_fork-fields.d.ts +0 -84
  87. package/build/tools/_fork-fields.js +0 -65
  88. package/build/tools/_fork-fields.js.map +0 -1
  89. package/build/tools/_salvage-mangled-args.d.ts +0 -38
  90. package/build/tools/_salvage-mangled-args.js +0 -87
  91. package/build/tools/_salvage-mangled-args.js.map +0 -1
  92. package/build/tools/_salvage-mangled-args.test.js +0 -73
  93. package/build/tools/_salvage-mangled-args.test.js.map +0 -1
  94. package/build/tools/evolve-decisions.d.ts +0 -96
  95. package/build/tools/evolve-decisions.js +0 -42
  96. package/build/tools/evolve-decisions.js.map +0 -1
  97. package/build/tools/get-intent-changes.d.ts +0 -101
  98. package/build/tools/get-intent-changes.js +0 -61
  99. package/build/tools/get-intent-changes.js.map +0 -1
  100. package/build/tools/get-intents-for-lines.d.ts +0 -123
  101. package/build/tools/get-intents-for-lines.js +0 -67
  102. package/build/tools/get-intents-for-lines.js.map +0 -1
  103. package/build/tools/update-features.d.ts +0 -31
  104. package/build/tools/update-features.js +0 -51
  105. package/build/tools/update-features.js.map +0 -1
  106. /package/build/tools/{_salvage-mangled-args.test.d.ts → _mangled-args.test.d.ts} +0 -0
@@ -1,101 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const getIntentChangesSchema: z.ZodObject<{
3
- forkAuthor: z.ZodOptional<z.ZodObject<{
4
- platform: z.ZodEnum<["github", "gitlab"]>;
5
- user: z.ZodString;
6
- forkOrigin: z.ZodString;
7
- }, "strip", z.ZodTypeAny, {
8
- platform: "github" | "gitlab";
9
- user: string;
10
- forkOrigin: string;
11
- }, {
12
- platform: "github" | "gitlab";
13
- user: string;
14
- forkOrigin: string;
15
- }>>;
16
- workspaceId: z.ZodOptional<z.ZodString>;
17
- repoOrigin: z.ZodOptional<z.ZodString>;
18
- repoPath: z.ZodString;
19
- }, "strip", z.ZodTypeAny, {
20
- repoPath: string;
21
- repoOrigin?: string | undefined;
22
- forkAuthor?: {
23
- platform: "github" | "gitlab";
24
- user: string;
25
- forkOrigin: string;
26
- } | undefined;
27
- workspaceId?: string | undefined;
28
- }, {
29
- repoPath: string;
30
- repoOrigin?: string | undefined;
31
- forkAuthor?: {
32
- platform: "github" | "gitlab";
33
- user: string;
34
- forkOrigin: string;
35
- } | undefined;
36
- workspaceId?: string | undefined;
37
- }>;
38
- export type GetIntentChangesInput = z.infer<typeof getIntentChangesSchema>;
39
- export interface FileChange {
40
- filePath: string;
41
- status: 'modified' | 'added' | 'deleted' | 'renamed';
42
- staged: boolean;
43
- }
44
- export interface IntentChangesResponse {
45
- hasActiveIntent: boolean;
46
- intent?: {
47
- id: string;
48
- title: string;
49
- description: string;
50
- status: string;
51
- createdAt?: string;
52
- };
53
- changes: {
54
- modified: FileChange[];
55
- untracked: string[];
56
- totalFiles: number;
57
- };
58
- warnings: string[];
59
- }
60
- export declare function getIntentChanges(input: GetIntentChangesInput): Promise<IntentChangesResponse>;
61
- export declare const getIntentChangesTool: {
62
- name: string;
63
- description: string;
64
- inputSchema: z.ZodObject<{
65
- forkAuthor: z.ZodOptional<z.ZodObject<{
66
- platform: z.ZodEnum<["github", "gitlab"]>;
67
- user: z.ZodString;
68
- forkOrigin: z.ZodString;
69
- }, "strip", z.ZodTypeAny, {
70
- platform: "github" | "gitlab";
71
- user: string;
72
- forkOrigin: string;
73
- }, {
74
- platform: "github" | "gitlab";
75
- user: string;
76
- forkOrigin: string;
77
- }>>;
78
- workspaceId: z.ZodOptional<z.ZodString>;
79
- repoOrigin: z.ZodOptional<z.ZodString>;
80
- repoPath: z.ZodString;
81
- }, "strip", z.ZodTypeAny, {
82
- repoPath: string;
83
- repoOrigin?: string | undefined;
84
- forkAuthor?: {
85
- platform: "github" | "gitlab";
86
- user: string;
87
- forkOrigin: string;
88
- } | undefined;
89
- workspaceId?: string | undefined;
90
- }, {
91
- repoPath: string;
92
- repoOrigin?: string | undefined;
93
- forkAuthor?: {
94
- platform: "github" | "gitlab";
95
- user: string;
96
- forkOrigin: string;
97
- } | undefined;
98
- workspaceId?: string | undefined;
99
- }>;
100
- handler: typeof getIntentChanges;
101
- };
@@ -1,61 +0,0 @@
1
- import { z } from 'zod';
2
- import { request } from '../services/muninn-ipc.js';
3
- import { resolveOrigin } from './resolve-origin.js';
4
- import { forkFieldsExtensions, extractForkFields } from './_fork-fields.js';
5
- export const getIntentChangesSchema = z.object({
6
- repoOrigin: z.string().optional().describe('Git remote origin URL. Auto-detected from repoPath via git if not provided.'),
7
- repoPath: z.string().describe('Local path to the repository root'),
8
- ...forkFieldsExtensions,
9
- });
10
- export async function getIntentChanges(input) {
11
- const actualOrigin = resolveOrigin(input.repoOrigin, input.repoPath);
12
- const res = await request('intent', 'get-changes', {
13
- repoOrigin: actualOrigin,
14
- repoPath: input.repoPath,
15
- ...extractForkFields(input),
16
- });
17
- const modified = (res.changes?.modified || res.modified || []).map((f) => ({
18
- filePath: f.filePath || f,
19
- status: f.status || 'modified',
20
- staged: f.staged || false,
21
- }));
22
- const untracked = res.changes?.untracked || res.untracked || [];
23
- const warnings = res.warnings || [];
24
- const hasActiveIntent = res.hasActiveIntent !== undefined
25
- ? res.hasActiveIntent
26
- : !!res.intent;
27
- if (!hasActiveIntent && (modified.length > 0 || untracked.length > 0)) {
28
- warnings.push('Changes detected but no active intent. Consider creating an intent first.');
29
- }
30
- return {
31
- hasActiveIntent,
32
- intent: res.intent ? {
33
- id: res.intent.id || res.intent._id || '',
34
- title: res.intent.title || '',
35
- description: res.intent.description || '',
36
- status: res.intent.status || 'active',
37
- createdAt: res.intent.created_at || res.intent.createdAt
38
- } : undefined,
39
- changes: {
40
- modified,
41
- untracked,
42
- totalFiles: modified.length + untracked.length
43
- },
44
- warnings
45
- };
46
- }
47
- export const getIntentChangesTool = {
48
- name: 'get_intent_changes',
49
- description: `Get uncommitted changes in the repository along with the active intent info.
50
-
51
- Use this tool before prompting the user about committing to show:
52
- - The active intent title and description
53
- - Number of modified, added, and untracked files
54
- - Any warnings (e.g., pre-existing changes from before intent activation)
55
-
56
- This helps you construct an informative commit prompt like:
57
- "You have uncommitted work on '[intent title]' (N files changed)..."`,
58
- inputSchema: getIntentChangesSchema,
59
- handler: getIntentChanges
60
- };
61
- //# sourceMappingURL=get-intent-changes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-intent-changes.js","sourceRoot":"","sources":["../../src/tools/get-intent-changes.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const getIntentsForLinesSchema: z.ZodObject<{
3
- forkAuthor: z.ZodOptional<z.ZodObject<{
4
- platform: z.ZodEnum<["github", "gitlab"]>;
5
- user: z.ZodString;
6
- forkOrigin: z.ZodString;
7
- }, "strip", z.ZodTypeAny, {
8
- platform: "github" | "gitlab";
9
- user: string;
10
- forkOrigin: string;
11
- }, {
12
- platform: "github" | "gitlab";
13
- user: string;
14
- forkOrigin: string;
15
- }>>;
16
- workspaceId: z.ZodOptional<z.ZodString>;
17
- repoOrigin: z.ZodOptional<z.ZodString>;
18
- repoPath: z.ZodString;
19
- filePath: z.ZodString;
20
- startLine: z.ZodNumber;
21
- endLine: z.ZodNumber;
22
- }, "strip", z.ZodTypeAny, {
23
- repoPath: string;
24
- filePath: string;
25
- startLine: number;
26
- endLine: number;
27
- repoOrigin?: string | undefined;
28
- forkAuthor?: {
29
- platform: "github" | "gitlab";
30
- user: string;
31
- forkOrigin: string;
32
- } | undefined;
33
- workspaceId?: string | undefined;
34
- }, {
35
- repoPath: string;
36
- filePath: string;
37
- startLine: number;
38
- endLine: number;
39
- repoOrigin?: string | undefined;
40
- forkAuthor?: {
41
- platform: "github" | "gitlab";
42
- user: string;
43
- forkOrigin: string;
44
- } | undefined;
45
- workspaceId?: string | undefined;
46
- }>;
47
- export type GetIntentsForLinesInput = z.infer<typeof getIntentsForLinesSchema>;
48
- export interface LineRangeIntent {
49
- intentId: string;
50
- title: string;
51
- author?: string;
52
- status: string;
53
- description: string;
54
- branch: string;
55
- forkedFrom?: string;
56
- overlappingLines: {
57
- blockStartLine: number;
58
- blockEndLine: number;
59
- overlapStart: number;
60
- overlapEnd: number;
61
- };
62
- }
63
- export interface GetIntentsForLinesResponse {
64
- filePath: string;
65
- queryRange: {
66
- startLine: number;
67
- endLine: number;
68
- };
69
- intents: LineRangeIntent[];
70
- hasOverlap: boolean;
71
- warning?: string;
72
- }
73
- export declare function getIntentsForLines(input: GetIntentsForLinesInput): Promise<GetIntentsForLinesResponse>;
74
- export declare const getIntentsForLinesTool: {
75
- name: string;
76
- description: string;
77
- inputSchema: z.ZodObject<{
78
- forkAuthor: z.ZodOptional<z.ZodObject<{
79
- platform: z.ZodEnum<["github", "gitlab"]>;
80
- user: z.ZodString;
81
- forkOrigin: z.ZodString;
82
- }, "strip", z.ZodTypeAny, {
83
- platform: "github" | "gitlab";
84
- user: string;
85
- forkOrigin: string;
86
- }, {
87
- platform: "github" | "gitlab";
88
- user: string;
89
- forkOrigin: string;
90
- }>>;
91
- workspaceId: z.ZodOptional<z.ZodString>;
92
- repoOrigin: z.ZodOptional<z.ZodString>;
93
- repoPath: z.ZodString;
94
- filePath: z.ZodString;
95
- startLine: z.ZodNumber;
96
- endLine: z.ZodNumber;
97
- }, "strip", z.ZodTypeAny, {
98
- repoPath: string;
99
- filePath: string;
100
- startLine: number;
101
- endLine: number;
102
- repoOrigin?: string | undefined;
103
- forkAuthor?: {
104
- platform: "github" | "gitlab";
105
- user: string;
106
- forkOrigin: string;
107
- } | undefined;
108
- workspaceId?: string | undefined;
109
- }, {
110
- repoPath: string;
111
- filePath: string;
112
- startLine: number;
113
- endLine: number;
114
- repoOrigin?: string | undefined;
115
- forkAuthor?: {
116
- platform: "github" | "gitlab";
117
- user: string;
118
- forkOrigin: string;
119
- } | undefined;
120
- workspaceId?: string | undefined;
121
- }>;
122
- handler: typeof getIntentsForLines;
123
- };
@@ -1,67 +0,0 @@
1
- import { z } from 'zod';
2
- import { request } from '../services/muninn-ipc.js';
3
- import { resolveOrigin } from './resolve-origin.js';
4
- import { forkFieldsExtensions, extractForkFields } from './_fork-fields.js';
5
- export const getIntentsForLinesSchema = z.object({
6
- repoOrigin: z.string().optional().describe('Git remote origin URL. Auto-detected from repoPath via git if not provided.'),
7
- repoPath: z.string().describe('Local path to the repository root'),
8
- filePath: z.string().describe('Path to the file (relative to repo root)'),
9
- startLine: z.number().min(1).describe('Start line number (1-based)'),
10
- endLine: z.number().min(1).describe('End line number (1-based, inclusive)'),
11
- ...forkFieldsExtensions,
12
- });
13
- export async function getIntentsForLines(input) {
14
- const actualOrigin = resolveOrigin(input.repoOrigin, input.repoPath);
15
- const res = await request('intent-block', 'get-for-lines', {
16
- repoOrigin: actualOrigin,
17
- filePath: input.filePath,
18
- startLine: input.startLine,
19
- endLine: input.endLine,
20
- ...extractForkFields(input),
21
- });
22
- const overlappingIntents = (res.intents || []).map((intent) => ({
23
- intentId: intent.intentId || intent.id || '',
24
- title: intent.title || 'Unknown Intent',
25
- author: intent.author || intent.author_name || intent.authorName,
26
- status: intent.status || 'active',
27
- description: intent.description || '',
28
- branch: intent.branch || '',
29
- forkedFrom: intent.forked_from || intent.forkedFrom,
30
- overlappingLines: {
31
- blockStartLine: intent.block_start_line || intent.overlappingLines?.blockStartLine || 0,
32
- blockEndLine: intent.block_end_line || intent.overlappingLines?.blockEndLine || 0,
33
- overlapStart: intent.overlap_start || intent.overlappingLines?.overlapStart || 0,
34
- overlapEnd: intent.overlap_end || intent.overlappingLines?.overlapEnd || 0,
35
- }
36
- }));
37
- const hasOverlap = overlappingIntents.length > 0;
38
- let warning;
39
- if (hasOverlap) {
40
- const activeIntents = overlappingIntents.filter(i => i.status === 'active');
41
- if (activeIntents.length > 0) {
42
- const authors = [...new Set(activeIntents.map(i => i.author).filter(Boolean))];
43
- warning = `Lines ${input.startLine}-${input.endLine} overlap with active work by: ${authors.join(', ') || 'team members'}`;
44
- }
45
- }
46
- return {
47
- filePath: input.filePath,
48
- queryRange: { startLine: input.startLine, endLine: input.endLine },
49
- intents: overlappingIntents,
50
- hasOverlap,
51
- warning
52
- };
53
- }
54
- export const getIntentsForLinesTool = {
55
- name: 'get_intents_for_lines',
56
- description: `Get intents covering a specific line range.
57
-
58
- Use this before modifying specific lines to check for conflicts:
59
- - Warns if the lines overlap with another team member's active intent
60
- - Shows the exact overlap range
61
- - Helps avoid merge conflicts and duplicate work
62
-
63
- Returns overlap details so you can work around or coordinate with team members.`,
64
- inputSchema: getIntentsForLinesSchema,
65
- handler: getIntentsForLines
66
- };
67
- //# sourceMappingURL=get-intents-for-lines.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-intents-for-lines.js","sourceRoot":"","sources":["../../src/tools/get-intents-for-lines.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const updateFeaturesSchema: z.ZodObject<{
3
- repoPath: z.ZodString;
4
- }, "strip", z.ZodTypeAny, {
5
- repoPath: string;
6
- }, {
7
- repoPath: string;
8
- }>;
9
- export type UpdateFeaturesInput = z.infer<typeof updateFeaturesSchema>;
10
- export interface UpdateFeaturesResponse {
11
- success: boolean;
12
- count?: number;
13
- driftSpinoffs?: number;
14
- forcedFallback?: number;
15
- origin?: string;
16
- error?: string;
17
- message: string;
18
- }
19
- export declare function updateFeatures(input: UpdateFeaturesInput): Promise<UpdateFeaturesResponse>;
20
- export declare const updateFeaturesTool: {
21
- name: string;
22
- description: string;
23
- inputSchema: z.ZodObject<{
24
- repoPath: z.ZodString;
25
- }, "strip", z.ZodTypeAny, {
26
- repoPath: string;
27
- }, {
28
- repoPath: string;
29
- }>;
30
- handler: typeof updateFeatures;
31
- };
@@ -1,51 +0,0 @@
1
- import { z } from 'zod';
2
- import { request } from '../services/muninn-ipc.js';
3
- export const updateFeaturesSchema = z.object({
4
- repoPath: z.string().describe('Local path to the repository root'),
5
- });
6
- export async function updateFeatures(input) {
7
- // An extend is a single model call over the full feature catalog plus the
8
- // unassigned intents, so it can take tens of seconds on a large catalog —
9
- // use a generous timeout like the synchronous infer_history estimate path.
10
- const UPDATE_TIMEOUT_MS = 180_000;
11
- const res = await request('feature', 'update', { repoPath: input.repoPath }, UPDATE_TIMEOUT_MS);
12
- if (res && res.success === false) {
13
- const error = res.error ?? 'unknown error';
14
- return { success: false, error, message: `Feature update failed: ${error}` };
15
- }
16
- const count = res?.count ?? 0;
17
- const driftSpinoffs = res?.driftSpinoffs ?? 0;
18
- const forcedFallback = res?.forcedFallback ?? 0;
19
- const notes = [];
20
- if (driftSpinoffs)
21
- notes.push(`${driftSpinoffs} drift spin-off${driftSpinoffs === 1 ? '' : 's'}`);
22
- if (forcedFallback)
23
- notes.push(`${forcedFallback} unsorted`);
24
- const suffix = notes.length ? ` (${notes.join(', ')})` : '';
25
- return {
26
- success: true,
27
- count,
28
- driftSpinoffs,
29
- forcedFallback,
30
- origin: res?.origin,
31
- message: `Feature catalog updated: ${count} feature${count === 1 ? '' : 's'}${suffix}.`,
32
- };
33
- }
34
- export const updateFeaturesTool = {
35
- name: 'update_features',
36
- description: `Update the project's feature catalog from its recorded intents.
37
-
38
- Additively groups any intents that are not yet assigned to a feature into the running catalog (an incremental "extend"), without disturbing existing features. The feature catalog is the high-level "what does this project actually do?" view, derived from the repo's intents.
39
-
40
- When to use:
41
- - After recording or completing intents, to keep the feature list current.
42
- - On demand, when you want the catalog refreshed with recent work.
43
-
44
- Behavior:
45
- - Additive only — never deletes or re-derives existing features.
46
- - Intents already assigned to a feature are skipped; only unassigned ones are processed.
47
- - Runs in the Kawa Code desktop app and returns the resulting feature count.`,
48
- inputSchema: updateFeaturesSchema,
49
- handler: updateFeatures,
50
- };
51
- //# sourceMappingURL=update-features.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-features.js","sourceRoot":"","sources":["../../src/tools/update-features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACnE,CAAC,CAAA;AAcF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAC7D,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,iBAAiB,GAAG,OAAO,CAAA;IACjC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAA;IAE/F,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,eAAe,CAAA;QAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,KAAK,EAAE,EAAE,CAAA;IAC9E,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAA;IAC7B,MAAM,aAAa,GAAG,GAAG,EAAE,aAAa,IAAI,CAAC,CAAA;IAC7C,MAAM,cAAc,GAAG,GAAG,EAAE,cAAc,IAAI,CAAC,CAAA;IAE/C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,kBAAkB,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IACjG,IAAI,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,WAAW,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3D,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK;QACL,aAAa;QACb,cAAc;QACd,MAAM,EAAE,GAAG,EAAE,MAAM;QACnB,OAAO,EAAE,4BAA4B,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG;KACxF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE;;;;;;;;;;;6EAW8D;IAC3E,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,cAAc;CACxB,CAAA"}