@phuetz/code-buddy 0.1.24 → 0.1.26

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 (258) hide show
  1. package/README.md +1049 -741
  2. package/dist/agent/codebuddy-agent.d.ts +5 -0
  3. package/dist/agent/codebuddy-agent.js +46 -1
  4. package/dist/agent/codebuddy-agent.js.map +1 -1
  5. package/dist/agent/execution/agent-executor.d.ts +12 -0
  6. package/dist/agent/execution/agent-executor.js +147 -6
  7. package/dist/agent/execution/agent-executor.js.map +1 -1
  8. package/dist/agent/lessons-tracker.d.ts +50 -0
  9. package/dist/agent/lessons-tracker.js +234 -0
  10. package/dist/agent/lessons-tracker.js.map +1 -0
  11. package/dist/agent/message-queue.d.ts +39 -2
  12. package/dist/agent/message-queue.js +67 -2
  13. package/dist/agent/message-queue.js.map +1 -1
  14. package/dist/agent/middleware/index.d.ts +1 -0
  15. package/dist/agent/middleware/index.js +1 -0
  16. package/dist/agent/middleware/index.js.map +1 -1
  17. package/dist/agent/middleware/workflow-guard.d.ts +21 -0
  18. package/dist/agent/middleware/workflow-guard.js +94 -0
  19. package/dist/agent/middleware/workflow-guard.js.map +1 -0
  20. package/dist/agent/repo-profiler.d.ts +61 -0
  21. package/dist/agent/repo-profiler.js +295 -0
  22. package/dist/agent/repo-profiler.js.map +1 -0
  23. package/dist/agent/response-constraint.d.ts +61 -0
  24. package/dist/agent/response-constraint.js +91 -0
  25. package/dist/agent/response-constraint.js.map +1 -0
  26. package/dist/agent/todo-tracker.d.ts +67 -0
  27. package/dist/agent/todo-tracker.js +245 -0
  28. package/dist/agent/todo-tracker.js.map +1 -0
  29. package/dist/agent/tool-handler.d.ts +11 -0
  30. package/dist/agent/tool-handler.js +79 -1
  31. package/dist/agent/tool-handler.js.map +1 -1
  32. package/dist/agent/types.d.ts +20 -2
  33. package/dist/agent/wide-research.d.ts +93 -0
  34. package/dist/agent/wide-research.js +232 -0
  35. package/dist/agent/wide-research.js.map +1 -0
  36. package/dist/channels/index.d.ts +2 -0
  37. package/dist/channels/index.js +2 -0
  38. package/dist/channels/index.js.map +1 -1
  39. package/dist/channels/pro/callback-router.d.ts +54 -0
  40. package/dist/channels/pro/callback-router.js +178 -0
  41. package/dist/channels/pro/callback-router.js.map +1 -0
  42. package/dist/channels/pro/ci-watcher.d.ts +86 -0
  43. package/dist/channels/pro/ci-watcher.js +343 -0
  44. package/dist/channels/pro/ci-watcher.js.map +1 -0
  45. package/dist/channels/pro/diff-first.d.ts +63 -0
  46. package/dist/channels/pro/diff-first.js +187 -0
  47. package/dist/channels/pro/diff-first.js.map +1 -0
  48. package/dist/channels/pro/enhanced-commands.d.ts +83 -0
  49. package/dist/channels/pro/enhanced-commands.js +218 -0
  50. package/dist/channels/pro/enhanced-commands.js.map +1 -0
  51. package/dist/channels/pro/index.d.ts +19 -0
  52. package/dist/channels/pro/index.js +21 -0
  53. package/dist/channels/pro/index.js.map +1 -0
  54. package/dist/channels/pro/pro-features.d.ts +79 -0
  55. package/dist/channels/pro/pro-features.js +203 -0
  56. package/dist/channels/pro/pro-features.js.map +1 -0
  57. package/dist/channels/pro/run-commands.d.ts +59 -0
  58. package/dist/channels/pro/run-commands.js +122 -0
  59. package/dist/channels/pro/run-commands.js.map +1 -0
  60. package/dist/channels/pro/run-tracker.d.ts +74 -0
  61. package/dist/channels/pro/run-tracker.js +252 -0
  62. package/dist/channels/pro/run-tracker.js.map +1 -0
  63. package/dist/channels/pro/scoped-auth.d.ts +97 -0
  64. package/dist/channels/pro/scoped-auth.js +340 -0
  65. package/dist/channels/pro/scoped-auth.js.map +1 -0
  66. package/dist/channels/pro/text-formatter.d.ts +27 -0
  67. package/dist/channels/pro/text-formatter.js +269 -0
  68. package/dist/channels/pro/text-formatter.js.map +1 -0
  69. package/dist/channels/pro/types.d.ts +242 -0
  70. package/dist/channels/pro/types.js +14 -0
  71. package/dist/channels/pro/types.js.map +1 -0
  72. package/dist/channels/streaming-policy.d.ts +66 -0
  73. package/dist/channels/streaming-policy.js +266 -0
  74. package/dist/channels/streaming-policy.js.map +1 -0
  75. package/dist/channels/telegram/ci-watcher.d.ts +5 -0
  76. package/dist/channels/telegram/ci-watcher.js +5 -0
  77. package/dist/channels/telegram/ci-watcher.js.map +1 -0
  78. package/dist/channels/telegram/client.d.ts +28 -0
  79. package/dist/channels/telegram/client.js +147 -1
  80. package/dist/channels/telegram/client.js.map +1 -1
  81. package/dist/channels/telegram/diff-first.d.ts +5 -0
  82. package/dist/channels/telegram/diff-first.js +5 -0
  83. package/dist/channels/telegram/diff-first.js.map +1 -0
  84. package/dist/channels/telegram/enhanced-commands.d.ts +6 -0
  85. package/dist/channels/telegram/enhanced-commands.js +6 -0
  86. package/dist/channels/telegram/enhanced-commands.js.map +1 -0
  87. package/dist/channels/telegram/index.d.ts +6 -0
  88. package/dist/channels/telegram/index.js +6 -0
  89. package/dist/channels/telegram/index.js.map +1 -1
  90. package/dist/channels/telegram/pro-formatter.d.ts +30 -0
  91. package/dist/channels/telegram/pro-formatter.js +276 -0
  92. package/dist/channels/telegram/pro-formatter.js.map +1 -0
  93. package/dist/channels/telegram/run-commands.d.ts +5 -0
  94. package/dist/channels/telegram/run-commands.js +6 -0
  95. package/dist/channels/telegram/run-commands.js.map +1 -0
  96. package/dist/channels/telegram/run-tracker.d.ts +5 -0
  97. package/dist/channels/telegram/run-tracker.js +5 -0
  98. package/dist/channels/telegram/run-tracker.js.map +1 -0
  99. package/dist/channels/telegram/scoped-auth.d.ts +6 -0
  100. package/dist/channels/telegram/scoped-auth.js +5 -0
  101. package/dist/channels/telegram/scoped-auth.js.map +1 -0
  102. package/dist/channels/telegram/types.d.ts +34 -0
  103. package/dist/codebuddy/client.js +14 -1
  104. package/dist/codebuddy/client.js.map +1 -1
  105. package/dist/commands/dev/index.d.ts +12 -0
  106. package/dist/commands/dev/index.js +231 -0
  107. package/dist/commands/dev/index.js.map +1 -0
  108. package/dist/commands/dev/workflows.d.ts +31 -0
  109. package/dist/commands/dev/workflows.js +214 -0
  110. package/dist/commands/dev/workflows.js.map +1 -0
  111. package/dist/commands/execpolicy.d.ts +17 -0
  112. package/dist/commands/execpolicy.js +155 -0
  113. package/dist/commands/execpolicy.js.map +1 -0
  114. package/dist/commands/knowledge.d.ts +13 -0
  115. package/dist/commands/knowledge.js +142 -0
  116. package/dist/commands/knowledge.js.map +1 -0
  117. package/dist/commands/lessons.d.ts +11 -0
  118. package/dist/commands/lessons.js +129 -0
  119. package/dist/commands/lessons.js.map +1 -0
  120. package/dist/commands/pairing.d.ts +14 -0
  121. package/dist/commands/pairing.js +132 -0
  122. package/dist/commands/pairing.js.map +1 -0
  123. package/dist/commands/research/index.d.ts +13 -0
  124. package/dist/commands/research/index.js +91 -0
  125. package/dist/commands/research/index.js.map +1 -0
  126. package/dist/commands/run-cli/index.d.ts +11 -0
  127. package/dist/commands/run-cli/index.js +49 -0
  128. package/dist/commands/run-cli/index.js.map +1 -0
  129. package/dist/commands/todos.d.ts +9 -0
  130. package/dist/commands/todos.js +119 -0
  131. package/dist/commands/todos.js.map +1 -0
  132. package/dist/config/toml-config.d.ts +21 -0
  133. package/dist/config/toml-config.js +15 -0
  134. package/dist/config/toml-config.js.map +1 -1
  135. package/dist/context/enhanced-compression.js +12 -1
  136. package/dist/context/enhanced-compression.js.map +1 -1
  137. package/dist/context/observation-variator.d.ts +44 -0
  138. package/dist/context/observation-variator.js +83 -0
  139. package/dist/context/observation-variator.js.map +1 -0
  140. package/dist/context/precompaction-flush.d.ts +40 -0
  141. package/dist/context/precompaction-flush.js +134 -0
  142. package/dist/context/precompaction-flush.js.map +1 -0
  143. package/dist/context/restorable-compression.d.ts +80 -0
  144. package/dist/context/restorable-compression.js +228 -0
  145. package/dist/context/restorable-compression.js.map +1 -0
  146. package/dist/daemon/daily-reset.d.ts +77 -0
  147. package/dist/daemon/daily-reset.js +175 -0
  148. package/dist/daemon/daily-reset.js.map +1 -0
  149. package/dist/daemon/index.d.ts +1 -0
  150. package/dist/daemon/index.js +1 -0
  151. package/dist/daemon/index.js.map +1 -1
  152. package/dist/index.js +53 -0
  153. package/dist/index.js.map +1 -1
  154. package/dist/knowledge/knowledge-manager.d.ts +77 -0
  155. package/dist/knowledge/knowledge-manager.js +244 -0
  156. package/dist/knowledge/knowledge-manager.js.map +1 -0
  157. package/dist/observability/run-store.d.ts +133 -0
  158. package/dist/observability/run-store.js +419 -0
  159. package/dist/observability/run-store.js.map +1 -0
  160. package/dist/observability/run-viewer.d.ts +33 -0
  161. package/dist/observability/run-viewer.js +254 -0
  162. package/dist/observability/run-viewer.js.map +1 -0
  163. package/dist/optimization/cache-breakpoints.d.ts +52 -0
  164. package/dist/optimization/cache-breakpoints.js +97 -0
  165. package/dist/optimization/cache-breakpoints.js.map +1 -0
  166. package/dist/persistence/session-store.d.ts +3 -1
  167. package/dist/persistence/session-store.js +1 -1
  168. package/dist/persistence/session-store.js.map +1 -1
  169. package/dist/prompts/system-base.js +51 -7
  170. package/dist/prompts/system-base.js.map +1 -1
  171. package/dist/prompts/variation-injector.d.ts +55 -0
  172. package/dist/prompts/variation-injector.js +171 -0
  173. package/dist/prompts/variation-injector.js.map +1 -0
  174. package/dist/prompts/workflow-rules.d.ts +10 -0
  175. package/dist/prompts/workflow-rules.js +79 -0
  176. package/dist/prompts/workflow-rules.js.map +1 -0
  177. package/dist/sandbox/execpolicy.d.ts +45 -0
  178. package/dist/sandbox/execpolicy.js +80 -0
  179. package/dist/sandbox/execpolicy.js.map +1 -1
  180. package/dist/sandbox/os-sandbox.d.ts +25 -0
  181. package/dist/sandbox/os-sandbox.js +73 -0
  182. package/dist/sandbox/os-sandbox.js.map +1 -1
  183. package/dist/security/security-audit.d.ts +10 -0
  184. package/dist/security/security-audit.js +116 -0
  185. package/dist/security/security-audit.js.map +1 -1
  186. package/dist/security/shell-env-policy.d.ts +45 -0
  187. package/dist/security/shell-env-policy.js +141 -0
  188. package/dist/security/shell-env-policy.js.map +1 -0
  189. package/dist/security/ssrf-guard.d.ts +61 -0
  190. package/dist/security/ssrf-guard.js +382 -0
  191. package/dist/security/ssrf-guard.js.map +1 -0
  192. package/dist/security/write-policy.d.ts +57 -0
  193. package/dist/security/write-policy.js +117 -0
  194. package/dist/security/write-policy.js.map +1 -0
  195. package/dist/services/prompt-builder.js +37 -0
  196. package/dist/services/prompt-builder.js.map +1 -1
  197. package/dist/themes/theme-schema.d.ts +10 -10
  198. package/dist/tools/ask-human-tool.d.ts +62 -0
  199. package/dist/tools/ask-human-tool.js +112 -0
  200. package/dist/tools/ask-human-tool.js.map +1 -0
  201. package/dist/tools/bash/bash-tool.d.ts +15 -0
  202. package/dist/tools/bash/bash-tool.js +62 -0
  203. package/dist/tools/bash/bash-tool.js.map +1 -1
  204. package/dist/tools/bash/command-validator.d.ts +1 -0
  205. package/dist/tools/bash/command-validator.js +5 -0
  206. package/dist/tools/bash/command-validator.js.map +1 -1
  207. package/dist/tools/create-skill-tool.d.ts +87 -0
  208. package/dist/tools/create-skill-tool.js +142 -0
  209. package/dist/tools/create-skill-tool.js.map +1 -0
  210. package/dist/tools/fetch-tool.js +5 -3
  211. package/dist/tools/fetch-tool.js.map +1 -1
  212. package/dist/tools/hooks/default-hooks.js +24 -23
  213. package/dist/tools/hooks/default-hooks.js.map +1 -1
  214. package/dist/tools/index.d.ts +1 -0
  215. package/dist/tools/index.js +1 -0
  216. package/dist/tools/index.js.map +1 -1
  217. package/dist/tools/plan-tool.d.ts +22 -0
  218. package/dist/tools/plan-tool.js +128 -0
  219. package/dist/tools/plan-tool.js.map +1 -0
  220. package/dist/tools/registry/attention-tools.d.ts +32 -0
  221. package/dist/tools/registry/attention-tools.js +225 -0
  222. package/dist/tools/registry/attention-tools.js.map +1 -0
  223. package/dist/tools/registry/index.d.ts +9 -1
  224. package/dist/tools/registry/index.js +30 -2
  225. package/dist/tools/registry/index.js.map +1 -1
  226. package/dist/tools/registry/knowledge-tools.d.ts +46 -0
  227. package/dist/tools/registry/knowledge-tools.js +293 -0
  228. package/dist/tools/registry/knowledge-tools.js.map +1 -0
  229. package/dist/tools/registry/lessons-tools.d.ts +48 -0
  230. package/dist/tools/registry/lessons-tools.js +359 -0
  231. package/dist/tools/registry/lessons-tools.js.map +1 -0
  232. package/dist/tools/registry/plan-tools.d.ts +2 -0
  233. package/dist/tools/registry/plan-tools.js +7 -0
  234. package/dist/tools/registry/plan-tools.js.map +1 -0
  235. package/dist/tools/registry/script-tools.d.ts +2 -0
  236. package/dist/tools/registry/script-tools.js +7 -0
  237. package/dist/tools/registry/script-tools.js.map +1 -0
  238. package/dist/tools/registry/tool-aliases.d.ts +44 -0
  239. package/dist/tools/registry/tool-aliases.js +130 -0
  240. package/dist/tools/registry/tool-aliases.js.map +1 -0
  241. package/dist/tools/run-script-tool.d.ts +13 -0
  242. package/dist/tools/run-script-tool.js +146 -0
  243. package/dist/tools/run-script-tool.js.map +1 -0
  244. package/dist/tools/web-search.d.ts +25 -0
  245. package/dist/tools/web-search.js +68 -6
  246. package/dist/tools/web-search.js.map +1 -1
  247. package/dist/utils/config-validation/schema.d.ts +2 -2
  248. package/dist/utils/debug-logger.d.ts +1 -1
  249. package/dist/utils/rtk-compressor.d.ts +13 -10
  250. package/dist/utils/rtk-compressor.js +83 -34
  251. package/dist/utils/rtk-compressor.js.map +1 -1
  252. package/dist/utils/stable-json.d.ts +27 -0
  253. package/dist/utils/stable-json.js +50 -0
  254. package/dist/utils/stable-json.js.map +1 -0
  255. package/dist/webhooks/webhook-manager.d.ts +7 -0
  256. package/dist/webhooks/webhook-manager.js +29 -0
  257. package/dist/webhooks/webhook-manager.js.map +1 -1
  258. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-tools.js","sourceRoot":"","sources":["../../../src/tools/registry/knowledge-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Lessons Tool Adapters
3
+ *
4
+ * ITool-compliant adapters for the self-improvement loop:
5
+ * - LessonsAddTool (`lessons_add`) — capture a lesson after a correction
6
+ * - LessonsSearchTool (`lessons_search`) — find relevant lessons before a task
7
+ * - LessonsListTool (`lessons_list`) — list all lessons (with optional filter)
8
+ * - TaskVerifyTool (`task_verify`) — run tsc/tests/lint verification contract
9
+ */
10
+ import type { ToolResult } from '../../types/index.js';
11
+ import type { ITool, ToolSchema, IToolMetadata, IValidationResult } from './types.js';
12
+ export declare class LessonsAddTool implements ITool {
13
+ readonly name = "lessons_add";
14
+ readonly description: string;
15
+ execute(input: Record<string, unknown>): Promise<ToolResult>;
16
+ getSchema(): ToolSchema;
17
+ validate(input: Record<string, unknown>): IValidationResult;
18
+ getMetadata(): IToolMetadata;
19
+ isAvailable(): Promise<boolean>;
20
+ }
21
+ export declare class LessonsSearchTool implements ITool {
22
+ readonly name = "lessons_search";
23
+ readonly description: string;
24
+ execute(input: Record<string, unknown>): Promise<ToolResult>;
25
+ getSchema(): ToolSchema;
26
+ validate(input: Record<string, unknown>): IValidationResult;
27
+ getMetadata(): IToolMetadata;
28
+ isAvailable(): Promise<boolean>;
29
+ }
30
+ export declare class LessonsListTool implements ITool {
31
+ readonly name = "lessons_list";
32
+ readonly description = "List all lessons learned, optionally filtered by category (PATTERN|RULE|CONTEXT|INSIGHT).";
33
+ execute(input: Record<string, unknown>): Promise<ToolResult>;
34
+ getSchema(): ToolSchema;
35
+ validate(_input: Record<string, unknown>): IValidationResult;
36
+ getMetadata(): IToolMetadata;
37
+ isAvailable(): Promise<boolean>;
38
+ }
39
+ export declare class TaskVerifyTool implements ITool {
40
+ readonly name = "task_verify";
41
+ readonly description: string;
42
+ execute(input: Record<string, unknown>): Promise<ToolResult>;
43
+ getSchema(): ToolSchema;
44
+ validate(_input: Record<string, unknown>): IValidationResult;
45
+ getMetadata(): IToolMetadata;
46
+ isAvailable(): Promise<boolean>;
47
+ }
48
+ export declare function createLessonsTools(): ITool[];
@@ -0,0 +1,359 @@
1
+ /**
2
+ * Lessons Tool Adapters
3
+ *
4
+ * ITool-compliant adapters for the self-improvement loop:
5
+ * - LessonsAddTool (`lessons_add`) — capture a lesson after a correction
6
+ * - LessonsSearchTool (`lessons_search`) — find relevant lessons before a task
7
+ * - LessonsListTool (`lessons_list`) — list all lessons (with optional filter)
8
+ * - TaskVerifyTool (`task_verify`) — run tsc/tests/lint verification contract
9
+ */
10
+ import { spawnSync } from 'child_process';
11
+ import { getLessonsTracker } from '../../agent/lessons-tracker.js';
12
+ // ============================================================================
13
+ // LessonsAddTool
14
+ // ============================================================================
15
+ export class LessonsAddTool {
16
+ name = 'lessons_add';
17
+ description = [
18
+ 'Capture a lesson learned into the persistent lessons.md file.',
19
+ 'Use category=PATTERN for "what went wrong → correct approach" after a user correction.',
20
+ 'Use category=RULE for invariants to always follow.',
21
+ 'Use category=CONTEXT for project/domain-specific facts.',
22
+ 'Use category=INSIGHT for non-obvious observations.',
23
+ 'Call this immediately after any user correction to prevent the same mistake.',
24
+ ].join(' ');
25
+ async execute(input) {
26
+ const category = input.category ?? 'INSIGHT';
27
+ const content = input.content;
28
+ const context = input.context;
29
+ const source = input.source ?? 'manual';
30
+ if (!content)
31
+ return { success: false, error: 'content is required' };
32
+ const validCats = ['PATTERN', 'RULE', 'CONTEXT', 'INSIGHT'];
33
+ if (!validCats.includes(category)) {
34
+ return { success: false, error: `category must be one of: ${validCats.join(', ')}` };
35
+ }
36
+ try {
37
+ const tracker = getLessonsTracker(process.cwd());
38
+ const item = tracker.add(category, content, source, context);
39
+ return {
40
+ success: true,
41
+ output: `Lesson saved [${item.id}] (${category}): ${content}`,
42
+ };
43
+ }
44
+ catch (err) {
45
+ return {
46
+ success: false,
47
+ error: `lessons_add failed: ${err instanceof Error ? err.message : String(err)}`,
48
+ };
49
+ }
50
+ }
51
+ getSchema() {
52
+ return {
53
+ name: this.name,
54
+ description: this.description,
55
+ parameters: {
56
+ type: 'object',
57
+ properties: {
58
+ category: {
59
+ type: 'string',
60
+ enum: ['PATTERN', 'RULE', 'CONTEXT', 'INSIGHT'],
61
+ description: 'Lesson category',
62
+ },
63
+ content: {
64
+ type: 'string',
65
+ description: 'The lesson content. For PATTERN: "[what went wrong] → [correct behaviour]"',
66
+ },
67
+ context: {
68
+ type: 'string',
69
+ description: 'Optional domain context (e.g. "TypeScript", "bash", "React")',
70
+ },
71
+ source: {
72
+ type: 'string',
73
+ enum: ['user_correction', 'self_observed', 'manual'],
74
+ description: 'Source of this lesson (default: manual)',
75
+ },
76
+ },
77
+ required: ['content'],
78
+ },
79
+ };
80
+ }
81
+ validate(input) {
82
+ if (!input.content) {
83
+ return { isValid: false, errors: ['content is required'] };
84
+ }
85
+ const validCats = ['PATTERN', 'RULE', 'CONTEXT', 'INSIGHT'];
86
+ if (input.category && !validCats.includes(input.category)) {
87
+ return { isValid: false, errors: [`category must be one of: ${validCats.join(', ')}`] };
88
+ }
89
+ return { isValid: true, errors: [] };
90
+ }
91
+ getMetadata() {
92
+ return {
93
+ name: this.name,
94
+ version: '1.0.0',
95
+ author: 'Code Buddy',
96
+ category: 'planning',
97
+ tags: ['lessons', 'self-improvement', 'patterns', 'learning'],
98
+ };
99
+ }
100
+ async isAvailable() {
101
+ return true;
102
+ }
103
+ }
104
+ // ============================================================================
105
+ // LessonsSearchTool
106
+ // ============================================================================
107
+ export class LessonsSearchTool {
108
+ name = 'lessons_search';
109
+ description = [
110
+ 'Search lessons learned by keyword and optional category filter.',
111
+ 'Call this before starting tasks similar to previous ones to avoid repeating mistakes.',
112
+ 'Returns matching lessons sorted by recency.',
113
+ ].join(' ');
114
+ async execute(input) {
115
+ const query = input.query;
116
+ const category = input.category;
117
+ const limit = Math.min(Number(input.limit ?? 10), 50);
118
+ if (!query)
119
+ return { success: false, error: 'query is required' };
120
+ try {
121
+ const tracker = getLessonsTracker(process.cwd());
122
+ const results = tracker.search(query, category).slice(0, limit);
123
+ if (results.length === 0) {
124
+ return { success: true, output: `No lessons found matching "${query}".` };
125
+ }
126
+ const lines = results.map(l => `[${l.id}] **${l.category}** ${l.context ? `_(${l.context})_ ` : ''}${l.content}`);
127
+ return { success: true, output: `Found ${results.length} lesson(s):\n\n${lines.join('\n')}` };
128
+ }
129
+ catch (err) {
130
+ return {
131
+ success: false,
132
+ error: `lessons_search failed: ${err instanceof Error ? err.message : String(err)}`,
133
+ };
134
+ }
135
+ }
136
+ getSchema() {
137
+ return {
138
+ name: this.name,
139
+ description: this.description,
140
+ parameters: {
141
+ type: 'object',
142
+ properties: {
143
+ query: {
144
+ type: 'string',
145
+ description: 'Keyword(s) to search for in lesson content',
146
+ },
147
+ category: {
148
+ type: 'string',
149
+ enum: ['PATTERN', 'RULE', 'CONTEXT', 'INSIGHT'],
150
+ description: 'Optional: filter to a specific category',
151
+ },
152
+ limit: {
153
+ type: 'number',
154
+ description: 'Maximum number of results (default: 10)',
155
+ },
156
+ },
157
+ required: ['query'],
158
+ },
159
+ };
160
+ }
161
+ validate(input) {
162
+ if (!input.query) {
163
+ return { isValid: false, errors: ['query is required'] };
164
+ }
165
+ return { isValid: true, errors: [] };
166
+ }
167
+ getMetadata() {
168
+ return {
169
+ name: this.name,
170
+ version: '1.0.0',
171
+ author: 'Code Buddy',
172
+ category: 'planning',
173
+ tags: ['lessons', 'search', 'self-improvement'],
174
+ };
175
+ }
176
+ async isAvailable() {
177
+ return true;
178
+ }
179
+ }
180
+ // ============================================================================
181
+ // LessonsListTool
182
+ // ============================================================================
183
+ export class LessonsListTool {
184
+ name = 'lessons_list';
185
+ description = 'List all lessons learned, optionally filtered by category (PATTERN|RULE|CONTEXT|INSIGHT).';
186
+ async execute(input) {
187
+ const category = input.category;
188
+ try {
189
+ const tracker = getLessonsTracker(process.cwd());
190
+ const items = tracker.list(category);
191
+ if (items.length === 0) {
192
+ return { success: true, output: 'No lessons recorded yet.' };
193
+ }
194
+ const lines = items.map(l => `[${l.id}] **${l.category}** ${l.context ? `_(${l.context})_ ` : ''}${l.content}`);
195
+ return { success: true, output: `${items.length} lesson(s):\n\n${lines.join('\n')}` };
196
+ }
197
+ catch (err) {
198
+ return {
199
+ success: false,
200
+ error: `lessons_list failed: ${err instanceof Error ? err.message : String(err)}`,
201
+ };
202
+ }
203
+ }
204
+ getSchema() {
205
+ return {
206
+ name: this.name,
207
+ description: this.description,
208
+ parameters: {
209
+ type: 'object',
210
+ properties: {
211
+ category: {
212
+ type: 'string',
213
+ enum: ['PATTERN', 'RULE', 'CONTEXT', 'INSIGHT'],
214
+ description: 'Optional: filter to a specific category',
215
+ },
216
+ },
217
+ required: [],
218
+ },
219
+ };
220
+ }
221
+ validate(_input) {
222
+ return { isValid: true, errors: [] };
223
+ }
224
+ getMetadata() {
225
+ return {
226
+ name: this.name,
227
+ version: '1.0.0',
228
+ author: 'Code Buddy',
229
+ category: 'planning',
230
+ tags: ['lessons', 'list', 'self-improvement'],
231
+ };
232
+ }
233
+ async isAvailable() {
234
+ return true;
235
+ }
236
+ }
237
+ function runCheck(cmd, args, cwd, timeoutMs = 60_000) {
238
+ const result = spawnSync(cmd, args, {
239
+ cwd,
240
+ encoding: 'utf-8',
241
+ timeout: timeoutMs,
242
+ shell: false,
243
+ });
244
+ const raw = [result.stdout ?? '', result.stderr ?? ''].join('\n').trim();
245
+ // Truncate to last 2000 chars to keep output manageable
246
+ const output = raw.length > 2000 ? '...(truncated)\n' + raw.slice(-2000) : raw;
247
+ const pass = result.status === 0 && !result.error;
248
+ return { pass, output };
249
+ }
250
+ export class TaskVerifyTool {
251
+ name = 'task_verify';
252
+ description = [
253
+ 'Run verification checks before marking a task complete (Verification Contract).',
254
+ 'Checks: typescript (npx tsc --noEmit), tests (auto-detected from package.json), lint (eslint).',
255
+ 'Returns pass/fail per check with truncated output.',
256
+ 'Call this before every task completion to satisfy the Verification Contract.',
257
+ ].join(' ');
258
+ async execute(input) {
259
+ const checksInput = input.checks;
260
+ const workDir = input.workDir ?? process.cwd();
261
+ const checks = checksInput ?? ['typescript', 'tests'];
262
+ const validChecks = ['typescript', 'tests', 'lint'];
263
+ const invalid = checks.filter(c => !validChecks.includes(c));
264
+ if (invalid.length > 0) {
265
+ return { success: false, error: `Invalid checks: ${invalid.join(', ')}. Valid: ${validChecks.join(', ')}` };
266
+ }
267
+ const results = [];
268
+ for (const check of checks) {
269
+ let res;
270
+ if (check === 'typescript') {
271
+ res = runCheck('npx', ['tsc', '--noEmit'], workDir);
272
+ }
273
+ else if (check === 'tests') {
274
+ // Try to detect test command from RepoProfiler cache
275
+ let testCmd = 'npm';
276
+ let testArgs = ['test', '--', '--passWithNoTests'];
277
+ try {
278
+ const { getRepoProfiler } = await import('../../agent/repo-profiler.js');
279
+ const profile = await getRepoProfiler(workDir).getProfile();
280
+ if (profile.commands.test) {
281
+ const parts = profile.commands.test.split(/\s+/);
282
+ testCmd = parts[0];
283
+ testArgs = parts.slice(1);
284
+ }
285
+ }
286
+ catch {
287
+ // use default npm test
288
+ }
289
+ res = runCheck(testCmd, testArgs, workDir, 120_000);
290
+ }
291
+ else {
292
+ // lint
293
+ res = runCheck('npx', ['eslint', '.', '--max-warnings=0'], workDir, 60_000);
294
+ }
295
+ results.push({ check, pass: res.pass, output: res.output });
296
+ }
297
+ const allPass = results.every(r => r.pass);
298
+ const lines = results.map(r => {
299
+ const icon = r.pass ? '✅' : '❌';
300
+ return `${icon} **${r.check}**: ${r.pass ? 'PASS' : 'FAIL'}\n${r.output ? r.output + '\n' : ''}`;
301
+ });
302
+ return {
303
+ success: allPass,
304
+ output: lines.join('\n---\n'),
305
+ error: allPass ? undefined : `Verification failed for: ${results.filter(r => !r.pass).map(r => r.check).join(', ')}`,
306
+ };
307
+ }
308
+ getSchema() {
309
+ return {
310
+ name: this.name,
311
+ description: this.description,
312
+ parameters: {
313
+ type: 'object',
314
+ properties: {
315
+ checks: {
316
+ type: 'array',
317
+ items: {
318
+ type: 'string',
319
+ enum: ['typescript', 'tests', 'lint'],
320
+ },
321
+ description: 'List of checks to run (default: ["typescript", "tests"])',
322
+ },
323
+ workDir: {
324
+ type: 'string',
325
+ description: 'Working directory to run checks in (default: current directory)',
326
+ },
327
+ },
328
+ required: [],
329
+ },
330
+ };
331
+ }
332
+ validate(_input) {
333
+ return { isValid: true, errors: [] };
334
+ }
335
+ getMetadata() {
336
+ return {
337
+ name: this.name,
338
+ version: '1.0.0',
339
+ author: 'Code Buddy',
340
+ category: 'testing',
341
+ tags: ['verify', 'typescript', 'tests', 'lint', 'quality'],
342
+ };
343
+ }
344
+ async isAvailable() {
345
+ return true;
346
+ }
347
+ }
348
+ // ============================================================================
349
+ // Factory
350
+ // ============================================================================
351
+ export function createLessonsTools() {
352
+ return [
353
+ new LessonsAddTool(),
354
+ new LessonsSearchTool(),
355
+ new LessonsListTool(),
356
+ new TaskVerifyTool(),
357
+ ];
358
+ }
359
+ //# sourceMappingURL=lessons-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lessons-tools.js","sourceRoot":"","sources":["../../../src/tools/registry/lessons-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ITool } from './types.js';
2
+ export declare function createPlanTools(): ITool[];
@@ -0,0 +1,7 @@
1
+ import { PlanTool } from '../plan-tool.js';
2
+ export function createPlanTools() {
3
+ return [
4
+ new PlanTool(),
5
+ ];
6
+ }
7
+ //# sourceMappingURL=plan-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-tools.js","sourceRoot":"","sources":["../../../src/tools/registry/plan-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,IAAI,QAAQ,EAAE;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ITool } from './types.js';
2
+ export declare function createScriptTools(): ITool[];
@@ -0,0 +1,7 @@
1
+ import { RunScriptTool } from '../run-script-tool.js';
2
+ export function createScriptTools() {
3
+ return [
4
+ new RunScriptTool(),
5
+ ];
6
+ }
7
+ //# sourceMappingURL=script-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-tools.js","sourceRoot":"","sources":["../../../src/tools/registry/script-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,aAAa,EAAE;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tool Prefix Naming Convention — Codex-inspired canonical tool names.
3
+ *
4
+ * Codex CLI uses a strict `<namespace>_<action>` naming scheme so models
5
+ * can reason about tool categories by prefix (e.g. all `shell_*` tools
6
+ * spawn subprocesses; all `file_*` tools touch the filesystem).
7
+ *
8
+ * This module registers backward-compatible alias ITool wrappers so both
9
+ * the original names (e.g. `bash`, `view_file`) and the new canonical names
10
+ * (e.g. `shell_exec`, `file_read`) route to the same underlying implementation.
11
+ *
12
+ * Convention:
13
+ * shell_* → subprocess / terminal execution (bash, git, docker, process)
14
+ * file_* → read / write / edit filesystem files
15
+ * browser_* → web requests, browser control, screenshots
16
+ * search_* → code search, symbol lookup, find
17
+ * plan_* → persistent planning (PLAN.md)
18
+ * todo_* → attention todo list
19
+ * knowledge_*→ knowledge base operations
20
+ * agent_* → human-in-the-loop / skill authoring
21
+ *
22
+ * To add new aliases simply append to TOOL_ALIASES below.
23
+ */
24
+ import type { ITool } from './types.js';
25
+ export declare const TOOL_ALIASES: Record<string, string>;
26
+ /** Reverse map: legacy_name → canonical_name */
27
+ export declare const CANONICAL_NAME: Record<string, string>;
28
+ /**
29
+ * Given a list of registered tools, build alias ITool wrappers for each
30
+ * entry in TOOL_ALIASES that points to an existing primary tool.
31
+ *
32
+ * Aliases that point to missing primaries are silently skipped.
33
+ */
34
+ export declare function createAliasTools(primaryTools: ITool[]): ITool[];
35
+ /**
36
+ * Resolve a tool name to its canonical prefixed form.
37
+ * Returns the canonical name if a mapping exists, otherwise the original name.
38
+ */
39
+ export declare function toCanonicalName(name: string): string;
40
+ /**
41
+ * Resolve a canonical tool name to its legacy name (for backward compat lookup).
42
+ * Returns the legacy name if a mapping exists, otherwise the original name.
43
+ */
44
+ export declare function toLegacyName(canonical: string): string;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Tool Prefix Naming Convention — Codex-inspired canonical tool names.
3
+ *
4
+ * Codex CLI uses a strict `<namespace>_<action>` naming scheme so models
5
+ * can reason about tool categories by prefix (e.g. all `shell_*` tools
6
+ * spawn subprocesses; all `file_*` tools touch the filesystem).
7
+ *
8
+ * This module registers backward-compatible alias ITool wrappers so both
9
+ * the original names (e.g. `bash`, `view_file`) and the new canonical names
10
+ * (e.g. `shell_exec`, `file_read`) route to the same underlying implementation.
11
+ *
12
+ * Convention:
13
+ * shell_* → subprocess / terminal execution (bash, git, docker, process)
14
+ * file_* → read / write / edit filesystem files
15
+ * browser_* → web requests, browser control, screenshots
16
+ * search_* → code search, symbol lookup, find
17
+ * plan_* → persistent planning (PLAN.md)
18
+ * todo_* → attention todo list
19
+ * knowledge_*→ knowledge base operations
20
+ * agent_* → human-in-the-loop / skill authoring
21
+ *
22
+ * To add new aliases simply append to TOOL_ALIASES below.
23
+ */
24
+ // ============================================================================
25
+ // Alias map: canonical_name → legacy_name
26
+ // ============================================================================
27
+ export const TOOL_ALIASES = {
28
+ // shell_* — subprocess execution
29
+ shell_exec: 'bash',
30
+ shell_git: 'git',
31
+ shell_docker: 'docker',
32
+ shell_k8s: 'kubernetes',
33
+ shell_process: 'process',
34
+ // file_* — filesystem operations
35
+ file_read: 'view_file',
36
+ file_write: 'create_file',
37
+ file_edit: 'str_replace_editor',
38
+ // browser_* — web / browser
39
+ browser_search: 'web_search',
40
+ browser_fetch: 'web_fetch',
41
+ browser_control: 'browser',
42
+ browser_screen: 'screenshot',
43
+ // search_* — code intelligence
44
+ search_code: 'search',
45
+ search_symbol: 'find_symbols',
46
+ search_refs: 'find_references',
47
+ search_definition: 'find_definition',
48
+ search_multi: 'search_multi', // already has prefix
49
+ // agent_* — agent capabilities
50
+ agent_reason: 'reason',
51
+ agent_ask_human: 'ask_human',
52
+ agent_create_skill: 'create_skill',
53
+ agent_skill_search: 'skill_discover',
54
+ agent_device: 'device_manage',
55
+ // todo_* (already prefixed, kept for completeness)
56
+ todo_attention: 'todo_update',
57
+ context_restore: 'restore_context',
58
+ };
59
+ /** Reverse map: legacy_name → canonical_name */
60
+ export const CANONICAL_NAME = Object.fromEntries(Object.entries(TOOL_ALIASES).map(([canonical, legacy]) => [legacy, canonical]));
61
+ // ============================================================================
62
+ // AliasITool — lightweight wrapper that delegates to the primary tool
63
+ // ============================================================================
64
+ class AliasITool {
65
+ name;
66
+ primary;
67
+ constructor(aliasName, primaryTool) {
68
+ this.name = aliasName;
69
+ this.primary = primaryTool;
70
+ }
71
+ get metadata() {
72
+ return {
73
+ ...this.primary.metadata,
74
+ name: this.name,
75
+ description: `[alias → ${this.primary.name}] ${this.primary.metadata.description}`,
76
+ tags: [...(this.primary.metadata.tags ?? []), 'alias'],
77
+ };
78
+ }
79
+ get schema() {
80
+ return {
81
+ ...this.primary.schema,
82
+ name: this.name,
83
+ description: `[alias → ${this.primary.name}] ${this.primary.schema.description ?? ''}`,
84
+ };
85
+ }
86
+ validate(input) {
87
+ return this.primary.validate(input);
88
+ }
89
+ async execute(input, context) {
90
+ return this.primary.execute(input, context);
91
+ }
92
+ }
93
+ // ============================================================================
94
+ // Factory
95
+ // ============================================================================
96
+ /**
97
+ * Given a list of registered tools, build alias ITool wrappers for each
98
+ * entry in TOOL_ALIASES that points to an existing primary tool.
99
+ *
100
+ * Aliases that point to missing primaries are silently skipped.
101
+ */
102
+ export function createAliasTools(primaryTools) {
103
+ const byName = new Map(primaryTools.map(t => [t.name, t]));
104
+ const aliases = [];
105
+ for (const [canonical, legacy] of Object.entries(TOOL_ALIASES)) {
106
+ const primary = byName.get(legacy);
107
+ if (!primary)
108
+ continue;
109
+ // Don't create an alias if the canonical name is already registered
110
+ if (byName.has(canonical))
111
+ continue;
112
+ aliases.push(new AliasITool(canonical, primary));
113
+ }
114
+ return aliases;
115
+ }
116
+ /**
117
+ * Resolve a tool name to its canonical prefixed form.
118
+ * Returns the canonical name if a mapping exists, otherwise the original name.
119
+ */
120
+ export function toCanonicalName(name) {
121
+ return CANONICAL_NAME[name] ?? name;
122
+ }
123
+ /**
124
+ * Resolve a canonical tool name to its legacy name (for backward compat lookup).
125
+ * Returns the legacy name if a mapping exists, otherwise the original name.
126
+ */
127
+ export function toLegacyName(canonical) {
128
+ return TOOL_ALIASES[canonical] ?? canonical;
129
+ }
130
+ //# sourceMappingURL=tool-aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-aliases.js","sourceRoot":"","sources":["../../../src/tools/registry/tool-aliases.ts"],"names":[],"mappings":"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"}