gencode-ai 0.1.2 → 0.2.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.
- package/README.md +15 -17
- package/dist/agent/agent.d.ts +43 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +107 -4
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/types.d.ts +20 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/checkpointing/checkpoint-manager.d.ts +87 -0
- package/dist/checkpointing/checkpoint-manager.d.ts.map +1 -0
- package/dist/checkpointing/checkpoint-manager.js +281 -0
- package/dist/checkpointing/checkpoint-manager.js.map +1 -0
- package/dist/checkpointing/index.d.ts +29 -0
- package/dist/checkpointing/index.d.ts.map +1 -0
- package/dist/checkpointing/index.js +29 -0
- package/dist/checkpointing/index.js.map +1 -0
- package/dist/checkpointing/types.d.ts +98 -0
- package/dist/checkpointing/types.d.ts.map +1 -0
- package/dist/checkpointing/types.js +7 -0
- package/dist/checkpointing/types.js.map +1 -0
- package/dist/cli/components/App.d.ts.map +1 -1
- package/dist/cli/components/App.js +193 -7
- package/dist/cli/components/App.js.map +1 -1
- package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
- package/dist/cli/components/CommandSuggestions.js +5 -0
- package/dist/cli/components/CommandSuggestions.js.map +1 -1
- package/dist/cli/components/Messages.d.ts +7 -1
- package/dist/cli/components/Messages.d.ts.map +1 -1
- package/dist/cli/components/Messages.js +28 -2
- package/dist/cli/components/Messages.js.map +1 -1
- package/dist/cli/components/ModeIndicator.d.ts +42 -0
- package/dist/cli/components/ModeIndicator.d.ts.map +1 -0
- package/dist/cli/components/ModeIndicator.js +52 -0
- package/dist/cli/components/ModeIndicator.js.map +1 -0
- package/dist/cli/components/PlanApproval.d.ts +36 -0
- package/dist/cli/components/PlanApproval.d.ts.map +1 -0
- package/dist/cli/components/PlanApproval.js +154 -0
- package/dist/cli/components/PlanApproval.js.map +1 -0
- package/dist/cli/components/QuestionPrompt.d.ts +23 -0
- package/dist/cli/components/QuestionPrompt.d.ts.map +1 -0
- package/dist/cli/components/QuestionPrompt.js +231 -0
- package/dist/cli/components/QuestionPrompt.js.map +1 -0
- package/dist/cli/components/index.d.ts +1 -0
- package/dist/cli/components/index.d.ts.map +1 -1
- package/dist/cli/components/index.js +1 -0
- package/dist/cli/components/index.js.map +1 -1
- package/dist/cli/components/theme.d.ts +9 -0
- package/dist/cli/components/theme.d.ts.map +1 -1
- package/dist/cli/components/theme.js +14 -1
- package/dist/cli/components/theme.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js +2 -0
- package/dist/permissions/types.js.map +1 -1
- package/dist/planning/index.d.ts +13 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +15 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/plan-file.d.ts +59 -0
- package/dist/planning/plan-file.d.ts.map +1 -0
- package/dist/planning/plan-file.js +278 -0
- package/dist/planning/plan-file.js.map +1 -0
- package/dist/planning/state.d.ts +127 -0
- package/dist/planning/state.d.ts.map +1 -0
- package/dist/planning/state.js +261 -0
- package/dist/planning/state.js.map +1 -0
- package/dist/planning/tools/enter-plan-mode.d.ts +25 -0
- package/dist/planning/tools/enter-plan-mode.d.ts.map +1 -0
- package/dist/planning/tools/enter-plan-mode.js +98 -0
- package/dist/planning/tools/enter-plan-mode.js.map +1 -0
- package/dist/planning/tools/exit-plan-mode.d.ts +24 -0
- package/dist/planning/tools/exit-plan-mode.d.ts.map +1 -0
- package/dist/planning/tools/exit-plan-mode.js +149 -0
- package/dist/planning/tools/exit-plan-mode.js.map +1 -0
- package/dist/planning/types.d.ts +100 -0
- package/dist/planning/types.d.ts.map +1 -0
- package/dist/planning/types.js +28 -0
- package/dist/planning/types.js.map +1 -0
- package/dist/pricing/calculator.d.ts +21 -0
- package/dist/pricing/calculator.d.ts.map +1 -0
- package/dist/pricing/calculator.js +59 -0
- package/dist/pricing/calculator.js.map +1 -0
- package/dist/pricing/index.d.ts +7 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +7 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/pricing/models.d.ts +20 -0
- package/dist/pricing/models.d.ts.map +1 -0
- package/dist/pricing/models.js +322 -0
- package/dist/pricing/models.js.map +1 -0
- package/dist/pricing/types.d.ts +30 -0
- package/dist/pricing/types.d.ts.map +1 -0
- package/dist/pricing/types.js +5 -0
- package/dist/pricing/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +17 -10
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +21 -14
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +12 -8
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/types.d.ts +2 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/vertex-ai.d.ts.map +1 -1
- package/dist/providers/vertex-ai.js +17 -10
- package/dist/providers/vertex-ai.js.map +1 -1
- package/dist/session/manager.d.ts +4 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +8 -0
- package/dist/session/manager.js.map +1 -1
- package/dist/tools/builtin/ask-user.d.ts +64 -0
- package/dist/tools/builtin/ask-user.d.ts.map +1 -0
- package/dist/tools/builtin/ask-user.js +148 -0
- package/dist/tools/builtin/ask-user.js.map +1 -0
- package/dist/tools/index.d.ts +19 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +13 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +79 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/types.d.ts +17 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/docs/cost-tracking-comparison.md +904 -0
- package/docs/operating-modes.md +96 -0
- package/docs/proposals/0012-ask-user-question.md +66 -1
- package/docs/proposals/0025-cost-tracking.md +60 -2
- package/docs/proposals/README.md +2 -2
- package/examples/test-ask-user.ts +167 -0
- package/examples/test-checkpointing.ts +121 -0
- package/examples/test-cost-tracking.ts +77 -0
- package/examples/test-interrupt-cleanup.ts +94 -0
- package/package.json +1 -1
- package/src/agent/agent.ts +130 -4
- package/src/agent/index.ts +1 -0
- package/src/agent/types.ts +19 -1
- package/src/checkpointing/checkpoint-manager.ts +327 -0
- package/src/checkpointing/index.ts +45 -0
- package/src/checkpointing/types.ts +104 -0
- package/src/cli/components/App.tsx +259 -8
- package/src/cli/components/CommandSuggestions.tsx +5 -0
- package/src/cli/components/Messages.tsx +66 -4
- package/src/cli/components/ModeIndicator.tsx +174 -0
- package/src/cli/components/PlanApproval.tsx +327 -0
- package/src/cli/components/QuestionPrompt.tsx +462 -0
- package/src/cli/components/index.ts +1 -0
- package/src/cli/components/theme.ts +14 -1
- package/src/index.ts +15 -0
- package/src/permissions/types.ts +2 -0
- package/src/planning/index.ts +53 -0
- package/src/planning/plan-file.ts +326 -0
- package/src/planning/state.ts +305 -0
- package/src/planning/tools/enter-plan-mode.ts +111 -0
- package/src/planning/tools/exit-plan-mode.ts +170 -0
- package/src/planning/types.ts +150 -0
- package/src/pricing/calculator.ts +71 -0
- package/src/pricing/index.ts +7 -0
- package/src/pricing/models.ts +334 -0
- package/src/pricing/types.ts +32 -0
- package/src/prompts/system/base.txt +42 -0
- package/src/prompts/tools/ask-user.txt +110 -0
- package/src/providers/anthropic.ts +21 -10
- package/src/providers/gemini.ts +25 -14
- package/src/providers/openai.ts +17 -8
- package/src/providers/types.ts +3 -0
- package/src/providers/vertex-ai.ts +21 -10
- package/src/session/manager.ts +9 -0
- package/src/tools/builtin/ask-user.ts +185 -0
- package/src/tools/index.ts +23 -0
- package/src/tools/registry.ts +95 -2
- package/src/tools/types.ts +18 -0
- package/.gencode/settings.local.json +0 -7
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AskUserQuestion Tool - Structured user questioning
|
|
3
|
+
*
|
|
4
|
+
* Allows the agent to pause execution and present structured questions
|
|
5
|
+
* to the user with predefined options. Supports single-select, multi-select,
|
|
6
|
+
* and custom "Other" input.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import type { Tool } from '../types.js';
|
|
10
|
+
export declare const QuestionOptionSchema: z.ZodObject<{
|
|
11
|
+
label: z.ZodString;
|
|
12
|
+
description: z.ZodString;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
export declare const QuestionSchema: z.ZodObject<{
|
|
15
|
+
question: z.ZodString;
|
|
16
|
+
header: z.ZodString;
|
|
17
|
+
options: z.ZodArray<z.ZodObject<{
|
|
18
|
+
label: z.ZodString;
|
|
19
|
+
description: z.ZodString;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
multiSelect: z.ZodBoolean;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
export declare const AskUserQuestionInputSchema: z.ZodObject<{
|
|
24
|
+
questions: z.ZodArray<z.ZodObject<{
|
|
25
|
+
question: z.ZodString;
|
|
26
|
+
header: z.ZodString;
|
|
27
|
+
options: z.ZodArray<z.ZodObject<{
|
|
28
|
+
label: z.ZodString;
|
|
29
|
+
description: z.ZodString;
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
multiSelect: z.ZodBoolean;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export type QuestionOption = z.infer<typeof QuestionOptionSchema>;
|
|
35
|
+
export type Question = z.infer<typeof QuestionSchema>;
|
|
36
|
+
export type AskUserQuestionInput = z.infer<typeof AskUserQuestionInputSchema>;
|
|
37
|
+
export interface QuestionAnswer {
|
|
38
|
+
question: string;
|
|
39
|
+
header: string;
|
|
40
|
+
selectedOptions: string[];
|
|
41
|
+
customInput?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface AskUserQuestionResult {
|
|
44
|
+
answers: QuestionAnswer[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Format answers for display to the agent
|
|
48
|
+
*/
|
|
49
|
+
export declare function formatAnswersForAgent(answers: QuestionAnswer[]): string;
|
|
50
|
+
/**
|
|
51
|
+
* Format answers for CLI confirmation display
|
|
52
|
+
*/
|
|
53
|
+
export declare function formatAnswersForDisplay(answers: QuestionAnswer[]): string;
|
|
54
|
+
/**
|
|
55
|
+
* AskUserQuestion tool
|
|
56
|
+
*
|
|
57
|
+
* This tool is special - it doesn't execute immediately but signals
|
|
58
|
+
* the agent loop to pause and wait for user input via the CLI.
|
|
59
|
+
*
|
|
60
|
+
* The actual questioning is handled by the CLI layer (QuestionPrompt component).
|
|
61
|
+
* This tool just validates the input and returns a marker for the agent loop.
|
|
62
|
+
*/
|
|
63
|
+
export declare const askUserQuestionTool: Tool<AskUserQuestionInput>;
|
|
64
|
+
//# sourceMappingURL=ask-user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/ask-user.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,aAAa,CAAC;AAOjE,eAAO,MAAM,oBAAoB;;;iBAW/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;iBAkBzB,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAMrC,CAAC;AAMH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAoBvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CASzE;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAoD1D,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AskUserQuestion Tool - Structured user questioning
|
|
3
|
+
*
|
|
4
|
+
* Allows the agent to pause execution and present structured questions
|
|
5
|
+
* to the user with predefined options. Supports single-select, multi-select,
|
|
6
|
+
* and custom "Other" input.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { loadToolDescription } from '../../prompts/index.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Zod Schemas
|
|
12
|
+
// ============================================================================
|
|
13
|
+
export const QuestionOptionSchema = z.object({
|
|
14
|
+
label: z
|
|
15
|
+
.string()
|
|
16
|
+
.min(1)
|
|
17
|
+
.max(50)
|
|
18
|
+
.describe('Display text for this option (1-5 words, concise)'),
|
|
19
|
+
description: z
|
|
20
|
+
.string()
|
|
21
|
+
.min(1)
|
|
22
|
+
.max(200)
|
|
23
|
+
.describe('Explanation of what this option means or implications'),
|
|
24
|
+
});
|
|
25
|
+
export const QuestionSchema = z.object({
|
|
26
|
+
question: z
|
|
27
|
+
.string()
|
|
28
|
+
.min(1)
|
|
29
|
+
.describe('The complete question to ask the user, ending with a question mark'),
|
|
30
|
+
header: z
|
|
31
|
+
.string()
|
|
32
|
+
.min(1)
|
|
33
|
+
.max(12)
|
|
34
|
+
.describe('Very short label displayed as a chip/tag (max 12 chars)'),
|
|
35
|
+
options: z
|
|
36
|
+
.array(QuestionOptionSchema)
|
|
37
|
+
.min(2)
|
|
38
|
+
.max(4)
|
|
39
|
+
.describe('2-4 options for the user to choose from'),
|
|
40
|
+
multiSelect: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.describe('Set to true to allow multiple selections, false for single choice'),
|
|
43
|
+
});
|
|
44
|
+
export const AskUserQuestionInputSchema = z.object({
|
|
45
|
+
questions: z
|
|
46
|
+
.array(QuestionSchema)
|
|
47
|
+
.min(1)
|
|
48
|
+
.max(4)
|
|
49
|
+
.describe('1-4 questions to ask the user'),
|
|
50
|
+
});
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// Answer Formatting
|
|
53
|
+
// ============================================================================
|
|
54
|
+
/**
|
|
55
|
+
* Format answers for display to the agent
|
|
56
|
+
*/
|
|
57
|
+
export function formatAnswersForAgent(answers) {
|
|
58
|
+
const lines = ['User answered the following questions:', ''];
|
|
59
|
+
answers.forEach((answer, index) => {
|
|
60
|
+
lines.push(`${index + 1}. ${answer.header} (${answer.question})`);
|
|
61
|
+
if (answer.selectedOptions.length > 0) {
|
|
62
|
+
lines.push(` Selected: ${answer.selectedOptions.join(', ')}`);
|
|
63
|
+
}
|
|
64
|
+
if (answer.customInput) {
|
|
65
|
+
lines.push(` Custom input: ${answer.customInput}`);
|
|
66
|
+
}
|
|
67
|
+
lines.push('');
|
|
68
|
+
});
|
|
69
|
+
lines.push('Proceeding with user selections.');
|
|
70
|
+
return lines.join('\n');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Format answers for CLI confirmation display
|
|
74
|
+
*/
|
|
75
|
+
export function formatAnswersForDisplay(answers) {
|
|
76
|
+
return answers
|
|
77
|
+
.map((answer) => {
|
|
78
|
+
const selections = answer.customInput
|
|
79
|
+
? [...answer.selectedOptions, answer.customInput].join(', ')
|
|
80
|
+
: answer.selectedOptions.join(', ');
|
|
81
|
+
return `✔ ${answer.header}: ${selections}`;
|
|
82
|
+
})
|
|
83
|
+
.join('\n');
|
|
84
|
+
}
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Tool Implementation
|
|
87
|
+
// ============================================================================
|
|
88
|
+
/**
|
|
89
|
+
* AskUserQuestion tool
|
|
90
|
+
*
|
|
91
|
+
* This tool is special - it doesn't execute immediately but signals
|
|
92
|
+
* the agent loop to pause and wait for user input via the CLI.
|
|
93
|
+
*
|
|
94
|
+
* The actual questioning is handled by the CLI layer (QuestionPrompt component).
|
|
95
|
+
* This tool just validates the input and returns a marker for the agent loop.
|
|
96
|
+
*/
|
|
97
|
+
export const askUserQuestionTool = {
|
|
98
|
+
name: 'AskUserQuestion',
|
|
99
|
+
description: loadToolDescription('ask-user'),
|
|
100
|
+
parameters: AskUserQuestionInputSchema,
|
|
101
|
+
async execute(input, context) {
|
|
102
|
+
// Validation is handled by Zod schema
|
|
103
|
+
// Additional validation for recommended options format
|
|
104
|
+
for (const question of input.questions) {
|
|
105
|
+
// Check if first option has (Recommended) - this is just a hint, not enforced
|
|
106
|
+
const firstOption = question.options[0];
|
|
107
|
+
if (firstOption && !firstOption.label.includes('(Recommended)')) {
|
|
108
|
+
// This is fine - recommended suffix is optional
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Check if context has askUser callback
|
|
112
|
+
if (context.askUser) {
|
|
113
|
+
try {
|
|
114
|
+
const answers = await context.askUser(input.questions);
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
output: formatAnswersForAgent(answers),
|
|
118
|
+
metadata: {
|
|
119
|
+
title: 'AskUserQuestion',
|
|
120
|
+
subtitle: `${answers.length} answer(s) received`,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
output: '',
|
|
128
|
+
error: `Failed to get user response: ${error instanceof Error ? error.message : String(error)}`,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// If no askUser callback, return a special marker
|
|
133
|
+
// The agent loop should detect this and handle it specially
|
|
134
|
+
return {
|
|
135
|
+
success: true,
|
|
136
|
+
output: JSON.stringify({
|
|
137
|
+
type: 'ask_user_question',
|
|
138
|
+
questions: input.questions,
|
|
139
|
+
requiresUserInput: true,
|
|
140
|
+
}),
|
|
141
|
+
metadata: {
|
|
142
|
+
title: 'AskUserQuestion',
|
|
143
|
+
subtitle: `${input.questions.length} question(s) pending`,
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=ask-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/tools/builtin/ask-user.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export { grepTool } from './builtin/grep.js';
|
|
|
12
12
|
export { webfetchTool } from './builtin/webfetch.js';
|
|
13
13
|
export { websearchTool } from './builtin/websearch.js';
|
|
14
14
|
export { todowriteTool, getTodos, clearTodos } from './builtin/todowrite.js';
|
|
15
|
+
export { askUserQuestionTool, formatAnswersForAgent, formatAnswersForDisplay, } from './builtin/ask-user.js';
|
|
16
|
+
export type { Question as AskUserQuestion, QuestionOption as AskUserQuestionOption, QuestionAnswer as AskUserQuestionAnswer, AskUserQuestionInput, AskUserQuestionResult, } from './builtin/ask-user.js';
|
|
17
|
+
export { enterPlanModeTool, exitPlanModeTool } from '../planning/index.js';
|
|
15
18
|
import { ToolRegistry } from './registry.js';
|
|
16
19
|
/**
|
|
17
20
|
* Create a registry with all built-in tools
|
|
@@ -20,7 +23,12 @@ export declare function createDefaultRegistry(): ToolRegistry;
|
|
|
20
23
|
/**
|
|
21
24
|
* All built-in tools
|
|
22
25
|
*/
|
|
23
|
-
export declare const builtinTools: (import("./types.js").Tool<{
|
|
26
|
+
export declare const builtinTools: (import("./types.js").Tool<Record<string, never>> | import("./types.js").Tool<{
|
|
27
|
+
allowedPrompts?: {
|
|
28
|
+
tool: "Bash";
|
|
29
|
+
prompt: string;
|
|
30
|
+
}[] | undefined;
|
|
31
|
+
}> | import("./types.js").Tool<{
|
|
24
32
|
file_path: string;
|
|
25
33
|
offset?: number | undefined;
|
|
26
34
|
limit?: number | undefined;
|
|
@@ -52,5 +60,15 @@ export declare const builtinTools: (import("./types.js").Tool<{
|
|
|
52
60
|
status: "pending" | "in_progress" | "completed";
|
|
53
61
|
id?: string | undefined;
|
|
54
62
|
}[];
|
|
63
|
+
}> | import("./types.js").Tool<{
|
|
64
|
+
questions: {
|
|
65
|
+
question: string;
|
|
66
|
+
header: string;
|
|
67
|
+
options: {
|
|
68
|
+
label: string;
|
|
69
|
+
description: string;
|
|
70
|
+
}[];
|
|
71
|
+
multiSelect: boolean;
|
|
72
|
+
}[];
|
|
55
73
|
}>)[];
|
|
56
74
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,QAAQ,IAAI,eAAe,EAC3B,cAAc,IAAI,qBAAqB,EACvC,cAAc,IAAI,qBAAqB,EACvC,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAa7C;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CAiBpD;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAaxB,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -13,6 +13,9 @@ export { grepTool } from './builtin/grep.js';
|
|
|
13
13
|
export { webfetchTool } from './builtin/webfetch.js';
|
|
14
14
|
export { websearchTool } from './builtin/websearch.js';
|
|
15
15
|
export { todowriteTool, getTodos, clearTodos } from './builtin/todowrite.js';
|
|
16
|
+
export { askUserQuestionTool, formatAnswersForAgent, formatAnswersForDisplay, } from './builtin/ask-user.js';
|
|
17
|
+
// Plan mode tools
|
|
18
|
+
export { enterPlanModeTool, exitPlanModeTool } from '../planning/index.js';
|
|
16
19
|
import { ToolRegistry } from './registry.js';
|
|
17
20
|
import { readTool } from './builtin/read.js';
|
|
18
21
|
import { writeTool } from './builtin/write.js';
|
|
@@ -23,6 +26,8 @@ import { grepTool } from './builtin/grep.js';
|
|
|
23
26
|
import { webfetchTool } from './builtin/webfetch.js';
|
|
24
27
|
import { websearchTool } from './builtin/websearch.js';
|
|
25
28
|
import { todowriteTool } from './builtin/todowrite.js';
|
|
29
|
+
import { askUserQuestionTool } from './builtin/ask-user.js';
|
|
30
|
+
import { enterPlanModeTool, exitPlanModeTool } from '../planning/index.js';
|
|
26
31
|
/**
|
|
27
32
|
* Create a registry with all built-in tools
|
|
28
33
|
*/
|
|
@@ -38,6 +43,9 @@ export function createDefaultRegistry() {
|
|
|
38
43
|
webfetchTool,
|
|
39
44
|
websearchTool,
|
|
40
45
|
todowriteTool,
|
|
46
|
+
askUserQuestionTool,
|
|
47
|
+
enterPlanModeTool,
|
|
48
|
+
exitPlanModeTool,
|
|
41
49
|
]);
|
|
42
50
|
return registry;
|
|
43
51
|
}
|
|
@@ -54,5 +62,8 @@ export const builtinTools = [
|
|
|
54
62
|
webfetchTool,
|
|
55
63
|
websearchTool,
|
|
56
64
|
todowriteTool,
|
|
65
|
+
askUserQuestionTool,
|
|
66
|
+
enterPlanModeTool,
|
|
67
|
+
exitPlanModeTool,
|
|
57
68
|
];
|
|
58
69
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAS/B,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE3E;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC;QACnB,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,iBAAiB;QACjB,gBAAgB;KACjB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,aAAa;IACb,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;CACjB,CAAC"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -14,9 +14,22 @@ export declare class ToolRegistry {
|
|
|
14
14
|
* Get tool definitions for LLM
|
|
15
15
|
*/
|
|
16
16
|
getDefinitions(toolNames?: string[]): ToolDefinition[];
|
|
17
|
+
/**
|
|
18
|
+
* Get tool definitions filtered by plan mode
|
|
19
|
+
* In plan mode, only read-only tools are returned
|
|
20
|
+
*/
|
|
21
|
+
getFilteredDefinitions(toolNames?: string[]): ToolDefinition[];
|
|
17
22
|
/**
|
|
18
23
|
* Execute a tool by name
|
|
19
24
|
*/
|
|
20
25
|
execute(name: string, input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Capture file state before modification
|
|
28
|
+
*/
|
|
29
|
+
private captureFileState;
|
|
30
|
+
/**
|
|
31
|
+
* Record a checkpoint after file modification
|
|
32
|
+
*/
|
|
33
|
+
private recordCheckpoint;
|
|
21
34
|
}
|
|
22
35
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAgC;IAE7C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAgBtD;;;OAGG;IACH,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAU9D;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA6CtF;;OAEG;YACW,gBAAgB;IAc9B;;OAEG;YACW,gBAAgB;CAkC/B"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tool Registry - Manages available tools
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import * as fs from 'fs/promises';
|
|
5
|
+
import { zodToJsonSchema, getErrorMessage, resolvePath } from './types.js';
|
|
6
|
+
import { getPlanModeManager } from '../planning/index.js';
|
|
7
|
+
import { getCheckpointManager } from '../checkpointing/index.js';
|
|
8
|
+
// Tools that modify files and should be tracked for checkpointing
|
|
9
|
+
const CHECKPOINT_TOOLS = ['Write', 'Edit'];
|
|
5
10
|
export class ToolRegistry {
|
|
6
11
|
tools = new Map();
|
|
7
12
|
register(tool) {
|
|
@@ -39,6 +44,17 @@ export class ToolRegistry {
|
|
|
39
44
|
})
|
|
40
45
|
.filter((t) => t !== null);
|
|
41
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Get tool definitions filtered by plan mode
|
|
49
|
+
* In plan mode, only read-only tools are returned
|
|
50
|
+
*/
|
|
51
|
+
getFilteredDefinitions(toolNames) {
|
|
52
|
+
const planManager = getPlanModeManager();
|
|
53
|
+
const names = toolNames ?? this.list();
|
|
54
|
+
// Filter tools based on plan mode state
|
|
55
|
+
const filteredNames = planManager.filterTools(names);
|
|
56
|
+
return this.getDefinitions(filteredNames);
|
|
57
|
+
}
|
|
42
58
|
/**
|
|
43
59
|
* Execute a tool by name
|
|
44
60
|
*/
|
|
@@ -61,11 +77,72 @@ export class ToolRegistry {
|
|
|
61
77
|
error: `Invalid input: ${parsed.error.message}`,
|
|
62
78
|
};
|
|
63
79
|
}
|
|
64
|
-
|
|
80
|
+
// Capture pre-execution state for checkpointing
|
|
81
|
+
let preState = null;
|
|
82
|
+
if (CHECKPOINT_TOOLS.includes(name) && parsed.data && typeof parsed.data === 'object') {
|
|
83
|
+
const filePath = parsed.data.file_path;
|
|
84
|
+
if (filePath) {
|
|
85
|
+
preState = await this.captureFileState(filePath, context.cwd);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Execute the tool
|
|
89
|
+
const result = await tool.execute(parsed.data, context);
|
|
90
|
+
// Record checkpoint on successful file modification
|
|
91
|
+
if (result.success && preState) {
|
|
92
|
+
await this.recordCheckpoint(name, preState, context.cwd);
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
65
95
|
}
|
|
66
96
|
catch (error) {
|
|
67
97
|
return { success: false, output: '', error: `Tool execution failed: ${getErrorMessage(error)}` };
|
|
68
98
|
}
|
|
69
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Capture file state before modification
|
|
102
|
+
*/
|
|
103
|
+
async captureFileState(filePath, cwd) {
|
|
104
|
+
const resolvedPath = resolvePath(filePath, cwd);
|
|
105
|
+
try {
|
|
106
|
+
const content = await fs.readFile(resolvedPath, 'utf-8');
|
|
107
|
+
return { filePath: resolvedPath, content, existed: true };
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// File doesn't exist
|
|
111
|
+
return { filePath: resolvedPath, content: null, existed: false };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Record a checkpoint after file modification
|
|
116
|
+
*/
|
|
117
|
+
async recordCheckpoint(toolName, preState, cwd) {
|
|
118
|
+
const checkpointManager = getCheckpointManager();
|
|
119
|
+
// Read current file content
|
|
120
|
+
let newContent = null;
|
|
121
|
+
try {
|
|
122
|
+
newContent = await fs.readFile(preState.filePath, 'utf-8');
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// File was deleted or doesn't exist
|
|
126
|
+
}
|
|
127
|
+
// Determine change type
|
|
128
|
+
let changeType;
|
|
129
|
+
if (!preState.existed && newContent !== null) {
|
|
130
|
+
changeType = 'create';
|
|
131
|
+
}
|
|
132
|
+
else if (preState.existed && newContent === null) {
|
|
133
|
+
changeType = 'delete';
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
changeType = 'modify';
|
|
137
|
+
}
|
|
138
|
+
// Record the change
|
|
139
|
+
checkpointManager.recordChange({
|
|
140
|
+
path: preState.filePath,
|
|
141
|
+
changeType,
|
|
142
|
+
previousContent: preState.content,
|
|
143
|
+
newContent,
|
|
144
|
+
toolName,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
70
147
|
}
|
|
71
148
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -2,9 +2,26 @@
|
|
|
2
2
|
* Tool System Type Definitions
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
export interface Question {
|
|
6
|
+
question: string;
|
|
7
|
+
header: string;
|
|
8
|
+
options: Array<{
|
|
9
|
+
label: string;
|
|
10
|
+
description: string;
|
|
11
|
+
}>;
|
|
12
|
+
multiSelect: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface QuestionAnswer {
|
|
15
|
+
question: string;
|
|
16
|
+
header: string;
|
|
17
|
+
selectedOptions: string[];
|
|
18
|
+
customInput?: string;
|
|
19
|
+
}
|
|
5
20
|
export interface ToolContext {
|
|
6
21
|
cwd: string;
|
|
7
22
|
abortSignal?: AbortSignal;
|
|
23
|
+
/** Callback for AskUserQuestion tool to interact with user */
|
|
24
|
+
askUser?: (questions: Question[]) => Promise<QuestionAnswer[]>;
|
|
8
25
|
}
|
|
9
26
|
export interface ToolResultMetadata {
|
|
10
27
|
title?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
|