@kawacode/mcp 5.0.0

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 (88) hide show
  1. package/CLAUDE.md.example +80 -0
  2. package/LICENSE +35 -0
  3. package/README.md +322 -0
  4. package/build/index.d.ts +2 -0
  5. package/build/index.js +231 -0
  6. package/build/index.js.map +1 -0
  7. package/build/prompts/intent-first-workflow.d.ts +24 -0
  8. package/build/prompts/intent-first-workflow.js +204 -0
  9. package/build/prompts/intent-first-workflow.js.map +1 -0
  10. package/build/resources/active-intent.d.ts +9 -0
  11. package/build/resources/active-intent.js +52 -0
  12. package/build/resources/active-intent.js.map +1 -0
  13. package/build/services/active-intent-store.d.ts +36 -0
  14. package/build/services/active-intent-store.js +45 -0
  15. package/build/services/active-intent-store.js.map +1 -0
  16. package/build/services/kawa-api.d.ts +131 -0
  17. package/build/services/kawa-api.js +239 -0
  18. package/build/services/kawa-api.js.map +1 -0
  19. package/build/services/muninn-ipc.d.ts +45 -0
  20. package/build/services/muninn-ipc.js +275 -0
  21. package/build/services/muninn-ipc.js.map +1 -0
  22. package/build/services/repo-encryption.d.ts +46 -0
  23. package/build/services/repo-encryption.js +92 -0
  24. package/build/services/repo-encryption.js.map +1 -0
  25. package/build/services/storage-decryption.d.ts +52 -0
  26. package/build/services/storage-decryption.js +162 -0
  27. package/build/services/storage-decryption.js.map +1 -0
  28. package/build/tools/assign-blocks.d.ts +87 -0
  29. package/build/tools/assign-blocks.js +49 -0
  30. package/build/tools/assign-blocks.js.map +1 -0
  31. package/build/tools/check-active-intent.d.ts +50 -0
  32. package/build/tools/check-active-intent.js +48 -0
  33. package/build/tools/check-active-intent.js.map +1 -0
  34. package/build/tools/complete-intent.d.ts +48 -0
  35. package/build/tools/complete-intent.js +53 -0
  36. package/build/tools/complete-intent.js.map +1 -0
  37. package/build/tools/create-intent.d.ts +58 -0
  38. package/build/tools/create-intent.js +49 -0
  39. package/build/tools/create-intent.js.map +1 -0
  40. package/build/tools/detect-intent-conflicts.d.ts +361 -0
  41. package/build/tools/detect-intent-conflicts.js +91 -0
  42. package/build/tools/detect-intent-conflicts.js.map +1 -0
  43. package/build/tools/edit-session-decision.d.ts +201 -0
  44. package/build/tools/edit-session-decision.js +50 -0
  45. package/build/tools/edit-session-decision.js.map +1 -0
  46. package/build/tools/evolve-decisions.d.ts +50 -0
  47. package/build/tools/evolve-decisions.js +45 -0
  48. package/build/tools/evolve-decisions.js.map +1 -0
  49. package/build/tools/get-intent-changes.d.ts +49 -0
  50. package/build/tools/get-intent-changes.js +58 -0
  51. package/build/tools/get-intent-changes.js.map +1 -0
  52. package/build/tools/get-intents-for-file.d.ts +57 -0
  53. package/build/tools/get-intents-for-file.js +57 -0
  54. package/build/tools/get-intents-for-file.js.map +1 -0
  55. package/build/tools/get-intents-for-lines.d.ts +71 -0
  56. package/build/tools/get-intents-for-lines.js +64 -0
  57. package/build/tools/get-intents-for-lines.js.map +1 -0
  58. package/build/tools/get-project-context.d.ts +82 -0
  59. package/build/tools/get-project-context.js +73 -0
  60. package/build/tools/get-project-context.js.map +1 -0
  61. package/build/tools/get-project-decisions.d.ts +51 -0
  62. package/build/tools/get-project-decisions.js +56 -0
  63. package/build/tools/get-project-decisions.js.map +1 -0
  64. package/build/tools/get-relevant-context.d.ts +89 -0
  65. package/build/tools/get-relevant-context.js +104 -0
  66. package/build/tools/get-relevant-context.js.map +1 -0
  67. package/build/tools/get-session-decisions.d.ts +57 -0
  68. package/build/tools/get-session-decisions.js +48 -0
  69. package/build/tools/get-session-decisions.js.map +1 -0
  70. package/build/tools/index.d.ts +656 -0
  71. package/build/tools/index.js +57 -0
  72. package/build/tools/index.js.map +1 -0
  73. package/build/tools/infer-history.d.ts +85 -0
  74. package/build/tools/infer-history.js +69 -0
  75. package/build/tools/infer-history.js.map +1 -0
  76. package/build/tools/list-team-intents.d.ts +51 -0
  77. package/build/tools/list-team-intents.js +57 -0
  78. package/build/tools/list-team-intents.js.map +1 -0
  79. package/build/tools/log-work.d.ts +45 -0
  80. package/build/tools/log-work.js +30 -0
  81. package/build/tools/log-work.js.map +1 -0
  82. package/build/tools/record-decision.d.ts +132 -0
  83. package/build/tools/record-decision.js +66 -0
  84. package/build/tools/record-decision.js.map +1 -0
  85. package/build/tools/resolve-origin.d.ts +13 -0
  86. package/build/tools/resolve-origin.js +33 -0
  87. package/build/tools/resolve-origin.js.map +1 -0
  88. package/package.json +36 -0
@@ -0,0 +1,201 @@
1
+ import { z } from 'zod';
2
+ export declare const editSessionDecisionSchema: z.ZodObject<{
3
+ repoOrigin: z.ZodOptional<z.ZodString>;
4
+ repoPath: z.ZodString;
5
+ intentId: z.ZodString;
6
+ decisionId: z.ZodString;
7
+ action: z.ZodEnum<["update", "delete"]>;
8
+ updates: z.ZodOptional<z.ZodObject<{
9
+ summary: z.ZodOptional<z.ZodString>;
10
+ rationale: z.ZodOptional<z.ZodString>;
11
+ context: z.ZodOptional<z.ZodString>;
12
+ consequences: z.ZodOptional<z.ZodString>;
13
+ alternatives: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
+ relatedFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ constraintsChecked: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16
+ constraintViolations: z.ZodOptional<z.ZodArray<z.ZodObject<{
17
+ alternative: z.ZodString;
18
+ constraint: z.ZodString;
19
+ reason: z.ZodString;
20
+ }, "strip", z.ZodTypeAny, {
21
+ alternative: string;
22
+ constraint: string;
23
+ reason: string;
24
+ }, {
25
+ alternative: string;
26
+ constraint: string;
27
+ reason: string;
28
+ }>, "many">>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ context?: string | undefined;
31
+ summary?: string | undefined;
32
+ rationale?: string | undefined;
33
+ alternatives?: string[] | undefined;
34
+ consequences?: string | undefined;
35
+ relatedFiles?: string[] | undefined;
36
+ constraintsChecked?: string[] | undefined;
37
+ constraintViolations?: {
38
+ alternative: string;
39
+ constraint: string;
40
+ reason: string;
41
+ }[] | undefined;
42
+ }, {
43
+ context?: string | undefined;
44
+ summary?: string | undefined;
45
+ rationale?: string | undefined;
46
+ alternatives?: string[] | undefined;
47
+ consequences?: string | undefined;
48
+ relatedFiles?: string[] | undefined;
49
+ constraintsChecked?: string[] | undefined;
50
+ constraintViolations?: {
51
+ alternative: string;
52
+ constraint: string;
53
+ reason: string;
54
+ }[] | undefined;
55
+ }>>;
56
+ }, "strip", z.ZodTypeAny, {
57
+ repoPath: string;
58
+ intentId: string;
59
+ decisionId: string;
60
+ action: "update" | "delete";
61
+ repoOrigin?: string | undefined;
62
+ updates?: {
63
+ context?: string | undefined;
64
+ summary?: string | undefined;
65
+ rationale?: string | undefined;
66
+ alternatives?: string[] | undefined;
67
+ consequences?: string | undefined;
68
+ relatedFiles?: string[] | undefined;
69
+ constraintsChecked?: string[] | undefined;
70
+ constraintViolations?: {
71
+ alternative: string;
72
+ constraint: string;
73
+ reason: string;
74
+ }[] | undefined;
75
+ } | undefined;
76
+ }, {
77
+ repoPath: string;
78
+ intentId: string;
79
+ decisionId: string;
80
+ action: "update" | "delete";
81
+ repoOrigin?: string | undefined;
82
+ updates?: {
83
+ context?: string | undefined;
84
+ summary?: string | undefined;
85
+ rationale?: string | undefined;
86
+ alternatives?: string[] | undefined;
87
+ consequences?: string | undefined;
88
+ relatedFiles?: string[] | undefined;
89
+ constraintsChecked?: string[] | undefined;
90
+ constraintViolations?: {
91
+ alternative: string;
92
+ constraint: string;
93
+ reason: string;
94
+ }[] | undefined;
95
+ } | undefined;
96
+ }>;
97
+ export type EditSessionDecisionInput = z.infer<typeof editSessionDecisionSchema>;
98
+ export interface EditSessionDecisionResponse {
99
+ success: boolean;
100
+ }
101
+ export declare function editSessionDecision(input: EditSessionDecisionInput): Promise<EditSessionDecisionResponse>;
102
+ export declare const editSessionDecisionTool: {
103
+ name: string;
104
+ description: string;
105
+ inputSchema: z.ZodObject<{
106
+ repoOrigin: z.ZodOptional<z.ZodString>;
107
+ repoPath: z.ZodString;
108
+ intentId: z.ZodString;
109
+ decisionId: z.ZodString;
110
+ action: z.ZodEnum<["update", "delete"]>;
111
+ updates: z.ZodOptional<z.ZodObject<{
112
+ summary: z.ZodOptional<z.ZodString>;
113
+ rationale: z.ZodOptional<z.ZodString>;
114
+ context: z.ZodOptional<z.ZodString>;
115
+ consequences: z.ZodOptional<z.ZodString>;
116
+ alternatives: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
117
+ relatedFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
118
+ constraintsChecked: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
119
+ constraintViolations: z.ZodOptional<z.ZodArray<z.ZodObject<{
120
+ alternative: z.ZodString;
121
+ constraint: z.ZodString;
122
+ reason: z.ZodString;
123
+ }, "strip", z.ZodTypeAny, {
124
+ alternative: string;
125
+ constraint: string;
126
+ reason: string;
127
+ }, {
128
+ alternative: string;
129
+ constraint: string;
130
+ reason: string;
131
+ }>, "many">>;
132
+ }, "strip", z.ZodTypeAny, {
133
+ context?: string | undefined;
134
+ summary?: string | undefined;
135
+ rationale?: string | undefined;
136
+ alternatives?: string[] | undefined;
137
+ consequences?: string | undefined;
138
+ relatedFiles?: string[] | undefined;
139
+ constraintsChecked?: string[] | undefined;
140
+ constraintViolations?: {
141
+ alternative: string;
142
+ constraint: string;
143
+ reason: string;
144
+ }[] | undefined;
145
+ }, {
146
+ context?: string | undefined;
147
+ summary?: string | undefined;
148
+ rationale?: string | undefined;
149
+ alternatives?: string[] | undefined;
150
+ consequences?: string | undefined;
151
+ relatedFiles?: string[] | undefined;
152
+ constraintsChecked?: string[] | undefined;
153
+ constraintViolations?: {
154
+ alternative: string;
155
+ constraint: string;
156
+ reason: string;
157
+ }[] | undefined;
158
+ }>>;
159
+ }, "strip", z.ZodTypeAny, {
160
+ repoPath: string;
161
+ intentId: string;
162
+ decisionId: string;
163
+ action: "update" | "delete";
164
+ repoOrigin?: string | undefined;
165
+ updates?: {
166
+ context?: string | undefined;
167
+ summary?: string | undefined;
168
+ rationale?: string | undefined;
169
+ alternatives?: string[] | undefined;
170
+ consequences?: string | undefined;
171
+ relatedFiles?: string[] | undefined;
172
+ constraintsChecked?: string[] | undefined;
173
+ constraintViolations?: {
174
+ alternative: string;
175
+ constraint: string;
176
+ reason: string;
177
+ }[] | undefined;
178
+ } | undefined;
179
+ }, {
180
+ repoPath: string;
181
+ intentId: string;
182
+ decisionId: string;
183
+ action: "update" | "delete";
184
+ repoOrigin?: string | undefined;
185
+ updates?: {
186
+ context?: string | undefined;
187
+ summary?: string | undefined;
188
+ rationale?: string | undefined;
189
+ alternatives?: string[] | undefined;
190
+ consequences?: string | undefined;
191
+ relatedFiles?: string[] | undefined;
192
+ constraintsChecked?: string[] | undefined;
193
+ constraintViolations?: {
194
+ alternative: string;
195
+ constraint: string;
196
+ reason: string;
197
+ }[] | undefined;
198
+ } | undefined;
199
+ }>;
200
+ handler: typeof editSessionDecision;
201
+ };
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import { request } from '../services/muninn-ipc.js';
3
+ import { resolveOrigin } from './resolve-origin.js';
4
+ const constraintViolationSchema = z.object({
5
+ alternative: z.string(),
6
+ constraint: z.string(),
7
+ reason: z.string()
8
+ });
9
+ const decisionUpdatesSchema = z.object({
10
+ summary: z.string().optional(),
11
+ rationale: z.string().optional(),
12
+ context: z.string().optional(),
13
+ consequences: z.string().optional(),
14
+ alternatives: z.array(z.string()).optional(),
15
+ relatedFiles: z.array(z.string()).optional(),
16
+ constraintsChecked: z.array(z.string()).optional(),
17
+ constraintViolations: z.array(constraintViolationSchema).optional()
18
+ });
19
+ export const editSessionDecisionSchema = z.object({
20
+ repoOrigin: z.string().optional().describe('Git remote origin URL. Auto-detected from repoPath via git if not provided.'),
21
+ repoPath: z.string().describe('Local path to the repository root'),
22
+ intentId: z.string().describe('The intent ID the decision belongs to'),
23
+ decisionId: z.string().describe('The decision ID to edit or delete'),
24
+ action: z.enum(['update', 'delete']).describe('Action to perform: update modifies the decision, delete removes it'),
25
+ updates: decisionUpdatesSchema.optional().describe('Partial fields to update (only for action=update)')
26
+ });
27
+ export async function editSessionDecision(input) {
28
+ const actualOrigin = resolveOrigin(input.repoOrigin, input.repoPath);
29
+ const res = await request('decision', 'edit', {
30
+ repoOrigin: actualOrigin,
31
+ intentId: input.intentId,
32
+ decisionId: input.decisionId,
33
+ action: input.action,
34
+ updates: input.updates,
35
+ });
36
+ return { success: res.success !== false };
37
+ }
38
+ export const editSessionDecisionTool = {
39
+ name: 'edit_session_decision',
40
+ description: `Edit or delete a decision in the current session.
41
+
42
+ Use this when reviewing decisions before commit:
43
+ - action: "update" - Modify the decision fields
44
+ - action: "delete" - Remove the decision entirely
45
+
46
+ This allows users to curate their decision history before it's persisted.`,
47
+ inputSchema: editSessionDecisionSchema,
48
+ handler: editSessionDecision
49
+ };
50
+ //# sourceMappingURL=edit-session-decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-session-decision.js","sourceRoot":"","sources":["../../src/tools/edit-session-decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE;CACpE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACzH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACpE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IACnH,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACxG,CAAC,CAAA;AAQF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAA+B;IACvE,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IACpE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;QAC5C,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAA;IAEF,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE;;;;;;0EAM2D;IACxE,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,mBAAmB;CAC7B,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ export declare const evolveDecisionsSchema: z.ZodObject<{
3
+ stories: z.ZodArray<z.ZodAny, "many">;
4
+ apiKey: z.ZodString;
5
+ model: z.ZodDefault<z.ZodOptional<z.ZodString>>;
6
+ repoPath: z.ZodOptional<z.ZodString>;
7
+ repoOrigin: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ apiKey: string;
10
+ model: string;
11
+ stories: any[];
12
+ repoOrigin?: string | undefined;
13
+ repoPath?: string | undefined;
14
+ }, {
15
+ apiKey: string;
16
+ stories: any[];
17
+ repoOrigin?: string | undefined;
18
+ repoPath?: string | undefined;
19
+ model?: string | undefined;
20
+ }>;
21
+ export type EvolveDecisionsInput = z.infer<typeof evolveDecisionsSchema>;
22
+ export interface EvolveDecisionsResponse {
23
+ started: boolean;
24
+ message: string;
25
+ }
26
+ export declare function evolveDecisions(input: EvolveDecisionsInput): Promise<EvolveDecisionsResponse>;
27
+ export declare const evolveDecisionsTool: {
28
+ name: string;
29
+ description: string;
30
+ inputSchema: z.ZodObject<{
31
+ stories: z.ZodArray<z.ZodAny, "many">;
32
+ apiKey: z.ZodString;
33
+ model: z.ZodDefault<z.ZodOptional<z.ZodString>>;
34
+ repoPath: z.ZodOptional<z.ZodString>;
35
+ repoOrigin: z.ZodOptional<z.ZodString>;
36
+ }, "strip", z.ZodTypeAny, {
37
+ apiKey: string;
38
+ model: string;
39
+ stories: any[];
40
+ repoOrigin?: string | undefined;
41
+ repoPath?: string | undefined;
42
+ }, {
43
+ apiKey: string;
44
+ stories: any[];
45
+ repoOrigin?: string | undefined;
46
+ repoPath?: string | undefined;
47
+ model?: string | undefined;
48
+ }>;
49
+ handler: typeof evolveDecisions;
50
+ };
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ import { request } from '../services/muninn-ipc.js';
3
+ export const evolveDecisionsSchema = z.object({
4
+ stories: z.array(z.any()).describe('Array of story objects from a previous infer_history run'),
5
+ apiKey: z.string().describe('Anthropic API key for LLM calls (customer\'s own key)'),
6
+ model: z.string().optional().default('claude-haiku-4-5-20251001').describe('Anthropic model for edge classification (default: claude-haiku-4-5-20251001, cheaper model recommended)'),
7
+ repoPath: z.string().optional().describe('Local path to the repository root (required for auto-persist after evolution)'),
8
+ repoOrigin: z.string().optional().describe('Git remote origin URL (auto-detected from repoPath if not provided)'),
9
+ });
10
+ export async function evolveDecisions(input) {
11
+ const res = await request('inference', 'evolve', {
12
+ stories: input.stories,
13
+ apiKey: input.apiKey,
14
+ model: input.model,
15
+ repoPath: input.repoPath,
16
+ repoOrigin: input.repoOrigin,
17
+ });
18
+ return {
19
+ started: res.started,
20
+ message: res.message || 'Evolution pipeline started. Progress updates will be sent as the pipeline runs.'
21
+ };
22
+ }
23
+ export const evolveDecisionsTool = {
24
+ name: 'evolve_decisions',
25
+ description: `Build a decision evolution graph from previously extracted stories.
26
+
27
+ This analyzes how decisions relate across stories over time:
28
+ 1. **Bucketing**: Groups stories by file overlap and keyword similarity (Union-Find)
29
+ 2. **Edge classification**: Uses LLM to identify relationships between decisions in each bucket:
30
+ - supersedes: Later decision replaces earlier (earlier is outdated)
31
+ - reinforces: Later decision confirms earlier still holds
32
+ - contradicts: Later decision reverses earlier
33
+ - specializes: Later decision adds specificity (both remain valid)
34
+ 3. **Annotation**: Labels each decision as stable, orphan, evolved, or abandoned
35
+ 4. **Curation**: Keeps stable + orphan decisions, drops evolved + abandoned
36
+
37
+ Note: \`infer_history\` already chains evolve + persist automatically. Use this tool only if you want to run evolution separately on a pre-existing set of stories.
38
+
39
+ If \`repoPath\` is provided, curated stories are automatically persisted as intents with decisions and lessons after evolution completes.
40
+
41
+ The pipeline runs asynchronously — returns immediately. Uses a cheaper model (haiku) by default since edge classification requires less reasoning than story analysis.`,
42
+ inputSchema: evolveDecisionsSchema,
43
+ handler: evolveDecisions
44
+ };
45
+ //# sourceMappingURL=evolve-decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolve-decisions.js","sourceRoot":"","sources":["../../src/tools/evolve-decisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IACpF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,yGAAyG,CAAC;IACrL,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;IACzH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;CAClH,CAAC,CAAA;AASF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAA2B;IAC/D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE;QAC/C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAA;IAEF,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,iFAAiF;KAC1G,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE;;;;;;;;;;;;;;;;uKAgBwJ;IACrK,WAAW,EAAE,qBAAqB;IAClC,OAAO,EAAE,eAAe;CACzB,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ export declare const getIntentChangesSchema: z.ZodObject<{
3
+ repoOrigin: z.ZodOptional<z.ZodString>;
4
+ repoPath: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ repoPath: string;
7
+ repoOrigin?: string | undefined;
8
+ }, {
9
+ repoPath: string;
10
+ repoOrigin?: string | undefined;
11
+ }>;
12
+ export type GetIntentChangesInput = z.infer<typeof getIntentChangesSchema>;
13
+ export interface FileChange {
14
+ filePath: string;
15
+ status: 'modified' | 'added' | 'deleted' | 'renamed';
16
+ staged: boolean;
17
+ }
18
+ export interface IntentChangesResponse {
19
+ hasActiveIntent: boolean;
20
+ intent?: {
21
+ id: string;
22
+ title: string;
23
+ description: string;
24
+ status: string;
25
+ createdAt?: string;
26
+ };
27
+ changes: {
28
+ modified: FileChange[];
29
+ untracked: string[];
30
+ totalFiles: number;
31
+ };
32
+ warnings: string[];
33
+ }
34
+ export declare function getIntentChanges(input: GetIntentChangesInput): Promise<IntentChangesResponse>;
35
+ export declare const getIntentChangesTool: {
36
+ name: string;
37
+ description: string;
38
+ inputSchema: z.ZodObject<{
39
+ repoOrigin: z.ZodOptional<z.ZodString>;
40
+ repoPath: z.ZodString;
41
+ }, "strip", z.ZodTypeAny, {
42
+ repoPath: string;
43
+ repoOrigin?: string | undefined;
44
+ }, {
45
+ repoPath: string;
46
+ repoOrigin?: string | undefined;
47
+ }>;
48
+ handler: typeof getIntentChanges;
49
+ };
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ import { request } from '../services/muninn-ipc.js';
3
+ import { resolveOrigin } from './resolve-origin.js';
4
+ export const getIntentChangesSchema = z.object({
5
+ repoOrigin: z.string().optional().describe('Git remote origin URL. Auto-detected from repoPath via git if not provided.'),
6
+ repoPath: z.string().describe('Local path to the repository root')
7
+ });
8
+ export async function getIntentChanges(input) {
9
+ const actualOrigin = resolveOrigin(input.repoOrigin, input.repoPath);
10
+ const res = await request('intent', 'get-changes', {
11
+ repoOrigin: actualOrigin,
12
+ repoPath: input.repoPath,
13
+ });
14
+ const modified = (res.changes?.modified || res.modified || []).map((f) => ({
15
+ filePath: f.filePath || f,
16
+ status: f.status || 'modified',
17
+ staged: f.staged || false,
18
+ }));
19
+ const untracked = res.changes?.untracked || res.untracked || [];
20
+ const warnings = res.warnings || [];
21
+ const hasActiveIntent = res.hasActiveIntent !== undefined
22
+ ? res.hasActiveIntent
23
+ : !!res.intent;
24
+ if (!hasActiveIntent && (modified.length > 0 || untracked.length > 0)) {
25
+ warnings.push('Changes detected but no active intent. Consider creating an intent first.');
26
+ }
27
+ return {
28
+ hasActiveIntent,
29
+ intent: res.intent ? {
30
+ id: res.intent.id || res.intent._id || '',
31
+ title: res.intent.title || '',
32
+ description: res.intent.description || '',
33
+ status: res.intent.status || 'active',
34
+ createdAt: res.intent.created_at || res.intent.createdAt
35
+ } : undefined,
36
+ changes: {
37
+ modified,
38
+ untracked,
39
+ totalFiles: modified.length + untracked.length
40
+ },
41
+ warnings
42
+ };
43
+ }
44
+ export const getIntentChangesTool = {
45
+ name: 'get_intent_changes',
46
+ description: `Get uncommitted changes in the repository along with the active intent info.
47
+
48
+ Use this tool before prompting the user about committing to show:
49
+ - The active intent title and description
50
+ - Number of modified, added, and untracked files
51
+ - Any warnings (e.g., pre-existing changes from before intent activation)
52
+
53
+ This helps you construct an informative commit prompt like:
54
+ "You have uncommitted work on '[intent title]' (N files changed)..."`,
55
+ inputSchema: getIntentChangesSchema,
56
+ handler: getIntentChanges
57
+ };
58
+ //# sourceMappingURL=get-intent-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-intent-changes.js","sourceRoot":"","sources":["../../src/tools/get-intent-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACzH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACnE,CAAC,CAAA;AA2BF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAA4B;IACjE,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEpE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE;QACjD,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAC5F,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU;QAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK;KAC1B,CAAC,CAAC,CAAA;IAEH,MAAM,SAAS,GAAa,GAAG,CAAC,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAA;IACzE,MAAM,QAAQ,GAAa,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAA;IAE7C,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,KAAK,SAAS;QACvD,CAAC,CAAC,GAAG,CAAC,eAAe;QACrB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;IAEhB,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;IAC5F,CAAC;IAED,OAAO;QACL,eAAe;QACf,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACnB,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE;YACzC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE;YACzC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ;YACrC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS;SACzD,CAAC,CAAC,CAAC,SAAS;QACb,OAAO,EAAE;YACP,QAAQ;YACR,SAAS;YACT,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;SAC/C;QACD,QAAQ;KACT,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE;;;;;;;;qEAQsD;IACnE,WAAW,EAAE,sBAAsB;IACnC,OAAO,EAAE,gBAAgB;CAC1B,CAAA"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ export declare const getIntentsForFileSchema: z.ZodObject<{
3
+ repoOrigin: z.ZodOptional<z.ZodString>;
4
+ repoPath: z.ZodString;
5
+ filePath: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ repoPath: string;
8
+ filePath: string;
9
+ repoOrigin?: string | undefined;
10
+ }, {
11
+ repoPath: string;
12
+ filePath: string;
13
+ repoOrigin?: string | undefined;
14
+ }>;
15
+ export type GetIntentsForFileInput = z.infer<typeof getIntentsForFileSchema>;
16
+ export interface FileIntentBlock {
17
+ id: string;
18
+ startLine: number;
19
+ endLine: number;
20
+ contentSnippet: string;
21
+ intentIds: string[];
22
+ }
23
+ export interface FileIntentInfo {
24
+ intentId: string;
25
+ title: string;
26
+ author?: string;
27
+ status: string;
28
+ description: string;
29
+ branch: string;
30
+ forkedFrom?: string;
31
+ blocks: FileIntentBlock[];
32
+ }
33
+ export interface GetIntentsForFileResponse {
34
+ filePath: string;
35
+ intents: FileIntentInfo[];
36
+ hasConflicts: boolean;
37
+ summary: string;
38
+ }
39
+ export declare function getIntentsForFile(input: GetIntentsForFileInput): Promise<GetIntentsForFileResponse>;
40
+ export declare const getIntentsForFileTool: {
41
+ name: string;
42
+ description: string;
43
+ inputSchema: z.ZodObject<{
44
+ repoOrigin: z.ZodOptional<z.ZodString>;
45
+ repoPath: z.ZodString;
46
+ filePath: z.ZodString;
47
+ }, "strip", z.ZodTypeAny, {
48
+ repoPath: string;
49
+ filePath: string;
50
+ repoOrigin?: string | undefined;
51
+ }, {
52
+ repoPath: string;
53
+ filePath: string;
54
+ repoOrigin?: string | undefined;
55
+ }>;
56
+ handler: typeof getIntentsForFile;
57
+ };
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ import { request } from '../services/muninn-ipc.js';
3
+ import { resolveOrigin } from './resolve-origin.js';
4
+ export const getIntentsForFileSchema = z.object({
5
+ repoOrigin: z.string().optional().describe('Git remote origin URL. Auto-detected from repoPath via git if not provided.'),
6
+ repoPath: z.string().describe('Local path to the repository root'),
7
+ filePath: z.string().describe('Path to the file (relative to repo root)')
8
+ });
9
+ export async function getIntentsForFile(input) {
10
+ const actualOrigin = resolveOrigin(input.repoOrigin, input.repoPath);
11
+ const res = await request('intent-block', 'get-for-file', {
12
+ repoOrigin: actualOrigin,
13
+ filePath: input.filePath,
14
+ });
15
+ const intents = (res.intents || []).map((intent) => ({
16
+ intentId: intent.intent_id || intent.intentId || intent.id || '',
17
+ title: intent.title || 'Unknown Intent',
18
+ author: intent.author || intent.author_name || intent.authorName,
19
+ status: intent.status || 'active',
20
+ description: intent.description || '',
21
+ branch: intent.branch || '',
22
+ forkedFrom: intent.forked_from || intent.forkedFrom,
23
+ blocks: (intent.blocks || []).map((b, i) => ({
24
+ id: b.id || `block-${i}`,
25
+ startLine: b.start_line || b.startLine || 0,
26
+ endLine: b.end_line || b.endLine || 0,
27
+ contentSnippet: b.content_snippet || b.contentSnippet || '',
28
+ intentIds: b.intent_ids || b.intentIds || [intent.intent_id || intent.intentId || intent.id || '']
29
+ }))
30
+ }));
31
+ const hasConflicts = intents.length > 1;
32
+ const summary = intents.length === 0
33
+ ? 'No intents found for this file'
34
+ : intents.length === 1
35
+ ? `1 intent: "${intents[0].title}" (${intents[0].status})`
36
+ : `${intents.length} intents affecting this file${hasConflicts ? ' - potential conflicts' : ''}`;
37
+ return {
38
+ filePath: input.filePath,
39
+ intents,
40
+ hasConflicts,
41
+ summary
42
+ };
43
+ }
44
+ export const getIntentsForFileTool = {
45
+ name: 'get_intents_for_file',
46
+ description: `Get all intents that have code blocks in this file.
47
+
48
+ Use this before modifying a file to:
49
+ - See what work is already in progress
50
+ - Identify potential conflicts with team members
51
+ - Understand the context of existing code changes
52
+
53
+ Returns intent details including author, status, and specific line ranges.`,
54
+ inputSchema: getIntentsForFileSchema,
55
+ handler: getIntentsForFile
56
+ };
57
+ //# sourceMappingURL=get-intents-for-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-intents-for-file.js","sourceRoot":"","sources":["../../src/tools/get-intents-for-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ export declare const getIntentsForLinesSchema: z.ZodObject<{
3
+ repoOrigin: z.ZodOptional<z.ZodString>;
4
+ repoPath: z.ZodString;
5
+ filePath: z.ZodString;
6
+ startLine: z.ZodNumber;
7
+ endLine: z.ZodNumber;
8
+ }, "strip", z.ZodTypeAny, {
9
+ repoPath: string;
10
+ filePath: string;
11
+ startLine: number;
12
+ endLine: number;
13
+ repoOrigin?: string | undefined;
14
+ }, {
15
+ repoPath: string;
16
+ filePath: string;
17
+ startLine: number;
18
+ endLine: number;
19
+ repoOrigin?: string | undefined;
20
+ }>;
21
+ export type GetIntentsForLinesInput = z.infer<typeof getIntentsForLinesSchema>;
22
+ export interface LineRangeIntent {
23
+ intentId: string;
24
+ title: string;
25
+ author?: string;
26
+ status: string;
27
+ description: string;
28
+ branch: string;
29
+ forkedFrom?: string;
30
+ overlappingLines: {
31
+ blockStartLine: number;
32
+ blockEndLine: number;
33
+ overlapStart: number;
34
+ overlapEnd: number;
35
+ };
36
+ }
37
+ export interface GetIntentsForLinesResponse {
38
+ filePath: string;
39
+ queryRange: {
40
+ startLine: number;
41
+ endLine: number;
42
+ };
43
+ intents: LineRangeIntent[];
44
+ hasOverlap: boolean;
45
+ warning?: string;
46
+ }
47
+ export declare function getIntentsForLines(input: GetIntentsForLinesInput): Promise<GetIntentsForLinesResponse>;
48
+ export declare const getIntentsForLinesTool: {
49
+ name: string;
50
+ description: string;
51
+ inputSchema: z.ZodObject<{
52
+ repoOrigin: z.ZodOptional<z.ZodString>;
53
+ repoPath: z.ZodString;
54
+ filePath: z.ZodString;
55
+ startLine: z.ZodNumber;
56
+ endLine: z.ZodNumber;
57
+ }, "strip", z.ZodTypeAny, {
58
+ repoPath: string;
59
+ filePath: string;
60
+ startLine: number;
61
+ endLine: number;
62
+ repoOrigin?: string | undefined;
63
+ }, {
64
+ repoPath: string;
65
+ filePath: string;
66
+ startLine: number;
67
+ endLine: number;
68
+ repoOrigin?: string | undefined;
69
+ }>;
70
+ handler: typeof getIntentsForLines;
71
+ };