@ace-sdk/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/local-cache.d.ts +72 -0
- package/dist/cache/local-cache.d.ts.map +1 -0
- package/dist/cache/local-cache.js +227 -0
- package/dist/cache/local-cache.js.map +1 -0
- package/dist/cache/session-storage.d.ts +76 -0
- package/dist/cache/session-storage.d.ts.map +1 -0
- package/dist/cache/session-storage.js +237 -0
- package/dist/cache/session-storage.js.map +1 -0
- package/dist/client/ace-client.d.ts +199 -0
- package/dist/client/ace-client.d.ts.map +1 -0
- package/dist/client/ace-client.js +454 -0
- package/dist/client/ace-client.js.map +1 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/context.d.ts +48 -0
- package/dist/config/context.d.ts.map +1 -0
- package/dist/config/context.js +147 -0
- package/dist/config/context.js.map +1 -0
- package/dist/config/helpers.d.ts +79 -0
- package/dist/config/helpers.d.ts.map +1 -0
- package/dist/config/helpers.js +173 -0
- package/dist/config/helpers.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +9 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +58 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +275 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/migration.d.ts +29 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +137 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/xdg.d.ts +62 -0
- package/dist/config/xdg.d.ts.map +1 -0
- package/dist/config/xdg.js +168 -0
- package/dist/config/xdg.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/index.d.ts +6 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +5 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/interface.d.ts +73 -0
- package/dist/logger/interface.d.ts.map +1 -0
- package/dist/logger/interface.js +11 -0
- package/dist/logger/interface.js.map +1 -0
- package/dist/logger/noop.d.ts +32 -0
- package/dist/logger/noop.d.ts.map +1 -0
- package/dist/logger/noop.js +53 -0
- package/dist/logger/noop.js.map +1 -0
- package/dist/types/config.d.ts +94 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +26 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pattern.d.ts +246 -0
- package/dist/types/pattern.d.ts.map +1 -0
- package/dist/types/pattern.js +22 -0
- package/dist/types/pattern.js.map +1 -0
- package/dist/utils/code-extractor.d.ts +34 -0
- package/dist/utils/code-extractor.d.ts.map +1 -0
- package/dist/utils/code-extractor.js +116 -0
- package/dist/utils/code-extractor.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/semver.d.ts +41 -0
- package/dist/utils/semver.d.ts.map +1 -0
- package/dist/utils/semver.js +90 -0
- package/dist/utils/semver.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Engine ACE - Type Definitions
|
|
3
|
+
* @package @ace-sdk/core
|
|
4
|
+
*/
|
|
5
|
+
export interface TrajectoryStep {
|
|
6
|
+
step: number;
|
|
7
|
+
action: string;
|
|
8
|
+
args: Record<string, any>;
|
|
9
|
+
result?: any;
|
|
10
|
+
}
|
|
11
|
+
export interface ExecutionTrace {
|
|
12
|
+
task: string;
|
|
13
|
+
trajectory: TrajectoryStep[] | string[];
|
|
14
|
+
result: {
|
|
15
|
+
success: boolean;
|
|
16
|
+
output: string;
|
|
17
|
+
error?: string;
|
|
18
|
+
};
|
|
19
|
+
playbook_used: string[];
|
|
20
|
+
timestamp: string;
|
|
21
|
+
}
|
|
22
|
+
export type BulletSection = 'strategies_and_hard_rules' | 'useful_code_snippets' | 'troubleshooting_and_pitfalls' | 'apis_to_use';
|
|
23
|
+
export interface PlaybookBullet {
|
|
24
|
+
id: string;
|
|
25
|
+
section: BulletSection;
|
|
26
|
+
content: string;
|
|
27
|
+
domain?: string;
|
|
28
|
+
concrete_domain?: string;
|
|
29
|
+
helpful: number;
|
|
30
|
+
harmful: number;
|
|
31
|
+
confidence: number;
|
|
32
|
+
evidence: string[];
|
|
33
|
+
observations: number;
|
|
34
|
+
created_at: string;
|
|
35
|
+
last_used: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Domain Summary - Summarizes abstract and concrete domains in results
|
|
39
|
+
*/
|
|
40
|
+
export interface DomainsSummary {
|
|
41
|
+
abstract: string[];
|
|
42
|
+
concrete: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface StructuredPlaybook {
|
|
45
|
+
strategies_and_hard_rules: PlaybookBullet[];
|
|
46
|
+
useful_code_snippets: PlaybookBullet[];
|
|
47
|
+
troubleshooting_and_pitfalls: PlaybookBullet[];
|
|
48
|
+
apis_to_use: PlaybookBullet[];
|
|
49
|
+
}
|
|
50
|
+
export type DeltaOperationType = 'ADD' | 'UPDATE' | 'DELETE';
|
|
51
|
+
export interface DeltaOperation {
|
|
52
|
+
type: DeltaOperationType;
|
|
53
|
+
section?: BulletSection;
|
|
54
|
+
content?: string;
|
|
55
|
+
bullet_id?: string;
|
|
56
|
+
helpful_delta?: number;
|
|
57
|
+
harmful_delta?: number;
|
|
58
|
+
confidence?: number;
|
|
59
|
+
evidence?: string[];
|
|
60
|
+
reason?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface Reflection {
|
|
63
|
+
operations: DeltaOperation[];
|
|
64
|
+
summary: string;
|
|
65
|
+
}
|
|
66
|
+
export interface PlaybookStats {
|
|
67
|
+
total_bullets?: number;
|
|
68
|
+
total_patterns?: number;
|
|
69
|
+
by_section: Record<BulletSection, number>;
|
|
70
|
+
top_helpful: PlaybookBullet[];
|
|
71
|
+
top_harmful: PlaybookBullet[];
|
|
72
|
+
avg_confidence: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Token usage metadata from ACE server (v3.3.1+)
|
|
76
|
+
*
|
|
77
|
+
* The server calculates token counts using tiktoken 0.12.0 for ~90% accuracy
|
|
78
|
+
* vs Claude API. Metadata helps track efficiency gains from semantic search
|
|
79
|
+
* vs full playbook retrieval.
|
|
80
|
+
*
|
|
81
|
+
* @since v3.8.0 (server v3.3.1+)
|
|
82
|
+
*/
|
|
83
|
+
export interface TokenMetadata {
|
|
84
|
+
/**
|
|
85
|
+
* Number of tokens in the returned response
|
|
86
|
+
* Calculated using tiktoken 0.12.0 on server side
|
|
87
|
+
*/
|
|
88
|
+
tokens_in_response: number;
|
|
89
|
+
/**
|
|
90
|
+
* Tokens saved compared to fetching full playbook
|
|
91
|
+
* Only present for semantic search results
|
|
92
|
+
*/
|
|
93
|
+
tokens_saved_vs_full_playbook?: number;
|
|
94
|
+
/**
|
|
95
|
+
* Efficiency gain as percentage string (e.g., "83%")
|
|
96
|
+
* Only present for semantic search results
|
|
97
|
+
*/
|
|
98
|
+
efficiency_gain?: string;
|
|
99
|
+
/**
|
|
100
|
+
* Total tokens in full playbook
|
|
101
|
+
* Used as baseline for efficiency calculations
|
|
102
|
+
*/
|
|
103
|
+
full_playbook_size?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Which cache tier served this response
|
|
106
|
+
* Only present for client-side cache hits (not server responses)
|
|
107
|
+
*/
|
|
108
|
+
cache_tier?: 'ram' | 'sqlite' | 'server';
|
|
109
|
+
/**
|
|
110
|
+
* Response latency in milliseconds
|
|
111
|
+
* Client-side measured from request start to response end
|
|
112
|
+
*/
|
|
113
|
+
latency_ms?: number;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Search response with optional token metadata (v3.8.0+)
|
|
117
|
+
*
|
|
118
|
+
* Returned by ace_search when include_metadata=true (default).
|
|
119
|
+
* Provides semantic search results plus token usage statistics.
|
|
120
|
+
*
|
|
121
|
+
* @since v3.8.0 (server v3.3.1+)
|
|
122
|
+
*/
|
|
123
|
+
export interface SearchResponseWithMetadata {
|
|
124
|
+
/** Patterns matching the search query above threshold */
|
|
125
|
+
similar_patterns: PlaybookBullet[];
|
|
126
|
+
/** Number of patterns returned */
|
|
127
|
+
count: number;
|
|
128
|
+
/** Similarity threshold used (0.0-1.0) */
|
|
129
|
+
threshold: number;
|
|
130
|
+
/** Maximum patterns to return (server respects client request) */
|
|
131
|
+
top_k?: number;
|
|
132
|
+
/** Summary of domains in results */
|
|
133
|
+
domains_summary?: DomainsSummary;
|
|
134
|
+
/**
|
|
135
|
+
* Optional token usage metadata
|
|
136
|
+
* Present when include_metadata=true (server default)
|
|
137
|
+
* Absent for cache hits or when explicitly disabled
|
|
138
|
+
*/
|
|
139
|
+
metadata?: TokenMetadata;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Playbook response with optional token metadata (v3.8.0+)
|
|
143
|
+
*
|
|
144
|
+
* Returned by ace_get_playbook when include_metadata=true (default).
|
|
145
|
+
* Provides full playbook plus token usage statistics.
|
|
146
|
+
*
|
|
147
|
+
* @since v3.8.0 (server v3.3.1+)
|
|
148
|
+
*/
|
|
149
|
+
export interface PlaybookResponseWithMetadata {
|
|
150
|
+
/** Structured playbook with 4 sections */
|
|
151
|
+
playbook: StructuredPlaybook;
|
|
152
|
+
/** Total number of bullets across all sections */
|
|
153
|
+
total_bullets: number;
|
|
154
|
+
/**
|
|
155
|
+
* Optional token usage metadata
|
|
156
|
+
* Present when include_metadata=true (server default)
|
|
157
|
+
* Absent for cache hits or when explicitly disabled
|
|
158
|
+
*/
|
|
159
|
+
metadata?: TokenMetadata;
|
|
160
|
+
}
|
|
161
|
+
export interface BootstrapResponse {
|
|
162
|
+
success: boolean;
|
|
163
|
+
blocks_received: number;
|
|
164
|
+
patterns_extracted: number;
|
|
165
|
+
compression_percentage: number;
|
|
166
|
+
patterns_after_dedup?: number;
|
|
167
|
+
compression_ratio?: string;
|
|
168
|
+
by_section: {
|
|
169
|
+
strategies_and_hard_rules: number;
|
|
170
|
+
useful_code_snippets: number;
|
|
171
|
+
troubleshooting_and_pitfalls: number;
|
|
172
|
+
apis_to_use: number;
|
|
173
|
+
};
|
|
174
|
+
average_confidence: number;
|
|
175
|
+
analysis_time_seconds: number;
|
|
176
|
+
}
|
|
177
|
+
export type BootstrapMode = 'hybrid' | 'both' | 'local-files' | 'git-history' | 'docs-only';
|
|
178
|
+
export type ThoroughnessLevel = 'light' | 'medium' | 'deep';
|
|
179
|
+
export interface ThoroughnessPreset {
|
|
180
|
+
max_files: number;
|
|
181
|
+
commit_limit: number;
|
|
182
|
+
days_back: number;
|
|
183
|
+
}
|
|
184
|
+
export declare const THOROUGHNESS_PRESETS: Record<ThoroughnessLevel, ThoroughnessPreset>;
|
|
185
|
+
/**
|
|
186
|
+
* Learning statistics returned from /traces endpoint (v3.10.0+)
|
|
187
|
+
*
|
|
188
|
+
* Provides detailed feedback about pattern creation/updates after
|
|
189
|
+
* submitting an execution trace for learning.
|
|
190
|
+
*
|
|
191
|
+
* @since v1.0.13 (server v3.10.0+)
|
|
192
|
+
*/
|
|
193
|
+
export interface LearningStatistics {
|
|
194
|
+
/** Number of new patterns created */
|
|
195
|
+
patterns_created: number;
|
|
196
|
+
/** Number of existing patterns updated (helpful scores, evidence) */
|
|
197
|
+
patterns_updated: number;
|
|
198
|
+
/** Number of low-quality patterns removed */
|
|
199
|
+
patterns_pruned: number;
|
|
200
|
+
/** Number of duplicate patterns merged */
|
|
201
|
+
patterns_deduplicated: number;
|
|
202
|
+
/** Breakdown of patterns by playbook section */
|
|
203
|
+
by_section: {
|
|
204
|
+
strategies_and_hard_rules: number;
|
|
205
|
+
useful_code_snippets: number;
|
|
206
|
+
troubleshooting_and_pitfalls: number;
|
|
207
|
+
apis_to_use: number;
|
|
208
|
+
};
|
|
209
|
+
/** Average confidence score of created/updated patterns (0.0-1.0) */
|
|
210
|
+
average_confidence: number;
|
|
211
|
+
/** Net increase in helpful scores across all patterns */
|
|
212
|
+
helpful_delta: number;
|
|
213
|
+
/** Total number of patterns marked helpful */
|
|
214
|
+
helpful_count: number;
|
|
215
|
+
/** Total number of patterns marked harmful */
|
|
216
|
+
harmful_count: number;
|
|
217
|
+
/** Server analysis processing time in seconds */
|
|
218
|
+
analysis_time_seconds: number;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Response from /traces POST endpoint (v3.10.0+)
|
|
222
|
+
*
|
|
223
|
+
* Enhanced in v3.10.0 to include detailed learning statistics.
|
|
224
|
+
* Falls back gracefully for older servers without statistics.
|
|
225
|
+
*
|
|
226
|
+
* @since v1.0.13 (server v3.10.0+)
|
|
227
|
+
*/
|
|
228
|
+
export interface LearningResponse {
|
|
229
|
+
/** Whether the trace was successfully stored */
|
|
230
|
+
stored: boolean;
|
|
231
|
+
/** Echo of the task description */
|
|
232
|
+
task?: string;
|
|
233
|
+
/** ISO 8601 timestamp of submission */
|
|
234
|
+
timestamp?: string;
|
|
235
|
+
/** Whether server performed analysis */
|
|
236
|
+
analysis_performed: boolean;
|
|
237
|
+
/** Whether learning is enabled on the server */
|
|
238
|
+
server_learning_enabled?: boolean;
|
|
239
|
+
/**
|
|
240
|
+
* Detailed learning statistics
|
|
241
|
+
* Present when server v3.10.0+ and analysis_performed=true
|
|
242
|
+
* Absent for older servers or when analysis fails
|
|
243
|
+
*/
|
|
244
|
+
learning_statistics?: LearningStatistics;
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=pattern.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/types/pattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Engine ACE - Type Definitions
|
|
3
|
+
* @package @ace-sdk/core
|
|
4
|
+
*/
|
|
5
|
+
export const THOROUGHNESS_PRESETS = {
|
|
6
|
+
light: {
|
|
7
|
+
max_files: 1000,
|
|
8
|
+
commit_limit: 100,
|
|
9
|
+
days_back: 30
|
|
10
|
+
},
|
|
11
|
+
medium: {
|
|
12
|
+
max_files: 5000,
|
|
13
|
+
commit_limit: 500,
|
|
14
|
+
days_back: 90
|
|
15
|
+
},
|
|
16
|
+
deep: {
|
|
17
|
+
max_files: -1, // unlimited
|
|
18
|
+
commit_limit: 1000,
|
|
19
|
+
days_back: 180
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=pattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/types/pattern.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2PH,MAAM,CAAC,MAAM,oBAAoB,GAAkD;IACjF,KAAK,EAAE;QACL,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,EAAE;KACd;IACD,MAAM,EAAE;QACN,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,EAAE;KACd;IACD,IAAI,EAAE;QACJ,SAAS,EAAE,CAAC,CAAC,EAAG,YAAY;QAC5B,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,GAAG;KACf;CACF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code extraction utilities for bootstrap pattern learning
|
|
3
|
+
* Extracts complete, reusable code blocks instead of summaries
|
|
4
|
+
*
|
|
5
|
+
* @package @ace-sdk/core
|
|
6
|
+
*/
|
|
7
|
+
export interface CodeBlock {
|
|
8
|
+
code: string;
|
|
9
|
+
lines: string[];
|
|
10
|
+
name: string;
|
|
11
|
+
type: 'function' | 'async_function' | 'arrow_function' | 'class_method';
|
|
12
|
+
file: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract complete function bodies from source code
|
|
16
|
+
* Includes relevant imports with each function
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractFunctionBodies(content: string, filePath: string): CodeBlock[];
|
|
19
|
+
/**
|
|
20
|
+
* Determine if a code block is "interesting" enough to include
|
|
21
|
+
* Filters for: async/await, error handling, API calls, database usage
|
|
22
|
+
*/
|
|
23
|
+
export declare function isInteresting(code: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Extract code blocks from markdown
|
|
26
|
+
* Finds ```language blocks and returns complete code with context
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractCodeBlocksFromMarkdown(markdown: string): string[];
|
|
29
|
+
/**
|
|
30
|
+
* Extract added code lines from git diff
|
|
31
|
+
* Filters for lines starting with '+' (added lines)
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractAddedLinesFromDiff(diff: string): string;
|
|
34
|
+
//# sourceMappingURL=code-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-extractor.d.ts","sourceRoot":"","sources":["../../src/utils/code-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CA4DpF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBnD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBxE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa9D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code extraction utilities for bootstrap pattern learning
|
|
3
|
+
* Extracts complete, reusable code blocks instead of summaries
|
|
4
|
+
*
|
|
5
|
+
* @package @ace-sdk/core
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Extract complete function bodies from source code
|
|
9
|
+
* Includes relevant imports with each function
|
|
10
|
+
*/
|
|
11
|
+
export function extractFunctionBodies(content, filePath) {
|
|
12
|
+
const blocks = [];
|
|
13
|
+
// Pattern 1: Regular functions (function name() { ... })
|
|
14
|
+
const funcRegex = /(async\s+)?function\s+(\w+)\s*\([^)]*\)\s*\{([\s\S]*?)\n\}/gm;
|
|
15
|
+
// Pattern 2: Arrow functions (const name = async () => { ... })
|
|
16
|
+
const arrowRegex = /const\s+(\w+)\s*=\s*(async\s*)?\([^)]*\)\s*=>\s*\{([\s\S]*?)\n\}/gm;
|
|
17
|
+
// Pattern 3: Class methods (async methodName() { ... })
|
|
18
|
+
const methodRegex = /(async\s+)?([\w]+)\s*\([^)]*\)\s*\{([\s\S]*?)\n\s{2}\}/gm;
|
|
19
|
+
// Extract regular functions
|
|
20
|
+
for (const match of content.matchAll(funcRegex)) {
|
|
21
|
+
const fullCode = match[0];
|
|
22
|
+
blocks.push({
|
|
23
|
+
code: fullCode,
|
|
24
|
+
lines: fullCode.split('\n'),
|
|
25
|
+
name: match[2],
|
|
26
|
+
type: match[1] ? 'async_function' : 'function',
|
|
27
|
+
file: filePath
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
// Extract arrow functions
|
|
31
|
+
for (const match of content.matchAll(arrowRegex)) {
|
|
32
|
+
const fullCode = match[0];
|
|
33
|
+
blocks.push({
|
|
34
|
+
code: fullCode,
|
|
35
|
+
lines: fullCode.split('\n'),
|
|
36
|
+
name: match[1],
|
|
37
|
+
type: 'arrow_function',
|
|
38
|
+
file: filePath
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Extract class methods
|
|
42
|
+
for (const match of content.matchAll(methodRegex)) {
|
|
43
|
+
const fullCode = match[0];
|
|
44
|
+
// Skip if it's a getter/setter or constructor
|
|
45
|
+
const name = match[2];
|
|
46
|
+
if (name && !['get', 'set', 'constructor'].includes(name)) {
|
|
47
|
+
blocks.push({
|
|
48
|
+
code: fullCode,
|
|
49
|
+
lines: fullCode.split('\n'),
|
|
50
|
+
name: name,
|
|
51
|
+
type: 'class_method',
|
|
52
|
+
file: filePath
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Extract all imports from the file
|
|
57
|
+
const imports = content.match(/^import .* from .*;$/gm) || [];
|
|
58
|
+
// Prepend imports to each code block
|
|
59
|
+
return blocks.map(block => ({
|
|
60
|
+
...block,
|
|
61
|
+
code: imports.length > 0 ? [...imports, '', block.code].join('\n') : block.code
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Determine if a code block is "interesting" enough to include
|
|
66
|
+
* Filters for: async/await, error handling, API calls, database usage
|
|
67
|
+
*/
|
|
68
|
+
export function isInteresting(code) {
|
|
69
|
+
return (code.includes('async ') ||
|
|
70
|
+
code.includes('await ') ||
|
|
71
|
+
code.includes('try {') ||
|
|
72
|
+
code.includes('catch (') ||
|
|
73
|
+
// API/HTTP patterns
|
|
74
|
+
/\.(get|post|put|delete|patch)\(/.test(code) ||
|
|
75
|
+
// Database patterns
|
|
76
|
+
/\.(findMany|findUnique|findFirst|create|update|delete|upsert)\(/.test(code) ||
|
|
77
|
+
// Common framework patterns
|
|
78
|
+
code.includes('useEffect') ||
|
|
79
|
+
code.includes('useState') ||
|
|
80
|
+
// Import statements (always interesting)
|
|
81
|
+
code.includes('import '));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extract code blocks from markdown
|
|
85
|
+
* Finds ```language blocks and returns complete code with context
|
|
86
|
+
*/
|
|
87
|
+
export function extractCodeBlocksFromMarkdown(markdown) {
|
|
88
|
+
const codeBlocks = [];
|
|
89
|
+
// Match code blocks: ```language\n...\n```
|
|
90
|
+
const codeBlockRegex = /```(\w+)?\n([\s\S]*?)```/g;
|
|
91
|
+
for (const match of markdown.matchAll(codeBlockRegex)) {
|
|
92
|
+
const code = match[2].trim();
|
|
93
|
+
// Only include code blocks that are substantial and interesting
|
|
94
|
+
if (code.length > 50 && isInteresting(code)) {
|
|
95
|
+
codeBlocks.push(code);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return codeBlocks;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract added code lines from git diff
|
|
102
|
+
* Filters for lines starting with '+' (added lines)
|
|
103
|
+
*/
|
|
104
|
+
export function extractAddedLinesFromDiff(diff) {
|
|
105
|
+
const lines = diff.split('\n');
|
|
106
|
+
const addedLines = [];
|
|
107
|
+
for (const line of lines) {
|
|
108
|
+
// Skip diff metadata lines (+++, @@, etc)
|
|
109
|
+
if (line.startsWith('+') && !line.startsWith('+++') && !line.startsWith('+++ ')) {
|
|
110
|
+
// Remove the '+' prefix
|
|
111
|
+
addedLines.push(line.substring(1));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return addedLines.join('\n');
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=code-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-extractor.js","sourceRoot":"","sources":["../../src/utils/code-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,QAAgB;IACrE,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,yDAAyD;IACzD,MAAM,SAAS,GAAG,8DAA8D,CAAC;IAEjF,gEAAgE;IAChE,MAAM,UAAU,GAAG,oEAAoE,CAAC;IAExF,wDAAwD;IACxD,MAAM,WAAW,GAAG,0DAA0D,CAAC;IAE/E,4BAA4B;IAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU;YAC9C,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,8CAA8C;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IAE9D,qCAAqC;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,KAAK;QACR,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;KAChF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,oBAAoB;QACpB,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,oBAAoB;QACpB,iEAAiE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5E,4BAA4B;QAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,yCAAyC;QACzC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAgB;IAC5D,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,2CAA2C;IAC3C,MAAM,cAAc,GAAG,2BAA2B,CAAC;IAEnD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7B,gEAAgE;QAChE,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChF,wBAAwB;YACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility exports for @ace-sdk/core
|
|
3
|
+
*/
|
|
4
|
+
export type { SemanticVersion } from './semver.js';
|
|
5
|
+
export { parseVersion, compareVersions, satisfiesVersion } from './semver.js';
|
|
6
|
+
export type { CodeBlock } from './code-extractor.js';
|
|
7
|
+
export { extractFunctionBodies, isInteresting, extractCodeBlocksFromMarkdown, extractAddedLinesFromDiff } from './code-extractor.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility exports for @ace-sdk/core
|
|
3
|
+
*/
|
|
4
|
+
export { parseVersion, compareVersions, satisfiesVersion } from './semver.js';
|
|
5
|
+
export { extractFunctionBodies, isInteresting, extractCodeBlocksFromMarkdown, extractAddedLinesFromDiff } from './code-extractor.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Version Utilities
|
|
3
|
+
* Implements semantic versioning comparison per semver.org spec
|
|
4
|
+
*
|
|
5
|
+
* @package @ace-sdk/core
|
|
6
|
+
*/
|
|
7
|
+
export interface SemanticVersion {
|
|
8
|
+
major: number;
|
|
9
|
+
minor: number;
|
|
10
|
+
patch: number;
|
|
11
|
+
prerelease?: string;
|
|
12
|
+
build?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parse semantic version string
|
|
16
|
+
* Format: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
|
|
17
|
+
*
|
|
18
|
+
* Examples:
|
|
19
|
+
* - 3.6.2
|
|
20
|
+
* - 3.7.0-beta.1
|
|
21
|
+
* - 3.7.0+20251101
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseVersion(version: string): SemanticVersion;
|
|
24
|
+
/**
|
|
25
|
+
* Compare two version strings
|
|
26
|
+
* Returns:
|
|
27
|
+
* 1 if a > b
|
|
28
|
+
* 0 if a === b
|
|
29
|
+
* -1 if a < b
|
|
30
|
+
*/
|
|
31
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
32
|
+
/**
|
|
33
|
+
* Check if current version satisfies required version
|
|
34
|
+
* Supports range syntax:
|
|
35
|
+
* - >=3.6.0 (greater than or equal)
|
|
36
|
+
* - ^3.6.0 (compatible with, same major)
|
|
37
|
+
* - ~3.6.0 (approximately equivalent, same major.minor)
|
|
38
|
+
* - 3.6.0 (exact match)
|
|
39
|
+
*/
|
|
40
|
+
export declare function satisfiesVersion(current: string, required: string): boolean;
|
|
41
|
+
//# sourceMappingURL=semver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAe7D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAwB3E"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Version Utilities
|
|
3
|
+
* Implements semantic versioning comparison per semver.org spec
|
|
4
|
+
*
|
|
5
|
+
* @package @ace-sdk/core
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parse semantic version string
|
|
9
|
+
* Format: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
|
|
10
|
+
*
|
|
11
|
+
* Examples:
|
|
12
|
+
* - 3.6.2
|
|
13
|
+
* - 3.7.0-beta.1
|
|
14
|
+
* - 3.7.0+20251101
|
|
15
|
+
*/
|
|
16
|
+
export function parseVersion(version) {
|
|
17
|
+
const regex = /^(\d+)\.(\d+)\.(\d+)(?:-([^+]+))?(?:\+(.+))?$/;
|
|
18
|
+
const match = version.match(regex);
|
|
19
|
+
if (!match) {
|
|
20
|
+
throw new Error(`Invalid semantic version: ${version}`);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
major: parseInt(match[1], 10),
|
|
24
|
+
minor: parseInt(match[2], 10),
|
|
25
|
+
patch: parseInt(match[3], 10),
|
|
26
|
+
prerelease: match[4],
|
|
27
|
+
build: match[5]
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Compare two version strings
|
|
32
|
+
* Returns:
|
|
33
|
+
* 1 if a > b
|
|
34
|
+
* 0 if a === b
|
|
35
|
+
* -1 if a < b
|
|
36
|
+
*/
|
|
37
|
+
export function compareVersions(a, b) {
|
|
38
|
+
const vA = parseVersion(a);
|
|
39
|
+
const vB = parseVersion(b);
|
|
40
|
+
// Compare major
|
|
41
|
+
if (vA.major !== vB.major)
|
|
42
|
+
return vA.major - vB.major;
|
|
43
|
+
// Compare minor
|
|
44
|
+
if (vA.minor !== vB.minor)
|
|
45
|
+
return vA.minor - vB.minor;
|
|
46
|
+
// Compare patch
|
|
47
|
+
if (vA.patch !== vB.patch)
|
|
48
|
+
return vA.patch - vB.patch;
|
|
49
|
+
// Compare prerelease (stable > prerelease)
|
|
50
|
+
if (vA.prerelease && !vB.prerelease)
|
|
51
|
+
return -1;
|
|
52
|
+
if (!vA.prerelease && vB.prerelease)
|
|
53
|
+
return 1;
|
|
54
|
+
if (vA.prerelease && vB.prerelease) {
|
|
55
|
+
return vA.prerelease.localeCompare(vB.prerelease);
|
|
56
|
+
}
|
|
57
|
+
// Versions are equal (ignore build metadata per semver spec)
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if current version satisfies required version
|
|
62
|
+
* Supports range syntax:
|
|
63
|
+
* - >=3.6.0 (greater than or equal)
|
|
64
|
+
* - ^3.6.0 (compatible with, same major)
|
|
65
|
+
* - ~3.6.0 (approximately equivalent, same major.minor)
|
|
66
|
+
* - 3.6.0 (exact match)
|
|
67
|
+
*/
|
|
68
|
+
export function satisfiesVersion(current, required) {
|
|
69
|
+
// Support range syntax: >=3.6.0
|
|
70
|
+
if (required.startsWith('>=')) {
|
|
71
|
+
return compareVersions(current, required.slice(2)) >= 0;
|
|
72
|
+
}
|
|
73
|
+
// Support caret range: ^3.6.0 (allows 3.6.x and 3.7.x, but not 4.0.0)
|
|
74
|
+
if (required.startsWith('^')) {
|
|
75
|
+
const base = parseVersion(required.slice(1));
|
|
76
|
+
const curr = parseVersion(current);
|
|
77
|
+
return curr.major === base.major && compareVersions(current, required.slice(1)) >= 0;
|
|
78
|
+
}
|
|
79
|
+
// Support tilde range: ~3.6.0 (allows 3.6.x only, not 3.7.0)
|
|
80
|
+
if (required.startsWith('~')) {
|
|
81
|
+
const base = parseVersion(required.slice(1));
|
|
82
|
+
const curr = parseVersion(current);
|
|
83
|
+
return curr.major === base.major &&
|
|
84
|
+
curr.minor === base.minor &&
|
|
85
|
+
compareVersions(current, required.slice(1)) >= 0;
|
|
86
|
+
}
|
|
87
|
+
// Exact match
|
|
88
|
+
return compareVersions(current, required) === 0;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=semver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ace-sdk/core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "ACE Core - Shared library for ACE pattern learning (HTTP client, caching, config, types)",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"watch": "tsc --watch",
|
|
17
|
+
"clean": "rm -rf dist",
|
|
18
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"ace",
|
|
23
|
+
"pattern-learning",
|
|
24
|
+
"playbook",
|
|
25
|
+
"agentic",
|
|
26
|
+
"context-engineering",
|
|
27
|
+
"code-engine"
|
|
28
|
+
],
|
|
29
|
+
"author": {
|
|
30
|
+
"name": "CE.NET Team",
|
|
31
|
+
"email": "ace@code-engine.net"
|
|
32
|
+
},
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/ce-dot-net/ace-sdk.git",
|
|
37
|
+
"directory": "packages/core"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"better-sqlite3": "^12.4.6",
|
|
41
|
+
"linguist-js": "^2.9.2"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
45
|
+
"@types/node": "^24.10.1",
|
|
46
|
+
"typescript": "^5.9.3"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=20.0.0"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist/**/*",
|
|
53
|
+
"README.md"
|
|
54
|
+
],
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
}
|
|
58
|
+
}
|