thatgfsj-code 0.2.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 (179) hide show
  1. package/.patches/0001-fix-repl-replace-readline-with-inquirer-input-for-ke.patch +279 -0
  2. package/.patches/0002-fix-repl-stream-AI-output-directly-to-stdout-so-term.patch +564 -0
  3. package/.patches/0003-fix-session-break-the-hallucination-loop-in-assistan.patch +194 -0
  4. package/.patches/0004-chore-release-bump-version-to-0.2.1.patch +24 -0
  5. package/LICENSE +21 -0
  6. package/README.md +100 -0
  7. package/ROADMAP.md +107 -0
  8. package/dist/agent/core.d.ts +56 -0
  9. package/dist/agent/core.d.ts.map +1 -0
  10. package/dist/agent/core.js +142 -0
  11. package/dist/agent/core.js.map +1 -0
  12. package/dist/agent/index.d.ts +8 -0
  13. package/dist/agent/index.d.ts.map +1 -0
  14. package/dist/agent/index.js +8 -0
  15. package/dist/agent/index.js.map +1 -0
  16. package/dist/agent/intent.d.ts +36 -0
  17. package/dist/agent/intent.d.ts.map +1 -0
  18. package/dist/agent/intent.js +146 -0
  19. package/dist/agent/intent.js.map +1 -0
  20. package/dist/agent/streaming.d.ts +50 -0
  21. package/dist/agent/streaming.d.ts.map +1 -0
  22. package/dist/agent/streaming.js +110 -0
  23. package/dist/agent/streaming.js.map +1 -0
  24. package/dist/core/ai-engine.d.ts +59 -0
  25. package/dist/core/ai-engine.d.ts.map +1 -0
  26. package/dist/core/ai-engine.js +378 -0
  27. package/dist/core/ai-engine.js.map +1 -0
  28. package/dist/core/cli.d.ts +21 -0
  29. package/dist/core/cli.d.ts.map +1 -0
  30. package/dist/core/cli.js +143 -0
  31. package/dist/core/cli.js.map +1 -0
  32. package/dist/core/config.d.ts +38 -0
  33. package/dist/core/config.d.ts.map +1 -0
  34. package/dist/core/config.js +129 -0
  35. package/dist/core/config.js.map +1 -0
  36. package/dist/core/context-compactor.d.ts +54 -0
  37. package/dist/core/context-compactor.d.ts.map +1 -0
  38. package/dist/core/context-compactor.js +197 -0
  39. package/dist/core/context-compactor.js.map +1 -0
  40. package/dist/core/hooks.d.ts +75 -0
  41. package/dist/core/hooks.d.ts.map +1 -0
  42. package/dist/core/hooks.js +146 -0
  43. package/dist/core/hooks.js.map +1 -0
  44. package/dist/core/permissions.d.ts +52 -0
  45. package/dist/core/permissions.d.ts.map +1 -0
  46. package/dist/core/permissions.js +237 -0
  47. package/dist/core/permissions.js.map +1 -0
  48. package/dist/core/session.d.ts +54 -0
  49. package/dist/core/session.d.ts.map +1 -0
  50. package/dist/core/session.js +147 -0
  51. package/dist/core/session.js.map +1 -0
  52. package/dist/core/skills.d.ts +60 -0
  53. package/dist/core/skills.d.ts.map +1 -0
  54. package/dist/core/skills.js +175 -0
  55. package/dist/core/skills.js.map +1 -0
  56. package/dist/core/state.d.ts +60 -0
  57. package/dist/core/state.d.ts.map +1 -0
  58. package/dist/core/state.js +106 -0
  59. package/dist/core/state.js.map +1 -0
  60. package/dist/core/subagent.d.ts +68 -0
  61. package/dist/core/subagent.d.ts.map +1 -0
  62. package/dist/core/subagent.js +142 -0
  63. package/dist/core/subagent.js.map +1 -0
  64. package/dist/core/system-prompt.d.ts +40 -0
  65. package/dist/core/system-prompt.d.ts.map +1 -0
  66. package/dist/core/system-prompt.js +138 -0
  67. package/dist/core/system-prompt.js.map +1 -0
  68. package/dist/core/tool-registry.d.ts +53 -0
  69. package/dist/core/tool-registry.d.ts.map +1 -0
  70. package/dist/core/tool-registry.js +138 -0
  71. package/dist/core/tool-registry.js.map +1 -0
  72. package/dist/core/types.d.ts +206 -0
  73. package/dist/core/types.d.ts.map +1 -0
  74. package/dist/core/types.js +127 -0
  75. package/dist/core/types.js.map +1 -0
  76. package/dist/index.d.ts +7 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +481 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/mcp/client.d.ts +83 -0
  81. package/dist/mcp/client.d.ts.map +1 -0
  82. package/dist/mcp/client.js +267 -0
  83. package/dist/mcp/client.js.map +1 -0
  84. package/dist/repl/index.d.ts +8 -0
  85. package/dist/repl/index.d.ts.map +1 -0
  86. package/dist/repl/index.js +8 -0
  87. package/dist/repl/index.js.map +1 -0
  88. package/dist/repl/input.d.ts +61 -0
  89. package/dist/repl/input.d.ts.map +1 -0
  90. package/dist/repl/input.js +127 -0
  91. package/dist/repl/input.js.map +1 -0
  92. package/dist/repl/loop.d.ts +53 -0
  93. package/dist/repl/loop.d.ts.map +1 -0
  94. package/dist/repl/loop.js +241 -0
  95. package/dist/repl/loop.js.map +1 -0
  96. package/dist/repl/output.d.ts +105 -0
  97. package/dist/repl/output.d.ts.map +1 -0
  98. package/dist/repl/output.js +197 -0
  99. package/dist/repl/output.js.map +1 -0
  100. package/dist/repl/welcome.d.ts +68 -0
  101. package/dist/repl/welcome.d.ts.map +1 -0
  102. package/dist/repl/welcome.js +249 -0
  103. package/dist/repl/welcome.js.map +1 -0
  104. package/dist/tools/file.d.ts +46 -0
  105. package/dist/tools/file.d.ts.map +1 -0
  106. package/dist/tools/file.js +100 -0
  107. package/dist/tools/file.js.map +1 -0
  108. package/dist/tools/git.d.ts +52 -0
  109. package/dist/tools/git.d.ts.map +1 -0
  110. package/dist/tools/git.js +112 -0
  111. package/dist/tools/git.js.map +1 -0
  112. package/dist/tools/index.d.ts +22 -0
  113. package/dist/tools/index.d.ts.map +1 -0
  114. package/dist/tools/index.js +43 -0
  115. package/dist/tools/index.js.map +1 -0
  116. package/dist/tools/search.d.ts +36 -0
  117. package/dist/tools/search.d.ts.map +1 -0
  118. package/dist/tools/search.js +223 -0
  119. package/dist/tools/search.js.map +1 -0
  120. package/dist/tools/shell.d.ts +57 -0
  121. package/dist/tools/shell.d.ts.map +1 -0
  122. package/dist/tools/shell.js +153 -0
  123. package/dist/tools/shell.js.map +1 -0
  124. package/dist/utils/diff-preview.d.ts +42 -0
  125. package/dist/utils/diff-preview.d.ts.map +1 -0
  126. package/dist/utils/diff-preview.js +174 -0
  127. package/dist/utils/diff-preview.js.map +1 -0
  128. package/dist/utils/index.d.ts +8 -0
  129. package/dist/utils/index.d.ts.map +1 -0
  130. package/dist/utils/index.js +8 -0
  131. package/dist/utils/index.js.map +1 -0
  132. package/dist/utils/memory.d.ts +81 -0
  133. package/dist/utils/memory.d.ts.map +1 -0
  134. package/dist/utils/memory.js +186 -0
  135. package/dist/utils/memory.js.map +1 -0
  136. package/dist/utils/project-context.d.ts +62 -0
  137. package/dist/utils/project-context.d.ts.map +1 -0
  138. package/dist/utils/project-context.js +197 -0
  139. package/dist/utils/project-context.js.map +1 -0
  140. package/docs/API_KEY_GUIDE.md +236 -0
  141. package/docs/FAQ.md +182 -0
  142. package/install.bat +63 -0
  143. package/install.ps1 +238 -0
  144. package/install.sh +113 -0
  145. package/package.json +36 -0
  146. package/src/agent/core.ts +179 -0
  147. package/src/agent/index.ts +8 -0
  148. package/src/agent/intent.ts +181 -0
  149. package/src/agent/streaming.ts +132 -0
  150. package/src/core/ai-engine.ts +437 -0
  151. package/src/core/cli.ts +171 -0
  152. package/src/core/config.ts +147 -0
  153. package/src/core/context-compactor.ts +245 -0
  154. package/src/core/hooks.ts +196 -0
  155. package/src/core/permissions.ts +308 -0
  156. package/src/core/session.ts +165 -0
  157. package/src/core/skills.ts +208 -0
  158. package/src/core/state.ts +120 -0
  159. package/src/core/subagent.ts +195 -0
  160. package/src/core/system-prompt.ts +163 -0
  161. package/src/core/tool-registry.ts +157 -0
  162. package/src/core/types.ts +280 -0
  163. package/src/index.ts +544 -0
  164. package/src/mcp/client.ts +330 -0
  165. package/src/repl/index.ts +8 -0
  166. package/src/repl/input.ts +139 -0
  167. package/src/repl/loop.ts +280 -0
  168. package/src/repl/output.ts +222 -0
  169. package/src/repl/welcome.ts +296 -0
  170. package/src/tools/file.ts +117 -0
  171. package/src/tools/git.ts +132 -0
  172. package/src/tools/index.ts +48 -0
  173. package/src/tools/search.ts +263 -0
  174. package/src/tools/shell.ts +181 -0
  175. package/src/utils/diff-preview.ts +202 -0
  176. package/src/utils/index.ts +8 -0
  177. package/src/utils/memory.ts +223 -0
  178. package/src/utils/project-context.ts +207 -0
  179. package/tsconfig.json +19 -0
@@ -0,0 +1,138 @@
1
+ /**
2
+ * S04: System Prompt Builder
3
+ * Dynamic system prompt construction - not a static string, but a program
4
+ * that assembles context from multiple sources each turn
5
+ */
6
+ import { readFileSync, existsSync } from 'fs';
7
+ import { join } from 'path';
8
+ /**
9
+ * S04: System Prompt Builder - assembles prompt from multiple fragments
10
+ */
11
+ export class SystemPromptBuilder {
12
+ config;
13
+ constructor(config = {}) {
14
+ this.config = {
15
+ cwd: process.cwd(),
16
+ tools: [],
17
+ includeClaudeMd: true,
18
+ permissionMode: 'ask',
19
+ date: new Date(),
20
+ model: 'unknown',
21
+ ...config
22
+ };
23
+ }
24
+ build() {
25
+ const fragments = [];
26
+ fragments.push(this.buildIdentity());
27
+ fragments.push(this.buildToolInstructions());
28
+ fragments.push(this.buildEnvironment());
29
+ fragments.push(this.buildPermissionMode());
30
+ fragments.push(this.buildProjectInstructions());
31
+ fragments.push(this.buildDateInfo());
32
+ fragments.push(this.buildOutputFormat());
33
+ return fragments.filter(Boolean).join('\n\n');
34
+ }
35
+ buildIdentity() {
36
+ return [
37
+ 'You are Thatgfsj Code, an AI coding assistant.',
38
+ '',
39
+ 'You have access to tools (file operations, shell commands, git, search) that let you',
40
+ 'read, write, and modify files and run commands.',
41
+ '',
42
+ 'Be concise, helpful, and show your reasoning when working through problems.',
43
+ '',
44
+ 'When using tools:',
45
+ '- Prefer small, targeted operations over large batch changes',
46
+ '- Confirm destructive operations (rm, git push --force, etc.)',
47
+ '- Explain what you are going to do before doing it',
48
+ '- If something is not clear, ask clarifying questions'
49
+ ].join('\n');
50
+ }
51
+ buildToolInstructions() {
52
+ const tools = this.config.tools || [];
53
+ if (tools.length === 0) {
54
+ return '## Tools\n\nNo tools are currently registered.';
55
+ }
56
+ const toolDescs = tools.map(t => {
57
+ const params = t.parameters
58
+ .map(p => ' - ' + p.name + ' (' + p.type + (p.required ? ', required' : '') + '): ' + p.description)
59
+ .join('\n');
60
+ return '### ' + t.name + '\n' + t.description + '\n\nParameters:\n' + params;
61
+ }).join('\n\n');
62
+ return '## Tools\n\nYou have access to the following tools:\n\n' + toolDescs + '\n\nTo use a tool, respond with a tool call. Each tool call must include:\n- The tool name\n- Parameters as a JSON object';
63
+ }
64
+ buildEnvironment() {
65
+ const cwd = this.config.cwd || process.cwd();
66
+ return '## Environment\n\nWorking directory: ' + cwd;
67
+ }
68
+ buildPermissionMode() {
69
+ const mode = this.config.permissionMode || 'ask';
70
+ const explanations = {
71
+ accept: 'All tool calls are automatically allowed without confirmation.',
72
+ deny: 'All tool calls are blocked. You may only read and discuss.',
73
+ ask: 'Dangerous or destructive commands require your confirmation before execution.'
74
+ };
75
+ return '## Permission Mode\n\nCurrent mode: ' + mode + '\n\n' + (explanations[mode] || '');
76
+ }
77
+ buildProjectInstructions() {
78
+ const cwd = this.config.cwd || process.cwd();
79
+ if (this.config.includeClaudeMd !== false) {
80
+ const paths = [join(cwd, 'CLAUDE.md'), join(cwd, '.claude.md')];
81
+ for (const path of paths) {
82
+ if (existsSync(path)) {
83
+ try {
84
+ const content = readFileSync(path, 'utf-8');
85
+ return '## Project Instructions (from ' + path.split(/[/\\]/).pop() + ')\n\n' + content;
86
+ }
87
+ catch {
88
+ // Ignore
89
+ }
90
+ }
91
+ }
92
+ }
93
+ if (this.config.projectInstructions) {
94
+ return '## Project Instructions\n\n' + this.config.projectInstructions;
95
+ }
96
+ return '';
97
+ }
98
+ buildDateInfo() {
99
+ const now = this.config.date || new Date();
100
+ const iso = now.toISOString().replace('T', ' ').split('.')[0];
101
+ return '## Current Time\n\n' + iso;
102
+ }
103
+ buildOutputFormat() {
104
+ return [
105
+ '## Output Format',
106
+ '',
107
+ '- Use clear section headers for multi-part responses',
108
+ '- Use bullet points for lists',
109
+ '- Use code blocks for code',
110
+ '- Be concise, avoid unnecessary repetition',
111
+ '- If you need multiple steps, explain the plan first'
112
+ ].join('\n');
113
+ }
114
+ setTools(tools) { this.config.tools = tools; return this; }
115
+ setCwd(cwd) { this.config.cwd = cwd; return this; }
116
+ setPermissionMode(mode) { this.config.permissionMode = mode; return this; }
117
+ setProjectInstructions(instructions) { this.config.projectInstructions = instructions; return this; }
118
+ setModel(model) { this.config.model = model; return this; }
119
+ buildToolsFragment() { return this.buildToolInstructions(); }
120
+ injectReminder(reminder) {
121
+ return '\n## Reminder\n\n' + reminder + '\n';
122
+ }
123
+ }
124
+ let globalBuilder = null;
125
+ export function getSystemPromptBuilder(config) {
126
+ if (!globalBuilder)
127
+ globalBuilder = new SystemPromptBuilder(config);
128
+ return globalBuilder;
129
+ }
130
+ export function updateSystemPrompt(tools, permissionMode) {
131
+ if (globalBuilder) {
132
+ if (tools)
133
+ globalBuilder.setTools(tools);
134
+ if (permissionMode)
135
+ globalBuilder.setPermissionMode(permissionMode);
136
+ }
137
+ }
138
+ //# sourceMappingURL=system-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/core/system-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Tool Registry - Manages available tools with context support
3
+ * S02: Enhanced with inputSchema generation and permission metadata
4
+ */
5
+ import { Tool, ToolResult, ToolContext, ToolInputSchema } from './types.js';
6
+ export declare class ToolRegistry {
7
+ private tools;
8
+ private context;
9
+ constructor();
10
+ setContext(ctx: Partial<ToolContext>): void;
11
+ getContext(): ToolContext;
12
+ register(tool: Tool): void;
13
+ unregister(name: string): boolean;
14
+ get(name: string): Tool | undefined;
15
+ list(): string[];
16
+ /**
17
+ * S02: Get tools formatted for AI API
18
+ * Uses inputSchema if available, otherwise builds from parameters
19
+ */
20
+ getToolsForAPI(): {
21
+ type: "function";
22
+ function: {
23
+ name: string;
24
+ description: string;
25
+ parameters: ToolInputSchema;
26
+ };
27
+ }[];
28
+ /**
29
+ * S02: Build JSON Schema from legacy parameters array
30
+ */
31
+ private buildInputSchema;
32
+ /**
33
+ * S02: List all tools with their metadata
34
+ */
35
+ listAll(): {
36
+ name: string;
37
+ description: string;
38
+ permissions: ("read" | "write" | "execute" | "network")[] | undefined;
39
+ tags: string[] | undefined;
40
+ deprecated: string | undefined;
41
+ }[];
42
+ execute(name: string, params: Record<string, any>): Promise<ToolResult>;
43
+ /**
44
+ * S02: Validate params against tool's inputSchema
45
+ */
46
+ private validateParams;
47
+ executeAll(tools: Array<{
48
+ name: string;
49
+ params: Record<string, any>;
50
+ }>): Promise<ToolResult[]>;
51
+ private registerDefaultTools;
52
+ }
53
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/core/tool-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,OAAO,CAAmB;;IAMlC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC;IAIpC,UAAU,IAAI,WAAW;IAIzB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAO1B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,IAAI,IAAI,MAAM,EAAE;IAIhB;;;OAGG;IACH,cAAc;;;;;;;;IAWd;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO;;;;;;;IAUD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAoB7E;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BhB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAUpG,OAAO,CAAC,oBAAoB;CAG7B"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Tool Registry - Manages available tools with context support
3
+ * S02: Enhanced with inputSchema generation and permission metadata
4
+ */
5
+ export class ToolRegistry {
6
+ tools = new Map();
7
+ context = {};
8
+ constructor() {
9
+ this.registerDefaultTools();
10
+ }
11
+ setContext(ctx) {
12
+ this.context = { ...this.context, ...ctx };
13
+ }
14
+ getContext() {
15
+ return this.context;
16
+ }
17
+ register(tool) {
18
+ if (this.tools.has(tool.name)) {
19
+ console.warn(`Tool ${tool.name} already exists, overwriting...`);
20
+ }
21
+ this.tools.set(tool.name, tool);
22
+ }
23
+ unregister(name) {
24
+ return this.tools.delete(name);
25
+ }
26
+ get(name) {
27
+ return this.tools.get(name);
28
+ }
29
+ list() {
30
+ return Array.from(this.tools.keys());
31
+ }
32
+ /**
33
+ * S02: Get tools formatted for AI API
34
+ * Uses inputSchema if available, otherwise builds from parameters
35
+ */
36
+ getToolsForAPI() {
37
+ return Array.from(this.tools.values()).map(tool => ({
38
+ type: 'function',
39
+ function: {
40
+ name: tool.name,
41
+ description: tool.description,
42
+ parameters: tool.inputSchema || this.buildInputSchema(tool)
43
+ }
44
+ }));
45
+ }
46
+ /**
47
+ * S02: Build JSON Schema from legacy parameters array
48
+ */
49
+ buildInputSchema(tool) {
50
+ return {
51
+ type: 'object',
52
+ properties: tool.parameters.reduce((acc, p) => {
53
+ acc[p.name] = {
54
+ type: p.type === 'string' ? 'string'
55
+ : p.type === 'number' ? 'number'
56
+ : p.type === 'boolean' ? 'boolean'
57
+ : 'string',
58
+ description: p.description
59
+ };
60
+ return acc;
61
+ }, {}),
62
+ required: tool.parameters.filter(p => p.required).map(p => p.name)
63
+ };
64
+ }
65
+ /**
66
+ * S02: List all tools with their metadata
67
+ */
68
+ listAll() {
69
+ return Array.from(this.tools.values()).map(t => ({
70
+ name: t.name,
71
+ description: t.description,
72
+ permissions: t.metadata?.permissions,
73
+ tags: t.metadata?.tags,
74
+ deprecated: t.metadata?.deprecated
75
+ }));
76
+ }
77
+ async execute(name, params) {
78
+ const tool = this.tools.get(name);
79
+ if (!tool) {
80
+ return { success: false, error: `Tool "${name}" not found` };
81
+ }
82
+ // S02: Validate params against inputSchema
83
+ const validationError = this.validateParams(tool, params);
84
+ if (validationError) {
85
+ return { success: false, error: validationError };
86
+ }
87
+ try {
88
+ return await tool.execute(params, this.context);
89
+ }
90
+ catch (error) {
91
+ return { success: false, error: error.message };
92
+ }
93
+ }
94
+ /**
95
+ * S02: Validate params against tool's inputSchema
96
+ */
97
+ validateParams(tool, params) {
98
+ const schema = tool.inputSchema || this.buildInputSchema(tool);
99
+ // Check required
100
+ if (schema.required) {
101
+ for (const req of schema.required) {
102
+ if (params[req] === undefined || params[req] === null) {
103
+ return `Missing required parameter: ${req}`;
104
+ }
105
+ }
106
+ }
107
+ // Check types
108
+ for (const [key, value] of Object.entries(params)) {
109
+ const prop = schema.properties[key];
110
+ if (prop && value !== undefined) {
111
+ const expectedType = prop.type;
112
+ const actualType = typeof value;
113
+ // Type coercion for string/number
114
+ if (expectedType === 'number' && actualType === 'string' && !isNaN(Number(value))) {
115
+ // Auto-coerce strings to numbers — ok
116
+ }
117
+ else if (actualType !== expectedType) {
118
+ return `Invalid type for ${key}: expected ${expectedType}, got ${actualType}`;
119
+ }
120
+ }
121
+ }
122
+ return null;
123
+ }
124
+ async executeAll(tools) {
125
+ const results = [];
126
+ for (const { name, params } of tools) {
127
+ const result = await this.execute(name, params);
128
+ results.push(result);
129
+ if (!result.success)
130
+ break;
131
+ }
132
+ return results;
133
+ }
134
+ registerDefaultTools() {
135
+ // Tools registered externally via AIEngine
136
+ }
137
+ }
138
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/core/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Type definitions for Thatgfsj Code
3
+ * S02: Enhanced Tool interface with Builder pattern, inputSchema, and metadata
4
+ */
5
+ export type Role = 'system' | 'user' | 'assistant' | 'tool';
6
+ export interface ChatMessage {
7
+ role: Role;
8
+ content: string;
9
+ name?: string;
10
+ tool_calls?: ToolCall[];
11
+ tool_call_id?: string;
12
+ reasoning_content?: string;
13
+ }
14
+ export interface ToolCall {
15
+ id: string;
16
+ type: 'function';
17
+ function: {
18
+ name: string;
19
+ arguments: string;
20
+ };
21
+ }
22
+ export interface AIResponse {
23
+ content: string;
24
+ role: 'assistant';
25
+ usage?: {
26
+ prompt_tokens: number;
27
+ completion_tokens: number;
28
+ total_tokens: number;
29
+ };
30
+ tool_calls?: ToolCall[];
31
+ reasoning_content?: string;
32
+ }
33
+ export interface AIConfig {
34
+ model: string;
35
+ apiKey?: string;
36
+ temperature?: number;
37
+ maxTokens?: number;
38
+ baseUrl?: string;
39
+ provider?: 'minimax' | 'openai' | 'siliconflow' | 'anthropic' | 'ollama' | 'custom' | 'gemini' | 'kimi' | 'deepseek' | 'ernie';
40
+ }
41
+ /**
42
+ * Tool parameter with type support
43
+ */
44
+ export interface ToolParameter {
45
+ name: string;
46
+ type: string;
47
+ description: string;
48
+ required: boolean;
49
+ default?: any;
50
+ enum?: string[];
51
+ }
52
+ /**
53
+ * S02: Input Schema — JSON Schema style tool input definition
54
+ * Claude Code uses this for structured tool parameter validation
55
+ */
56
+ export interface ToolInputSchema {
57
+ type: 'object';
58
+ properties: Record<string, {
59
+ type: string;
60
+ description: string;
61
+ default?: any;
62
+ enum?: string[];
63
+ }>;
64
+ required?: string[];
65
+ }
66
+ /**
67
+ * S02: Tool metadata — extra info beyond name/description
68
+ */
69
+ export interface ToolMetadata {
70
+ /** Permission category: read, write, execute, network */
71
+ permissions?: ('read' | 'write' | 'execute' | 'network')[];
72
+ /** Max execution time in ms */
73
+ maxDuration?: number;
74
+ /** Tags for categorization */
75
+ tags?: string[];
76
+ /** Version */
77
+ version?: string;
78
+ /** Deprecation notice */
79
+ deprecated?: string;
80
+ }
81
+ /**
82
+ * S02: Tool interface with inputSchema + metadata
83
+ * Both 'parameters' (legacy) and 'inputSchema' (new) are supported
84
+ */
85
+ export interface Tool {
86
+ name: string;
87
+ description: string;
88
+ /** Legacy parameter list (still used by existing tools) */
89
+ parameters: ToolParameter[];
90
+ /** S02: JSON Schema for tool input (computed from parameters) */
91
+ inputSchema?: ToolInputSchema;
92
+ /** S02: Metadata for permissions, tags, etc. */
93
+ metadata?: ToolMetadata;
94
+ execute(params: Record<string, any>, ctx?: ToolContext): Promise<ToolResult>;
95
+ }
96
+ /**
97
+ * S02: Enriched execution context
98
+ */
99
+ export interface ToolContext {
100
+ sessionId?: string;
101
+ workingDirectory?: string;
102
+ confirmAction?: (msg: string) => Promise<boolean>;
103
+ signal?: AbortSignal;
104
+ toolCallId?: string;
105
+ }
106
+ export { ToolParameter as ToolParam };
107
+ /**
108
+ * S02: Tool Builder — fluent API to construct tools
109
+ */
110
+ export declare class ToolBuilder {
111
+ private _name;
112
+ private _description;
113
+ private _parameters;
114
+ private _inputSchema;
115
+ private _metadata;
116
+ private _fn?;
117
+ name(n: string): this;
118
+ description(d: string): this;
119
+ param(p: ToolParameter): this;
120
+ stringParam(name: string, description: string, required?: boolean, defaultVal?: string): this;
121
+ numberParam(name: string, description: string, required?: boolean, defaultVal?: number): this;
122
+ booleanParam(name: string, description: string, required?: boolean, defaultVal?: boolean): this;
123
+ required(...names: string[]): this;
124
+ meta(m: ToolMetadata): this;
125
+ permissions(...perms: ('read' | 'write' | 'execute' | 'network')[]): this;
126
+ tags(...t: string[]): this;
127
+ handle(fn: (params: Record<string, any>, ctx: ToolContext) => Promise<ToolResult>): this;
128
+ build(): Tool;
129
+ }
130
+ export interface ToolResult {
131
+ success: boolean;
132
+ output?: string;
133
+ error?: string;
134
+ data?: any;
135
+ }
136
+ export interface Session {
137
+ id: string;
138
+ messages: ChatMessage[];
139
+ createdAt: Date;
140
+ lastActiveAt: Date;
141
+ }
142
+ export interface Config {
143
+ model: string;
144
+ apiKey: string;
145
+ temperature: number;
146
+ maxTokens: number;
147
+ provider?: 'minimax' | 'openai' | 'siliconflow' | 'anthropic' | 'ollama' | 'custom' | 'gemini' | 'kimi' | 'deepseek' | 'ernie';
148
+ baseUrl?: string;
149
+ }
150
+ export declare const PROVIDERS: {
151
+ readonly minimax: {
152
+ readonly name: "MiniMax";
153
+ readonly baseUrl: "https://api.minimax.io/anthropic/v1";
154
+ readonly defaultModel: "MiniMax-M2.5";
155
+ readonly envKeys: readonly ["MINIMAX_API_KEY", "OPENAI_API_KEY"];
156
+ };
157
+ readonly siliconflow: {
158
+ readonly name: "SiliconFlow (硅基流动)";
159
+ readonly baseUrl: "https://api.siliconflow.cn/v1";
160
+ readonly defaultModel: "Qwen/Qwen2.5-7B-Instruct";
161
+ readonly envKeys: readonly ["SILICONFLOW_API_KEY", "OPENAI_API_KEY"];
162
+ };
163
+ readonly openai: {
164
+ readonly name: "OpenAI";
165
+ readonly baseUrl: "https://api.openai.com/v1";
166
+ readonly defaultModel: "gpt-4o-mini";
167
+ readonly envKeys: readonly ["OPENAI_API_KEY"];
168
+ };
169
+ readonly anthropic: {
170
+ readonly name: "Anthropic";
171
+ readonly baseUrl: "https://api.anthropic.com/v1";
172
+ readonly defaultModel: "claude-3-haiku-20240307";
173
+ readonly envKeys: readonly ["ANTHROPIC_API_KEY"];
174
+ };
175
+ readonly ollama: {
176
+ readonly name: "Ollama (Local)";
177
+ readonly baseUrl: string;
178
+ readonly defaultModel: "llama2";
179
+ readonly envKeys: readonly [];
180
+ };
181
+ readonly gemini: {
182
+ readonly name: "Google Gemini";
183
+ readonly baseUrl: "https://generativelanguage.googleapis.com/v1beta";
184
+ readonly defaultModel: "gemini-1.5-flash";
185
+ readonly envKeys: readonly ["GEMINI_API_KEY"];
186
+ };
187
+ readonly kimi: {
188
+ readonly name: "Kimi (Moonshot AI)";
189
+ readonly baseUrl: "https://api.moonshot.cn/v1";
190
+ readonly defaultModel: "moonshot-v1-8k";
191
+ readonly envKeys: readonly ["KIMI_API_KEY", "MOONSHOT_API_KEY"];
192
+ };
193
+ readonly deepseek: {
194
+ readonly name: "DeepSeek";
195
+ readonly baseUrl: "https://api.deepseek.com/v1";
196
+ readonly defaultModel: "deepseek-chat";
197
+ readonly envKeys: readonly ["DEEPSEEK_API_KEY"];
198
+ };
199
+ readonly ernie: {
200
+ readonly name: "Baidu ERNIE (文心一言)";
201
+ readonly baseUrl: "https://aip.baidubce.com/rpc/2.0/ai_custom/v1";
202
+ readonly defaultModel: "ernie-4.0-8k";
203
+ readonly envKeys: readonly ["ERNIE_API_KEY", "BAIDU_API_KEY"];
204
+ };
205
+ };
206
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}