@compilr-dev/agents-coding 1.0.2 → 1.0.3

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/LICENSE CHANGED
@@ -1,13 +1,100 @@
1
- MIT License
1
+ Functional Source License, Version 1.1, MIT Future License
2
2
 
3
- Copyright (c) 2026 scozzola
3
+ Abbreviation: FSL-1.1-MIT
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
5
+ Notice
6
+
7
+ Copyright 2026 Carmelo Scozzola
8
+
9
+ Terms and Conditions
10
+
11
+ Licensor ("We")
12
+
13
+ The party offering the Software under these Terms and Conditions.
14
+
15
+ The Software
16
+
17
+ The "Software" is each version of the software that we make available under
18
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
19
+ Conditions with the Software.
20
+
21
+ License Grant
22
+
23
+ Subject to your compliance with this License Grant and the Patents,
24
+ Redistribution and Trademark clauses below, we hereby grant you the right to
25
+ use, copy, modify, create derivative works, publicly perform, publicly display
26
+ and redistribute the Software for any Permitted Purpose identified below.
27
+
28
+ Permitted Purpose
29
+
30
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
31
+ means making the Software available to others in a commercial product or
32
+ service that:
33
+
34
+ 1. substitutes for the Software;
35
+
36
+ 2. substitutes for any other product or service we offer using the Software
37
+ that exists as of the date we make the Software available; or
38
+
39
+ 3. offers the same or substantially similar functionality as the Software.
40
+
41
+ Permitted Purposes specifically include using the Software:
42
+
43
+ 1. for your internal use and access;
44
+
45
+ 2. for non-commercial education;
46
+
47
+ 3. for non-commercial research; and
48
+
49
+ 4. in connection with professional services that you provide to a licensee
50
+ using the Software in accordance with these Terms and Conditions.
51
+
52
+ Patents
53
+
54
+ To the extent your use for a Permitted Purpose would necessarily infringe our
55
+ patents, the license grant above includes a license under our patents. If you
56
+ make a claim against any party that the Software infringes or contributes to
57
+ the infringement of any patent, then your patent license to the Software ends
58
+ immediately.
59
+
60
+ Redistribution
61
+
62
+ The Terms and Conditions apply to all copies, modifications and derivatives of
63
+ the Software.
64
+
65
+ If you redistribute any copies, modifications or derivatives of the Software,
66
+ you must include a copy of or a link to these Terms and Conditions and not
67
+ remove any copyright notices provided in or with the Software.
68
+
69
+ Disclaimer
70
+
71
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
72
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
73
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
74
+
75
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
76
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
77
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
78
+
79
+ Trademarks
80
+
81
+ Except for displaying the License Details and identifying us as the origin of
82
+ the Software, you have no right under these Terms and Conditions to use our
83
+ trademarks, trade names, service marks or product names.
84
+
85
+ Grant of Future License
86
+
87
+ We hereby irrevocably grant you an additional license to use the Software under
88
+ the MIT license that is effective on the second anniversary of the date we make
89
+ the Software available. On or after that date, you may use the Software under
90
+ the MIT license, in which case the following will apply:
91
+
92
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
93
+ this software and associated documentation files (the "Software"), to deal in
94
+ the Software without restriction, including without limitation the rights to
95
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
96
+ of the Software, and to permit persons to whom the Software is furnished to do
97
+ so, subject to the following conditions:
11
98
 
12
99
  The above copyright notice and this permission notice shall be included in all
13
100
  copies or substantial portions of the Software.
package/README.md CHANGED
@@ -1,15 +1,45 @@
1
1
  # @compilr-dev/agents-coding
2
2
 
3
- Multi-language coding tools for AI agents - umbrella package with auto-detection.
3
+ ```
4
+ \|/
5
+ ╭══════════╮ ___ ___ _ __ ___ _ __ (_) |_ __
6
+ ║' ▐▌ ▐▌ │ / __|/ _ \| '_ ` _ \| '_ \| | | '__|
7
+ ║ │ | (__| (_) | | | | | | |_) | | | |
8
+ ╰─═──────═─╯ \___|\___/|_| |_| |_| .__/|_|_|_|
9
+ \________\ | | .dev
10
+ |_| coding
11
+ ```
12
+
13
+ > Coding-specific tools and language analysis for AI assistants
14
+
15
+ [![npm version](https://img.shields.io/npm/v/@compilr-dev/agents-coding.svg)](https://www.npmjs.com/package/@compilr-dev/agents-coding)
16
+ [![License: FSL-1.1-MIT](https://img.shields.io/badge/License-FSL--1.1--MIT-blue.svg)](https://fsl.software/)
17
+
18
+ Multi-language coding tools for AI agents -- umbrella package with auto-detection.
4
19
 
5
20
  ## Overview
6
21
 
7
22
  This is the **umbrella package** that provides a unified interface for all coding tools across multiple programming languages. It automatically detects the language from file extensions and routes to the appropriate parser.
8
23
 
24
+ ## Package Structure
25
+
26
+ | Package | Description |
27
+ |---------|-------------|
28
+ | **@compilr-dev/agents-coding** | This umbrella (re-exports everything + auto-detection) |
29
+ | [@compilr-dev/agents-coding-core](https://www.npmjs.com/package/@compilr-dev/agents-coding-core) | Git tools, project detection, smart runners, code search (30 tools, 14 skills) |
30
+ | [@compilr-dev/agents-coding-ts](https://www.npmjs.com/package/@compilr-dev/agents-coding-ts) | TypeScript/JavaScript AST analysis (15 tools) |
31
+ | [@compilr-dev/agents-coding-python](https://www.npmjs.com/package/@compilr-dev/agents-coding-python) | Python AST analysis via Tree-sitter |
32
+ | [@compilr-dev/agents-coding-go](https://www.npmjs.com/package/@compilr-dev/agents-coding-go) | Go AST analysis via Tree-sitter |
33
+
9
34
  ## Installation
10
35
 
11
36
  ```bash
37
+ # Umbrella package (recommended - includes everything)
12
38
  npm install @compilr-dev/agents-coding @compilr-dev/agents
39
+
40
+ # Or individual packages for lighter installs
41
+ npm install @compilr-dev/agents-coding-core @compilr-dev/agents
42
+ npm install @compilr-dev/agents-coding-ts # TypeScript analysis only
13
43
  ```
14
44
 
15
45
  This single install gives you:
@@ -39,16 +69,6 @@ const agent = new Agent({
39
69
  });
40
70
  ```
41
71
 
42
- ## Package Structure
43
-
44
- | Package | Description |
45
- |---------|-------------|
46
- | `@compilr-dev/agents-coding` | This umbrella (re-exports everything) |
47
- | `@compilr-dev/agents-coding-core` | Language-agnostic tools (git, runners, search) |
48
- | `@compilr-dev/agents-coding-ts` | TypeScript/JavaScript analysis |
49
- | `@compilr-dev/agents-coding-python` | Python analysis |
50
- | `@compilr-dev/agents-coding-go` | Go analysis |
51
-
52
72
  ## Language Auto-Detection
53
73
 
54
74
  The umbrella provides unified tools that automatically detect the language:
@@ -100,10 +120,15 @@ All language-agnostic tools from `@compilr-dev/agents-coding-core`:
100
120
  - `findProjectRootTool` - Find project root directory
101
121
 
102
122
  ### Smart Runners
103
- - `runTestsTool` - Auto-detect and run tests
104
- - `runLintTool` - Auto-detect and run linter
105
- - `runBuildTool` - Auto-detect and run build
106
- - `runFormatTool` - Auto-detect and run formatter
123
+
124
+ | Tool | Supported |
125
+ |------|-----------|
126
+ | `runTestsTool` | vitest, jest, mocha, ava, pytest, cargo test, go test, npm test, ruff |
127
+ | `runLintTool` | eslint, biome, ruff, pylint, flake8, clippy, golangci-lint, npm |
128
+ | `runBuildTool` | vite, next, tsc, webpack, rollup, esbuild, turbo, cargo, go, python, maven, gradle |
129
+ | `runFormatTool` | prettier, biome, dprint, black, ruff, rustfmt, gofmt, npm |
130
+
131
+ All runners support `dryRun` mode to detect without executing.
107
132
 
108
133
  ### Code Search
109
134
  - `findDefinitionTool` - Find symbol definitions
@@ -134,6 +159,18 @@ import { codingSkills } from '@compilr-dev/agents-coding';
134
159
  - [@compilr-dev/agents](https://www.npmjs.com/package/@compilr-dev/agents) - Core agent library
135
160
  - [@compilr-dev/cli](https://www.npmjs.com/package/@compilr-dev/cli) - AI-powered CLI assistant
136
161
 
162
+ ## Links
163
+
164
+ - [Website](https://compilr.dev)
165
+ - [npm Package](https://www.npmjs.com/package/@compilr-dev/agents-coding)
166
+ - [Report Issues](https://github.com/compilr-dev/agents-coding/issues)
167
+
137
168
  ## License
138
169
 
139
- MIT
170
+ [FSL-1.1-MIT](https://fsl.software/) - See [LICENSE](LICENSE) for details. Converts to MIT after 2 years per version.
171
+
172
+ ---
173
+
174
+ <p align="center">
175
+ <strong>Built with care by <a href="https://compilr.dev">compilr.dev</a></strong>
176
+ </p>
package/dist/core.js CHANGED
@@ -4,4 +4,3 @@
4
4
  * Re-exports all tools and skills from @compilr-dev/agents-coding-core
5
5
  */
6
6
  export * from "@compilr-dev/agents-coding-core";
7
- //# sourceMappingURL=core.js.map
@@ -65,4 +65,3 @@ export function getLanguageExtensions(lang) {
65
65
  .filter(([, l]) => l === lang)
66
66
  .map(([ext]) => ext);
67
67
  }
68
- //# sourceMappingURL=dispatcher.js.map
package/dist/index.d.ts CHANGED
@@ -32,9 +32,6 @@ export * as ts from "@compilr-dev/agents-coding-ts";
32
32
  export * as python from "@compilr-dev/agents-coding-python";
33
33
  export * as go from "@compilr-dev/agents-coding-go";
34
34
  import { type SupportedLanguage } from "./dispatcher.js";
35
- import * as tsTools from "@compilr-dev/agents-coding-ts";
36
- import * as pythonTools from "@compilr-dev/agents-coding-python";
37
- import * as goTools from "@compilr-dev/agents-coding-go";
38
35
  import { type ToolExecutionResult } from "@compilr-dev/agents";
39
36
  /**
40
37
  * Get the appropriate getFileStructure tool for a file
@@ -66,6 +63,52 @@ export declare const getComplexityTool: import("@compilr-dev/agents").Tool<{
66
63
  threshold?: number;
67
64
  recursive?: boolean;
68
65
  }>;
66
+ /**
67
+ * Read a function or method by name
68
+ */
69
+ export declare function readFunction(path: string, name: string, options?: {
70
+ className?: string;
71
+ includeJsDoc?: boolean;
72
+ }): Promise<ToolExecutionResult>;
73
+ /**
74
+ * Unified read_function tool with auto-detection
75
+ */
76
+ export declare const readFunctionTool: import("@compilr-dev/agents").Tool<{
77
+ path: string;
78
+ name: string;
79
+ className?: string;
80
+ includeJsDoc?: boolean;
81
+ }>;
82
+ /**
83
+ * Read a class by name
84
+ */
85
+ export declare function readClass(path: string, name: string, options?: {
86
+ include?: "full" | "signature" | "methods-only" | "properties-only";
87
+ includeJsDoc?: boolean;
88
+ }): Promise<ToolExecutionResult>;
89
+ /**
90
+ * Unified read_class tool with auto-detection
91
+ */
92
+ export declare const readClassTool: import("@compilr-dev/agents").Tool<{
93
+ path: string;
94
+ name: string;
95
+ include?: "full" | "signature" | "methods-only" | "properties-only";
96
+ includeJsDoc?: boolean;
97
+ }>;
98
+ /**
99
+ * Read a type, interface, or enum by name
100
+ */
101
+ export declare function readType(path: string, name: string, options?: {
102
+ includeJsDoc?: boolean;
103
+ }): Promise<ToolExecutionResult>;
104
+ /**
105
+ * Unified read_type tool with auto-detection
106
+ */
107
+ export declare const readTypeTool: import("@compilr-dev/agents").Tool<{
108
+ path: string;
109
+ name: string;
110
+ includeJsDoc?: boolean;
111
+ }>;
69
112
  /**
70
113
  * All unified tools with auto-detection
71
114
  */
@@ -77,9 +120,70 @@ export declare const unifiedTools: (import("@compilr-dev/agents").Tool<{
77
120
  path: string;
78
121
  threshold?: number;
79
122
  recursive?: boolean;
123
+ }> | import("@compilr-dev/agents").Tool<{
124
+ path: string;
125
+ name: string;
126
+ className?: string;
127
+ includeJsDoc?: boolean;
128
+ }> | import("@compilr-dev/agents").Tool<{
129
+ path: string;
130
+ name: string;
131
+ include?: "full" | "signature" | "methods-only" | "properties-only";
132
+ includeJsDoc?: boolean;
80
133
  }>)[];
81
134
  /**
82
135
  * Get language-specific tools for a given language
83
136
  */
84
- export declare function getToolsForLanguage(lang: SupportedLanguage): typeof tsTools | typeof pythonTools | typeof goTools | null;
137
+ export declare function getToolsForLanguage(lang: SupportedLanguage): {
138
+ readonly getFileStructure: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetFileStructureInput>;
139
+ readonly findSymbol: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").FindSymbolInput>;
140
+ readonly findReferences: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").FindReferencesInput>;
141
+ readonly getImports: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetImportsInput>;
142
+ readonly getExports: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetExportsInput>;
143
+ readonly getCallGraph: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetCallGraphInput>;
144
+ readonly getDependencyGraph: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetDependencyGraphInput>;
145
+ readonly findImplementations: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").FindImplementationsInput>;
146
+ readonly getTypeHierarchy: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetTypeHierarchyInput>;
147
+ readonly getComplexity: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetComplexityInput>;
148
+ readonly findDeadCode: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").FindDeadCodeInput>;
149
+ readonly findDuplicates: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").FindDuplicatesInput>;
150
+ readonly findPatterns: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").FindPatternsInput>;
151
+ readonly getSignature: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetSignatureInput>;
152
+ readonly getDocumentation: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").GetDocumentationInput>;
153
+ readonly readFunction: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").ReadFunctionInput>;
154
+ readonly readClass: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").ReadClassInput>;
155
+ readonly readType: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-ts").ReadTypeInput>;
156
+ } | {
157
+ readonly getFileStructure: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetFileStructureInput>;
158
+ readonly findSymbol: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").FindSymbolInput>;
159
+ readonly findReferences: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").FindReferencesInput>;
160
+ readonly getImports: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetImportsInput>;
161
+ readonly getClassHierarchy: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetClassHierarchyInput>;
162
+ readonly getComplexity: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetComplexityInput>;
163
+ readonly extractDocstrings: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").ExtractDocstringsInput>;
164
+ readonly findDeadCode: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").FindDeadCodeInput>;
165
+ readonly findDuplicates: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").FindDuplicatesInput>;
166
+ readonly findImplementations: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").FindImplementationsInput>;
167
+ readonly findPatterns: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").FindPatternsInput>;
168
+ readonly getCallGraph: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetCallGraphInput>;
169
+ readonly getDependencyGraph: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetDependencyGraphInput>;
170
+ readonly getSignature: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetSignatureInput>;
171
+ readonly getExports: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-python").GetExportsInput>;
172
+ } | {
173
+ readonly getFileStructure: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetFileStructureInput>;
174
+ readonly findSymbol: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").FindSymbolInput>;
175
+ readonly findReferences: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").FindReferencesInput>;
176
+ readonly getImports: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetImportsInput>;
177
+ readonly getClassHierarchy: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetClassHierarchyInput>;
178
+ readonly getComplexity: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetComplexityInput>;
179
+ readonly extractDocstrings: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").ExtractDocstringsInput>;
180
+ readonly findDeadCode: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").FindDeadCodeInput>;
181
+ readonly findDuplicates: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").FindDuplicatesInput>;
182
+ readonly findImplementations: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").FindImplementationsInput>;
183
+ readonly findPatterns: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").FindPatternsInput>;
184
+ readonly getCallGraph: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetCallGraphInput>;
185
+ readonly getDependencyGraph: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetDependencyGraphInput>;
186
+ readonly getSignature: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetSignatureInput>;
187
+ readonly getExports: import("@compilr-dev/agents").Tool<import("@compilr-dev/agents-coding-go").GetExportsInput>;
188
+ } | null;
85
189
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,cAAc,iCAAiC,CAAC;AAKhD,cAAc,iBAAiB,CAAC;AAKhC,OAAO,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAKpD,OAAO,KAAK,MAAM,MAAM,mCAAmC,CAAC;AAK5D,OAAO,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAMpD,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,OAAO,MAAM,+BAA+B,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,OAAO,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;UACzB,MAAM;qBACK,OAAO;eACb,MAAM;EAyBjB,CAAC;AAEH;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;UACtB,MAAM;gBACA,MAAM;gBACN,OAAO;EAyBnB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;UAzFjB,MAAM;qBACK,OAAO;eACb,MAAM;;UAuDX,MAAM;gBACA,MAAM;gBACN,OAAO;KA8BgD,CAAC;AAEtE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,+DAY1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,cAAc,iCAAiC,CAAC;AAKhD,cAAc,iBAAiB,CAAC;AAKhC,OAAO,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAKpD,OAAO,KAAK,MAAM,MAAM,mCAAmC,CAAC;AAK5D,OAAO,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAMpD,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;UACzB,MAAM;qBACK,OAAO;eACb,MAAM;EAyBjB,CAAC;AAEH;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;UACtB,MAAM;gBACA,MAAM;gBACN,OAAO;EAyBnB,CAAC;AAMH;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD,OAAO,CAAC,mBAAmB,CAAC,CAa9B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;UACrB,MAAM;UACN,MAAM;gBACA,MAAM;mBACH,OAAO;EA6BtB,CAAC;AAEH;;GAEG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,iBAAiB,CAAC;IACpE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAa9B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;UAClB,MAAM;UACN,MAAM;cACF,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,iBAAiB;mBACpD,OAAO;EA8BtB,CAAC;AAEH;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAa9B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;UACjB,MAAM;UACN,MAAM;mBACG,OAAO;EAyBtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;UAhRjB,MAAM;qBACK,OAAO;eACb,MAAM;;UAuDX,MAAM;gBACA,MAAM;gBACN,OAAO;;UAyDb,MAAM;UACN,MAAM;gBACA,MAAM;mBACH,OAAO;;UA4DhB,MAAM;UACN,MAAM;cACF,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,iBAAiB;mBACpD,OAAO;KAgGvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAY1D"}
package/dist/index.js CHANGED
@@ -50,9 +50,9 @@ export * as go from "@compilr-dev/agents-coding-go";
50
50
  // Unified Analysis Tools (with auto-detection)
51
51
  // =============================================================================
52
52
  import { detectLanguage } from "./dispatcher.js";
53
- import * as tsTools from "@compilr-dev/agents-coding-ts";
54
- import * as pythonTools from "@compilr-dev/agents-coding-python";
55
- import * as goTools from "@compilr-dev/agents-coding-go";
53
+ import { tsTools } from "@compilr-dev/agents-coding-ts";
54
+ import { pythonTools } from "@compilr-dev/agents-coding-python";
55
+ import { goTools } from "@compilr-dev/agents-coding-go";
56
56
  import { defineTool, createErrorResult, } from "@compilr-dev/agents";
57
57
  /**
58
58
  * Get the appropriate getFileStructure tool for a file
@@ -62,11 +62,11 @@ export async function getFileStructure(path, options) {
62
62
  switch (lang) {
63
63
  case "typescript":
64
64
  case "javascript":
65
- return tsTools.getFileStructureTool.execute({ path, ...options });
65
+ return tsTools.getFileStructure.execute({ path, ...options });
66
66
  case "python":
67
- return pythonTools.getFileStructureTool.execute({ path, ...options });
67
+ return pythonTools.getFileStructure.execute({ path, ...options });
68
68
  case "go":
69
- return goTools.getFileStructureTool.execute({ path, ...options });
69
+ return goTools.getFileStructure.execute({ path, ...options });
70
70
  default:
71
71
  return createErrorResult(`Unsupported language for file: ${path}. Supported: TypeScript, JavaScript, Python, Go`);
72
72
  }
@@ -106,11 +106,11 @@ export async function getComplexity(path, options) {
106
106
  switch (lang) {
107
107
  case "typescript":
108
108
  case "javascript":
109
- return tsTools.getComplexityTool.execute({ path, ...options });
109
+ return tsTools.getComplexity.execute({ path, ...options });
110
110
  case "python":
111
- return pythonTools.getComplexityTool.execute({ path, ...options });
111
+ return pythonTools.getComplexity.execute({ path, ...options });
112
112
  case "go":
113
- return goTools.getComplexityTool.execute({ path, ...options });
113
+ return goTools.getComplexity.execute({ path, ...options });
114
114
  default:
115
115
  return createErrorResult(`Unsupported language for file: ${path}. Supported: TypeScript, JavaScript, Python, Go`);
116
116
  }
@@ -142,10 +142,151 @@ export const getComplexityTool = defineTool({
142
142
  },
143
143
  execute: async (input) => getComplexity(input.path, input),
144
144
  });
145
+ // =============================================================================
146
+ // Smart File Reading Tools (unified with auto-detection)
147
+ // =============================================================================
148
+ /**
149
+ * Read a function or method by name
150
+ */
151
+ export async function readFunction(path, name, options) {
152
+ const lang = detectLanguage(path);
153
+ switch (lang) {
154
+ case "typescript":
155
+ case "javascript":
156
+ return tsTools.readFunction.execute({ path, name, ...options });
157
+ // Python and Go support to be added
158
+ default:
159
+ return createErrorResult(`Unsupported language for file: ${path}. Currently supports: TypeScript, JavaScript`);
160
+ }
161
+ }
162
+ /**
163
+ * Unified read_function tool with auto-detection
164
+ */
165
+ export const readFunctionTool = defineTool({
166
+ name: "read_function",
167
+ description: "Read a specific function or method by name. Returns exact source code without guessing line numbers. " +
168
+ "Use this instead of read_file when you need to see a specific function. For methods, specify className.",
169
+ inputSchema: {
170
+ type: "object",
171
+ properties: {
172
+ path: {
173
+ type: "string",
174
+ description: "Absolute path to the file",
175
+ },
176
+ name: {
177
+ type: "string",
178
+ description: "Function or method name to read",
179
+ },
180
+ className: {
181
+ type: "string",
182
+ description: "Class name if reading a method (optional)",
183
+ },
184
+ includeJsDoc: {
185
+ type: "boolean",
186
+ description: "Include JSDoc comment (default: true)",
187
+ },
188
+ },
189
+ required: ["path", "name"],
190
+ },
191
+ execute: async (input) => readFunction(input.path, input.name, input),
192
+ });
193
+ /**
194
+ * Read a class by name
195
+ */
196
+ export async function readClass(path, name, options) {
197
+ const lang = detectLanguage(path);
198
+ switch (lang) {
199
+ case "typescript":
200
+ case "javascript":
201
+ return tsTools.readClass.execute({ path, name, ...options });
202
+ // Python and Go support to be added
203
+ default:
204
+ return createErrorResult(`Unsupported language for file: ${path}. Currently supports: TypeScript, JavaScript`);
205
+ }
206
+ }
207
+ /**
208
+ * Unified read_class tool with auto-detection
209
+ */
210
+ export const readClassTool = defineTool({
211
+ name: "read_class",
212
+ description: "Read a specific class by name. Returns exact source code without guessing line numbers. " +
213
+ "Use include parameter to get: full class, signature only, methods only, or properties only.",
214
+ inputSchema: {
215
+ type: "object",
216
+ properties: {
217
+ path: {
218
+ type: "string",
219
+ description: "Absolute path to the file",
220
+ },
221
+ name: {
222
+ type: "string",
223
+ description: "Class name to read",
224
+ },
225
+ include: {
226
+ type: "string",
227
+ enum: ["full", "signature", "methods-only", "properties-only"],
228
+ description: "What to include (default: full)",
229
+ },
230
+ includeJsDoc: {
231
+ type: "boolean",
232
+ description: "Include JSDoc comment (default: true)",
233
+ },
234
+ },
235
+ required: ["path", "name"],
236
+ },
237
+ execute: async (input) => readClass(input.path, input.name, input),
238
+ });
239
+ /**
240
+ * Read a type, interface, or enum by name
241
+ */
242
+ export async function readType(path, name, options) {
243
+ const lang = detectLanguage(path);
244
+ switch (lang) {
245
+ case "typescript":
246
+ case "javascript":
247
+ return tsTools.readType.execute({ path, name, ...options });
248
+ // Python and Go support to be added
249
+ default:
250
+ return createErrorResult(`Unsupported language for file: ${path}. Currently supports: TypeScript, JavaScript`);
251
+ }
252
+ }
253
+ /**
254
+ * Unified read_type tool with auto-detection
255
+ */
256
+ export const readTypeTool = defineTool({
257
+ name: "read_type",
258
+ description: "Read a specific type, interface, or enum by name. Returns exact source code without guessing line numbers. " +
259
+ "Works for TypeScript interfaces, type aliases, and enums.",
260
+ inputSchema: {
261
+ type: "object",
262
+ properties: {
263
+ path: {
264
+ type: "string",
265
+ description: "Absolute path to the file",
266
+ },
267
+ name: {
268
+ type: "string",
269
+ description: "Type, interface, or enum name to read",
270
+ },
271
+ includeJsDoc: {
272
+ type: "boolean",
273
+ description: "Include JSDoc comment (default: true)",
274
+ },
275
+ },
276
+ required: ["path", "name"],
277
+ },
278
+ execute: async (input) => readType(input.path, input.name, input),
279
+ });
145
280
  /**
146
281
  * All unified tools with auto-detection
147
282
  */
148
- export const unifiedTools = [getFileStructureTool, getComplexityTool];
283
+ export const unifiedTools = [
284
+ getFileStructureTool,
285
+ getComplexityTool,
286
+ readFunctionTool,
287
+ readClassTool,
288
+ readTypeTool,
289
+ ];
149
290
  /**
150
291
  * Get language-specific tools for a given language
151
292
  */
@@ -162,4 +303,3 @@ export function getToolsForLanguage(lang) {
162
303
  return null;
163
304
  }
164
305
  }
165
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@compilr-dev/agents-coding",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Multi-language coding tools for AI agents - umbrella package with auto-detection for TypeScript, Python, Go, and more",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,7 +54,7 @@
54
54
  "multi-language"
55
55
  ],
56
56
  "author": "Carmelo Scozzola",
57
- "license": "MIT",
57
+ "license": "FSL-1.1-MIT",
58
58
  "bugs": {
59
59
  "url": "https://github.com/compilr-dev/agents-coding/issues"
60
60
  },
@@ -69,16 +69,17 @@
69
69
  "@compilr-dev/agents-coding-core": "^0.1.1",
70
70
  "@compilr-dev/agents-coding-go": "^0.1.3",
71
71
  "@compilr-dev/agents-coding-python": "^0.1.4",
72
- "@compilr-dev/agents-coding-ts": "^0.1.3"
72
+ "@compilr-dev/agents-coding-ts": "^0.1.4"
73
73
  },
74
74
  "devDependencies": {
75
- "@compilr-dev/agents": "^0.3.1",
75
+ "@anthropic-ai/sdk": "^0.74.0",
76
+ "@compilr-dev/agents": "^0.3.11",
76
77
  "@eslint/js": "^9.39.2",
77
- "@types/node": "^24.10.7",
78
+ "@types/node": "^25.2.3",
78
79
  "eslint": "^9.39.2",
79
80
  "prettier": "^3.7.4",
80
81
  "typescript": "^5.9.3",
81
82
  "typescript-eslint": "^8.52.0",
82
- "vitest": "^3.2.4"
83
+ "vitest": "^4.0.18"
83
84
  }
84
85
  }
package/dist/core.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iCAAiC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;GAEG;AACH,MAAM,aAAa,GAAsC;IACvD,aAAa;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IAEpB,aAAa;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IAEpB,SAAS;IACT,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAEhB,KAAK;IACL,KAAK,EAAE,IAAI;IAEX,OAAO;IACP,KAAK,EAAE,MAAM;IAEb,OAAO;IACP,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAuB;IAC5D,MAAM,KAAK,GAAsC;QAC/C,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,QAAQ;QAChB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;KACnB,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAuB;IAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}