@ai-coders/context 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +116 -578
  2. package/dist/commands/shared/agents.d.ts +2 -0
  3. package/dist/commands/shared/agents.d.ts.map +1 -0
  4. package/dist/commands/shared/agents.js +15 -0
  5. package/dist/commands/shared/agents.js.map +1 -0
  6. package/dist/commands/shared/selection.d.ts +12 -0
  7. package/dist/commands/shared/selection.d.ts.map +1 -0
  8. package/dist/commands/shared/selection.js +95 -0
  9. package/dist/commands/shared/selection.js.map +1 -0
  10. package/dist/generators/agents/agentGenerator.d.ts +6 -9
  11. package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
  12. package/dist/generators/agents/agentGenerator.js +89 -32
  13. package/dist/generators/agents/agentGenerator.js.map +1 -1
  14. package/dist/generators/agents/index.d.ts +0 -2
  15. package/dist/generators/agents/index.d.ts.map +1 -1
  16. package/dist/generators/agents/index.js +1 -5
  17. package/dist/generators/agents/index.js.map +1 -1
  18. package/dist/generators/agents/templates/index.d.ts +4 -0
  19. package/dist/generators/agents/templates/index.d.ts.map +1 -0
  20. package/dist/generators/agents/templates/index.js +8 -0
  21. package/dist/generators/agents/templates/index.js.map +1 -0
  22. package/dist/generators/agents/templates/indexTemplate.d.ts +3 -0
  23. package/dist/generators/agents/templates/indexTemplate.d.ts.map +1 -0
  24. package/dist/generators/agents/templates/indexTemplate.js +35 -0
  25. package/dist/generators/agents/templates/indexTemplate.js.map +1 -0
  26. package/dist/generators/agents/templates/playbookTemplate.d.ts +4 -0
  27. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -0
  28. package/dist/generators/agents/templates/playbookTemplate.js +63 -0
  29. package/dist/generators/agents/templates/playbookTemplate.js.map +1 -0
  30. package/dist/generators/agents/templates/types.d.ts +14 -0
  31. package/dist/generators/agents/templates/types.d.ts.map +1 -0
  32. package/dist/generators/agents/templates/types.js +3 -0
  33. package/dist/generators/agents/templates/types.js.map +1 -0
  34. package/dist/generators/documentation/documentationGenerator.d.ts +9 -15
  35. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
  36. package/dist/generators/documentation/documentationGenerator.js +65 -77
  37. package/dist/generators/documentation/documentationGenerator.js.map +1 -1
  38. package/dist/generators/documentation/guideRegistry.d.ts +6 -0
  39. package/dist/generators/documentation/guideRegistry.d.ts.map +1 -0
  40. package/dist/generators/documentation/guideRegistry.js +82 -0
  41. package/dist/generators/documentation/guideRegistry.js.map +1 -0
  42. package/dist/generators/documentation/index.d.ts +0 -6
  43. package/dist/generators/documentation/index.d.ts.map +1 -1
  44. package/dist/generators/documentation/index.js +1 -17
  45. package/dist/generators/documentation/index.js.map +1 -1
  46. package/dist/generators/documentation/templates/architectureTemplate.d.ts +3 -0
  47. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -0
  48. package/dist/generators/documentation/templates/architectureTemplate.js +66 -0
  49. package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -0
  50. package/dist/generators/documentation/templates/common.d.ts +7 -0
  51. package/dist/generators/documentation/templates/common.d.ts.map +1 -0
  52. package/dist/generators/documentation/templates/common.js +58 -0
  53. package/dist/generators/documentation/templates/common.js.map +1 -0
  54. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts +3 -0
  55. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts.map +1 -0
  56. package/dist/generators/documentation/templates/dataFlowTemplate.js +55 -0
  57. package/dist/generators/documentation/templates/dataFlowTemplate.js.map +1 -0
  58. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts +2 -0
  59. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts.map +1 -0
  60. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js +59 -0
  61. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js.map +1 -0
  62. package/dist/generators/documentation/templates/frontMatter.d.ts +11 -0
  63. package/dist/generators/documentation/templates/frontMatter.d.ts.map +1 -0
  64. package/dist/generators/documentation/templates/frontMatter.js +29 -0
  65. package/dist/generators/documentation/templates/frontMatter.js.map +1 -0
  66. package/dist/generators/documentation/templates/glossaryTemplate.d.ts +3 -0
  67. package/dist/generators/documentation/templates/glossaryTemplate.d.ts.map +1 -0
  68. package/dist/generators/documentation/templates/glossaryTemplate.js +55 -0
  69. package/dist/generators/documentation/templates/glossaryTemplate.js.map +1 -0
  70. package/dist/generators/documentation/templates/index.d.ts +11 -0
  71. package/dist/generators/documentation/templates/index.d.ts.map +1 -0
  72. package/dist/generators/documentation/templates/index.js +22 -0
  73. package/dist/generators/documentation/templates/index.js.map +1 -0
  74. package/dist/generators/documentation/templates/indexTemplate.d.ts +3 -0
  75. package/dist/generators/documentation/templates/indexTemplate.d.ts.map +1 -0
  76. package/dist/generators/documentation/templates/indexTemplate.js +56 -0
  77. package/dist/generators/documentation/templates/indexTemplate.js.map +1 -0
  78. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts +3 -0
  79. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts.map +1 -0
  80. package/dist/generators/documentation/templates/projectOverviewTemplate.js +68 -0
  81. package/dist/generators/documentation/templates/projectOverviewTemplate.js.map +1 -0
  82. package/dist/generators/documentation/templates/securityTemplate.d.ts +2 -0
  83. package/dist/generators/documentation/templates/securityTemplate.d.ts.map +1 -0
  84. package/dist/generators/documentation/templates/securityTemplate.js +53 -0
  85. package/dist/generators/documentation/templates/securityTemplate.js.map +1 -0
  86. package/dist/generators/documentation/templates/testingTemplate.d.ts +2 -0
  87. package/dist/generators/documentation/templates/testingTemplate.d.ts.map +1 -0
  88. package/dist/generators/documentation/templates/testingTemplate.js +59 -0
  89. package/dist/generators/documentation/templates/testingTemplate.js.map +1 -0
  90. package/dist/generators/documentation/templates/toolingTemplate.d.ts +2 -0
  91. package/dist/generators/documentation/templates/toolingTemplate.d.ts.map +1 -0
  92. package/dist/generators/documentation/templates/toolingTemplate.js +56 -0
  93. package/dist/generators/documentation/templates/toolingTemplate.js.map +1 -0
  94. package/dist/generators/documentation/templates/types.d.ts +23 -0
  95. package/dist/generators/documentation/templates/types.d.ts.map +1 -0
  96. package/dist/generators/documentation/templates/types.js +3 -0
  97. package/dist/generators/documentation/templates/types.js.map +1 -0
  98. package/dist/generators/documentation/templates.d.ts +31 -0
  99. package/dist/generators/documentation/templates.d.ts.map +1 -0
  100. package/dist/generators/documentation/templates.js +566 -0
  101. package/dist/generators/documentation/templates.js.map +1 -0
  102. package/dist/generators/plans/index.d.ts +2 -0
  103. package/dist/generators/plans/index.d.ts.map +1 -0
  104. package/dist/generators/plans/index.js +6 -0
  105. package/dist/generators/plans/index.js.map +1 -0
  106. package/dist/generators/plans/planGenerator.d.ts +22 -0
  107. package/dist/generators/plans/planGenerator.d.ts.map +1 -0
  108. package/dist/generators/plans/planGenerator.js +109 -0
  109. package/dist/generators/plans/planGenerator.js.map +1 -0
  110. package/dist/generators/plans/templates/indexTemplate.d.ts +3 -0
  111. package/dist/generators/plans/templates/indexTemplate.d.ts.map +1 -0
  112. package/dist/generators/plans/templates/indexTemplate.js +36 -0
  113. package/dist/generators/plans/templates/indexTemplate.js.map +1 -0
  114. package/dist/generators/plans/templates/planTemplate.d.ts +3 -0
  115. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -0
  116. package/dist/generators/plans/templates/planTemplate.js +95 -0
  117. package/dist/generators/plans/templates/planTemplate.js.map +1 -0
  118. package/dist/generators/plans/templates/types.d.ts +19 -0
  119. package/dist/generators/plans/templates/types.d.ts.map +1 -0
  120. package/dist/generators/plans/templates/types.js +3 -0
  121. package/dist/generators/plans/templates/types.js.map +1 -0
  122. package/dist/generators/shared/contextGenerator.d.ts +2 -7
  123. package/dist/generators/shared/contextGenerator.d.ts.map +1 -1
  124. package/dist/generators/shared/contextGenerator.js +2 -98
  125. package/dist/generators/shared/contextGenerator.js.map +1 -1
  126. package/dist/generators/shared/directoryTemplateHelpers.d.ts +2 -0
  127. package/dist/generators/shared/directoryTemplateHelpers.d.ts.map +1 -0
  128. package/dist/generators/shared/directoryTemplateHelpers.js +12 -0
  129. package/dist/generators/shared/directoryTemplateHelpers.js.map +1 -0
  130. package/dist/generators/shared/index.d.ts +1 -0
  131. package/dist/generators/shared/index.d.ts.map +1 -1
  132. package/dist/generators/shared/index.js +3 -1
  133. package/dist/generators/shared/index.js.map +1 -1
  134. package/dist/index.d.ts +6 -4
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +1358 -609
  137. package/dist/index.js.map +1 -1
  138. package/dist/prompts/defaults.d.ts +3 -0
  139. package/dist/prompts/defaults.d.ts.map +1 -0
  140. package/dist/prompts/defaults.js +95 -0
  141. package/dist/prompts/defaults.js.map +1 -0
  142. package/dist/services/fill/fillService.d.ts +50 -0
  143. package/dist/services/fill/fillService.d.ts.map +1 -0
  144. package/dist/services/fill/fillService.js +302 -0
  145. package/dist/services/fill/fillService.js.map +1 -0
  146. package/dist/services/init/initService.d.ts +37 -0
  147. package/dist/services/init/initService.d.ts.map +1 -0
  148. package/dist/services/init/initService.js +137 -0
  149. package/dist/services/init/initService.js.map +1 -0
  150. package/dist/services/plan/planService.d.ts +59 -0
  151. package/dist/services/plan/planService.d.ts.map +1 -0
  152. package/dist/services/plan/planService.js +343 -0
  153. package/dist/services/plan/planService.js.map +1 -0
  154. package/dist/services/shared/llmConfig.d.ts +22 -0
  155. package/dist/services/shared/llmConfig.d.ts.map +1 -0
  156. package/dist/services/shared/llmConfig.js +80 -0
  157. package/dist/services/shared/llmConfig.js.map +1 -0
  158. package/dist/utils/cliUI.d.ts +6 -4
  159. package/dist/utils/cliUI.d.ts.map +1 -1
  160. package/dist/utils/cliUI.js +71 -56
  161. package/dist/utils/cliUI.js.map +1 -1
  162. package/dist/utils/i18n.d.ts +192 -0
  163. package/dist/utils/i18n.d.ts.map +1 -0
  164. package/dist/utils/i18n.js +423 -0
  165. package/dist/utils/i18n.js.map +1 -0
  166. package/dist/utils/promptLoader.d.ts +12 -0
  167. package/dist/utils/promptLoader.d.ts.map +1 -0
  168. package/dist/utils/promptLoader.js +81 -0
  169. package/dist/utils/promptLoader.js.map +1 -0
  170. package/dist/utils/versionChecker.d.ts +15 -0
  171. package/dist/utils/versionChecker.d.ts.map +1 -0
  172. package/dist/utils/versionChecker.js +49 -0
  173. package/dist/utils/versionChecker.js.map +1 -0
  174. package/package.json +28 -23
  175. package/prompts/update_plan_prompt.md +42 -0
  176. package/prompts/update_scaffold_prompt.md +48 -0
  177. package/dist/generators/agentGenerator.d.ts +0 -23
  178. package/dist/generators/agentGenerator.d.ts.map +0 -1
  179. package/dist/generators/agentGenerator.js +0 -357
  180. package/dist/generators/agentGenerator.js.map +0 -1
  181. package/dist/generators/documentation/enhancedDocumentationGenerator.d.ts +0 -21
  182. package/dist/generators/documentation/enhancedDocumentationGenerator.d.ts.map +0 -1
  183. package/dist/generators/documentation/enhancedDocumentationGenerator.js +0 -216
  184. package/dist/generators/documentation/enhancedDocumentationGenerator.js.map +0 -1
  185. package/dist/generators/documentation/newDocumentationTemplates.d.ts +0 -19
  186. package/dist/generators/documentation/newDocumentationTemplates.d.ts.map +0 -1
  187. package/dist/generators/documentation/newDocumentationTemplates.js +0 -307
  188. package/dist/generators/documentation/newDocumentationTemplates.js.map +0 -1
  189. package/dist/generators/documentationGenerator.d.ts +0 -22
  190. package/dist/generators/documentationGenerator.d.ts.map +0 -1
  191. package/dist/generators/documentationGenerator.js +0 -235
  192. package/dist/generators/documentationGenerator.js.map +0 -1
  193. package/dist/generators/documentationTemplates.d.ts +0 -16
  194. package/dist/generators/documentationTemplates.d.ts.map +0 -1
  195. package/dist/generators/documentationTemplates.js +0 -326
  196. package/dist/generators/documentationTemplates.js.map +0 -1
  197. package/dist/generators/documentationUtils.d.ts +0 -7
  198. package/dist/generators/documentationUtils.d.ts.map +0 -1
  199. package/dist/generators/documentationUtils.js +0 -38
  200. package/dist/generators/documentationUtils.js.map +0 -1
  201. package/dist/generators/incrementalDocumentationGenerator.d.ts +0 -33
  202. package/dist/generators/incrementalDocumentationGenerator.d.ts.map +0 -1
  203. package/dist/generators/incrementalDocumentationGenerator.js +0 -400
  204. package/dist/generators/incrementalDocumentationGenerator.js.map +0 -1
@@ -0,0 +1,423 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_LOCALE = exports.SUPPORTED_LOCALES = void 0;
4
+ exports.createTranslator = createTranslator;
5
+ exports.normalizeLocale = normalizeLocale;
6
+ exports.detectLocale = detectLocale;
7
+ exports.isSupportedLocale = isSupportedLocale;
8
+ exports.SUPPORTED_LOCALES = ['en', 'pt-BR'];
9
+ exports.DEFAULT_LOCALE = 'en';
10
+ const englishMessages = {
11
+ 'cli.name': 'AI Coders Context by aicoders.academy',
12
+ 'cli.tagline': 'Scaffold documentation and agent playbooks with or without LLM assistance',
13
+ 'cli.description': 'Scaffold documentation and agent playbooks for your repository',
14
+ 'global.options.lang': 'Language for CLI output (en or pt-BR)',
15
+ 'ui.version': 'Version {version}',
16
+ 'ui.projectConfiguration.title': '📋 Project Configuration:',
17
+ 'ui.projectConfiguration.repository': 'Repository:',
18
+ 'ui.projectConfiguration.output': 'Output:',
19
+ 'ui.projectConfiguration.mode': 'Scaffold Mode:',
20
+ 'ui.progress.starting': 'Starting...',
21
+ 'ui.analysis.complete.title': '📊 Repository Analysis Complete',
22
+ 'ui.analysis.files': 'Files',
23
+ 'ui.analysis.directories': 'Directories',
24
+ 'ui.analysis.totalSize': 'Total Size',
25
+ 'ui.fileTypeDistribution.title': '📁 File Type Distribution:',
26
+ 'ui.generationSummary.title': '✨ Scaffold Complete!',
27
+ 'ui.generationSummary.documentation': 'Documentation files',
28
+ 'ui.generationSummary.agents': 'Agent playbooks',
29
+ 'ui.generationSummary.timeElapsed': 'Time elapsed',
30
+ 'ui.generationSummary.nextStep': 'Next step: customize the generated templates to match your project.',
31
+ 'ui.error.title': '❌ Error Occurred',
32
+ 'info.prompt.title': 'System Prompt',
33
+ 'info.prompt.usingCustom': 'Using prompt from {path}.',
34
+ 'info.prompt.usingPackage': 'Using packaged prompt at {path}.',
35
+ 'info.prompt.usingBundled': 'Using built-in prompt bundled with ai-context.',
36
+ 'info.update.available.title': 'Update available',
37
+ 'info.update.available.detail': 'A newer version {latest} is available (current {current}). Update with {command}.',
38
+ 'commands.init.description': 'Generate docs and agent scaffolding for a repository',
39
+ 'commands.init.arguments.repoPath': 'Path to the repository to analyze',
40
+ 'commands.init.arguments.type': 'Scaffold type: "docs", "agents", or "both" (default)',
41
+ 'commands.init.options.output': 'Output directory for generated assets',
42
+ 'commands.init.options.docs': 'Doc keys to scaffold (default: all)',
43
+ 'commands.init.options.agents': 'Agent types to scaffold (default: all)',
44
+ 'commands.init.options.exclude': 'Glob patterns to exclude from analysis',
45
+ 'commands.init.options.include': 'Glob patterns to include during analysis',
46
+ 'commands.init.options.verbose': 'Enable verbose logging',
47
+ 'commands.scaffold.description': 'Alias for init',
48
+ 'commands.fill.description': 'Use an LLM to fill generated docs and agent playbooks with the latest repo context',
49
+ 'commands.fill.arguments.repoPath': 'Path to the repository root used to build context',
50
+ 'commands.fill.options.output': 'Scaffold directory containing docs/ and agents/',
51
+ 'commands.fill.options.apiKey': 'API key for the LLM provider',
52
+ 'commands.fill.options.model': 'LLM model to use',
53
+ 'commands.fill.options.provider': 'LLM provider (openrouter, openai, anthropic, gemini, grok)',
54
+ 'commands.fill.options.baseUrl': 'Custom base URL for provider APIs',
55
+ 'commands.fill.options.prompt': 'Path to an instruction prompt',
56
+ 'commands.fill.options.dryRun': 'Preview updates without writing files',
57
+ 'commands.fill.options.all': 'Process every doc/agent file even if no TODO markers are found',
58
+ 'commands.fill.options.limit': 'Maximum number of files to process',
59
+ 'commands.fill.options.docs': 'Doc keys to update (default: all)',
60
+ 'commands.fill.options.agents': 'Agent types to update (default: all)',
61
+ 'commands.fill.options.exclude': 'Glob patterns to exclude from repository analysis',
62
+ 'commands.fill.options.include': 'Glob patterns to include during analysis',
63
+ 'commands.fill.options.verbose': 'Enable verbose logging',
64
+ 'commands.plan.description': 'Create a development plan that links documentation and agent playbooks',
65
+ 'commands.plan.arguments.planName': 'Name of the plan (used to create the file slug)',
66
+ 'commands.plan.options.output': 'Scaffold directory containing docs/ and agents/',
67
+ 'commands.plan.options.title': 'Custom title for the plan document',
68
+ 'commands.plan.options.summary': 'Seed summary for the plan header',
69
+ 'commands.plan.options.agents': 'Agent types to highlight (default: all)',
70
+ 'commands.plan.options.docs': 'Doc keys to highlight (default: all)',
71
+ 'commands.plan.options.force': 'Overwrite the plan if it already exists (scaffold mode)',
72
+ 'commands.plan.options.fill': 'Use an LLM to fill or update the plan instead of scaffolding',
73
+ 'commands.plan.options.repo': 'Repository root to summarize for additional context',
74
+ 'commands.plan.options.apiKey': 'API key for the LLM provider',
75
+ 'commands.plan.options.model': 'LLM model to use',
76
+ 'commands.plan.options.provider': 'LLM provider (openrouter, openai, anthropic, gemini, grok)',
77
+ 'commands.plan.options.baseUrl': 'Custom base URL for provider APIs',
78
+ 'commands.plan.options.prompt': 'Path to a plan update instruction prompt',
79
+ 'commands.plan.options.dryRun': 'Preview updates without writing files',
80
+ 'commands.plan.options.include': 'Glob patterns to include during repository analysis',
81
+ 'commands.plan.options.exclude': 'Glob patterns to exclude from repository analysis',
82
+ 'commands.plan.options.verbose': 'Enable verbose logging',
83
+ 'errors.init.scaffoldFailed': 'Failed to scaffold repository assets',
84
+ 'errors.fill.failed': 'Failed to fill documentation with LLM assistance',
85
+ 'errors.plan.creationFailed': 'Failed to create plan template',
86
+ 'errors.init.invalidType': 'Invalid scaffold type "{value}". Expected one of: {allowed}',
87
+ 'errors.common.repoMissing': 'Repository path does not exist: {path}',
88
+ 'warnings.agents.unknown': 'Ignoring unknown agent types: {values}',
89
+ 'warnings.docs.unknown': 'Ignoring unknown docs: {values}',
90
+ 'warnings.scaffold.noneSelected': 'No documentation or agent playbooks selected. Nothing to scaffold.',
91
+ 'steps.init.analyze': 'Analyzing repository structure',
92
+ 'steps.init.docs': 'Scaffolding documentation',
93
+ 'steps.init.agents': 'Scaffolding agent playbooks',
94
+ 'spinner.repo.scanning': 'Scanning repository...',
95
+ 'spinner.repo.scanComplete': 'Found {fileCount} files across {directoryCount} directories',
96
+ 'spinner.docs.creating': 'Creating docs directory and templates...',
97
+ 'spinner.docs.created': 'Documentation scaffold created ({count} files)',
98
+ 'spinner.agents.creating': 'Creating agent directory and templates...',
99
+ 'spinner.agents.created': 'Agent scaffold created ({count} files)',
100
+ 'spinner.plan.creating': 'Creating plan template...',
101
+ 'spinner.plan.created': 'Plan template created',
102
+ 'spinner.plan.creationFailed': 'Failed to create plan template',
103
+ 'success.scaffold.ready': 'Scaffold ready in {path}',
104
+ 'success.plan.createdAt': 'Plan created at {path}',
105
+ 'errors.fill.missingDocsScaffold': 'Documentation scaffold not found. Run `ai-context init` first.',
106
+ 'errors.fill.missingAgentsScaffold': 'Agent scaffold not found. Run `ai-context init` first.',
107
+ 'steps.fill.analyze': 'Analyzing repository structure',
108
+ 'warnings.fill.noTargets': 'No Markdown files required updates. Use --all or add TODO markers to trigger LLM assistance.',
109
+ 'steps.fill.processFiles': 'Updating {count} files with {model}',
110
+ 'spinner.fill.processing': 'Processing {path}...',
111
+ 'spinner.fill.noContent': 'No content received for {path}',
112
+ 'messages.fill.emptyResponse': 'Empty response from LLM',
113
+ 'spinner.fill.dryRunPreview': 'Dry run - preview for {path}',
114
+ 'messages.fill.previewStart': '--- Preview Start ---',
115
+ 'messages.fill.previewEnd': '--- Preview End ---',
116
+ 'spinner.fill.updated': 'Updated {path}',
117
+ 'spinner.fill.failed': 'Failed {path}',
118
+ 'steps.fill.summary': 'Summarizing LLM usage',
119
+ 'success.fill.completed': 'LLM-assisted update complete. Review the changes and commit when ready.',
120
+ 'errors.plan.invalidName': 'Plan name must contain at least one alphanumeric character.',
121
+ 'messages.plan.regenerated': 'Regenerated {path} before LLM fill.',
122
+ 'messages.plan.created': 'Created {path} before LLM fill.',
123
+ 'info.plan.scaffolded.title': 'Plan scaffolded',
124
+ 'errors.plan.missingPlansDir': 'Plans directory not found. Run `ai-context plan <name>` to create one.',
125
+ 'errors.plan.notFound': 'Plan not found. Expected {expected}.',
126
+ 'steps.plan.summary': 'Summarizing repository state',
127
+ 'spinner.planFill.analyzingRepo': 'Analyzing repository...',
128
+ 'spinner.planFill.summaryReady': 'Repository summary ready',
129
+ 'steps.plan.update': 'Updating {path} with {model}',
130
+ 'spinner.planFill.updating': 'Filling {path}...',
131
+ 'spinner.planFill.noContent': 'No content received from LLM',
132
+ 'spinner.planFill.dryRun': 'Dry run - preview follows',
133
+ 'spinner.planFill.updated': 'Updated {path}',
134
+ 'spinner.planFill.failed': 'Failed to fill plan',
135
+ 'steps.plan.summaryResults': 'Summarizing LLM usage',
136
+ 'success.plan.filled': 'Plan fill complete. Review the updates and commit when ready.',
137
+ 'errors.commands.analyzeRemoved': 'The analyze command has been removed in the scaffolding-only version of ai-context.',
138
+ 'errors.commands.updateRemoved': 'The update command is no longer supported. Re-run `ai-context init` to refresh scaffolds.',
139
+ 'errors.commands.previewRemoved': 'Preview mode has been retired. Use the generated docs and agent templates directly.',
140
+ 'errors.commands.guidelinesRemoved': 'Guidelines generation relied on LLMs and is no longer available.',
141
+ 'errors.cli.executionFailed': 'CLI execution failed',
142
+ 'warnings.interactive.nothingSelected': 'Nothing selected. Aborting.',
143
+ 'prompts.main.action': 'What would you like to do?',
144
+ 'prompts.main.choice.scaffold': 'Generate documentation/agent scaffolding',
145
+ 'prompts.main.choice.fill': 'Fill docs and agents with an LLM',
146
+ 'prompts.main.choice.plan': 'Create a development plan',
147
+ 'prompts.main.choice.changeLanguage': 'Change language',
148
+ 'prompts.main.choice.exit': 'Exit interactive mode',
149
+ 'prompts.scaffold.repoPath': 'Repository path to analyze',
150
+ 'prompts.scaffold.includeDocs': 'Generate documentation scaffolding?',
151
+ 'prompts.scaffold.selectDocs': 'Select documentation guides to scaffold',
152
+ 'prompts.scaffold.includeAgents': 'Generate agent playbooks?',
153
+ 'prompts.scaffold.selectAgents': 'Select agent playbooks to scaffold',
154
+ 'prompts.common.verbose': 'Enable verbose logging?',
155
+ 'prompts.fill.repoPath': 'Repository path containing the scaffold',
156
+ 'prompts.fill.promptPath': 'Custom prompt path (leave blank to use the bundled default)',
157
+ 'prompts.fill.dryRun': 'Preview changes without writing files?',
158
+ 'prompts.fill.processAll': 'Process every Markdown file regardless of markers?',
159
+ 'prompts.fill.limit': 'Maximum number of files to update (leave blank for all)',
160
+ 'prompts.fill.includeDocs': 'Include documentation files?',
161
+ 'prompts.fill.selectDocs': 'Select documentation guides to update',
162
+ 'prompts.fill.includeAgents': 'Include agent playbooks?',
163
+ 'prompts.fill.selectAgents': 'Select agent playbooks to update',
164
+ 'prompts.fill.overrideModel': 'Override provider/model configuration?',
165
+ 'prompts.fill.provider': 'Select provider',
166
+ 'prompts.fill.model': 'Model identifier',
167
+ 'prompts.fill.provideApiKey': 'Provide an API key for this run?',
168
+ 'prompts.fill.apiKey': 'API key',
169
+ 'prompts.plan.name': 'Plan name (used for the file slug)',
170
+ 'prompts.plan.mode': 'How would you like to work with this plan?',
171
+ 'prompts.plan.modeScaffold': 'Scaffold a plan template',
172
+ 'prompts.plan.modeFill': 'Fill an existing plan with LLM assistance',
173
+ 'prompts.plan.summary': 'Optional summary to seed the plan (leave blank to add later)',
174
+ 'prompts.plan.includeAgents': 'Reference agent playbooks in the plan?',
175
+ 'prompts.plan.selectAgents': 'Select agent playbooks to highlight',
176
+ 'prompts.plan.includeDocs': 'Link documentation guides in the plan?',
177
+ 'prompts.plan.selectDocs': 'Select documentation guides to reference',
178
+ 'prompts.plan.repoPath': 'Repository root for context',
179
+ 'prompts.plan.dryRun': 'Preview updates without writing files?',
180
+ 'prompts.language.select': 'Choose the CLI language / Escolha o idioma do CLI',
181
+ 'prompts.language.option.en': 'English / Inglês',
182
+ 'prompts.language.option.pt-BR': 'Portuguese (Brazil) / Português (Brasil)',
183
+ 'errors.plan.fillFailed': 'Failed to fill plan with LLM assistance',
184
+ 'errors.fill.promptMissing': 'Prompt file not found at {path}.',
185
+ 'errors.fill.apiKeyMissing': '{provider} API key is required. Set one of {envVars} or use --api-key.',
186
+ 'info.interactive.returning.title': 'Main menu',
187
+ 'info.interactive.returning.detail': 'Returning to the interactive menu. Pick another action or choose Exit.',
188
+ 'success.interactive.goodbye': 'Goodbye! Thanks for using ai-context.'
189
+ };
190
+ const portugueseMessages = {
191
+ 'cli.name': 'AI Coders Context by aicoders.academy',
192
+ 'cli.tagline': 'Gere documentação e playbooks de agentes com ou sem assistência de IA',
193
+ 'cli.description': 'Crie bases de documentação e playbooks de agentes para o seu repositório',
194
+ 'global.options.lang': 'Idioma para a saída do CLI (en ou pt-BR)',
195
+ 'ui.version': 'Versão {version}',
196
+ 'ui.projectConfiguration.title': '📋 Configuração do Projeto:',
197
+ 'ui.projectConfiguration.repository': 'Repositório:',
198
+ 'ui.projectConfiguration.output': 'Saída:',
199
+ 'ui.projectConfiguration.mode': 'Modo de scaffold:',
200
+ 'ui.progress.starting': 'Iniciando...',
201
+ 'ui.analysis.complete.title': '📊 Análise do repositório concluída',
202
+ 'ui.analysis.files': 'Arquivos',
203
+ 'ui.analysis.directories': 'Diretórios',
204
+ 'ui.analysis.totalSize': 'Tamanho total',
205
+ 'ui.fileTypeDistribution.title': '📁 Distribuição de tipos de arquivo:',
206
+ 'ui.generationSummary.title': '✨ Scaffold concluído!',
207
+ 'ui.generationSummary.documentation': 'Arquivos de documentação',
208
+ 'ui.generationSummary.agents': 'Playbooks de agente',
209
+ 'ui.generationSummary.timeElapsed': 'Tempo decorrido',
210
+ 'ui.generationSummary.nextStep': 'Próximo passo: personalize os templates gerados para o seu projeto.',
211
+ 'ui.error.title': '❌ Ocorreu um erro',
212
+ 'info.prompt.title': 'Prompt do sistema',
213
+ 'info.prompt.usingCustom': 'Usando prompt em {path}.',
214
+ 'info.prompt.usingPackage': 'Usando prompt empacotado em {path}.',
215
+ 'info.prompt.usingBundled': 'Usando prompt padrão incluído no ai-context.',
216
+ 'info.update.available.title': 'Atualização disponível',
217
+ 'info.update.available.detail': 'Uma nova versão {latest} está disponível (atual {current}). Atualize com {command}.',
218
+ 'commands.init.description': 'Gerar bases de documentação e agentes para um repositório',
219
+ 'commands.init.arguments.repoPath': 'Caminho do repositório a ser analisado',
220
+ 'commands.init.arguments.type': 'Tipo de base: "docs", "agents" ou "both" (padrão)',
221
+ 'commands.init.options.output': 'Diretório de saída para os artefatos gerados',
222
+ 'commands.init.options.docs': 'Chaves de documentação a serem geradas (padrão: todas)',
223
+ 'commands.init.options.agents': 'Tipos de agente a serem gerados (padrão: todos)',
224
+ 'commands.init.options.exclude': 'Padrões glob para excluir da análise',
225
+ 'commands.init.options.include': 'Padrões glob para incluir durante a análise',
226
+ 'commands.init.options.verbose': 'Ativa logs detalhados',
227
+ 'commands.scaffold.description': 'Alias para init',
228
+ 'commands.fill.description': 'Usar um assistente de IA para preencher docs e agents com o contexto mais recente do repositório',
229
+ 'commands.fill.arguments.repoPath': 'Caminho da raiz do repositório usado para montar o contexto',
230
+ 'commands.fill.options.output': 'Diretório com docs/ e agents/ gerados pela base',
231
+ 'commands.fill.options.apiKey': 'Chave de API para o provedor de LLM',
232
+ 'commands.fill.options.model': 'Modelo de LLM a ser utilizado',
233
+ 'commands.fill.options.provider': 'Provedor de LLM (openrouter, openai, anthropic, gemini, grok)',
234
+ 'commands.fill.options.baseUrl': 'URL base personalizada para as APIs do provedor',
235
+ 'commands.fill.options.prompt': 'Caminho para o prompt de instrução',
236
+ 'commands.fill.options.dryRun': 'Pré-visualiza as atualizações sem escrever arquivos',
237
+ 'commands.fill.options.all': 'Processa todos os arquivos mesmo sem marcadores TODO',
238
+ 'commands.fill.options.limit': 'Número máximo de arquivos a processar',
239
+ 'commands.fill.options.docs': 'Chaves de documentação a serem atualizadas (padrão: todas)',
240
+ 'commands.fill.options.agents': 'Tipos de agente a serem atualizados (padrão: todos)',
241
+ 'commands.fill.options.exclude': 'Padrões glob para excluir da análise do repositório',
242
+ 'commands.fill.options.include': 'Padrões glob para incluir durante a análise',
243
+ 'commands.fill.options.verbose': 'Ativa logs detalhados',
244
+ 'commands.plan.description': 'Criar um plano de desenvolvimento que conecta docs e playbooks de agentes',
245
+ 'commands.plan.arguments.planName': 'Nome do plano (usado como slug do arquivo)',
246
+ 'commands.plan.options.output': 'Diretório com docs/ e agents/ gerados pela base',
247
+ 'commands.plan.options.title': 'Título personalizado para o plano',
248
+ 'commands.plan.options.summary': 'Resumo inicial para o cabeçalho do plano',
249
+ 'commands.plan.options.agents': 'Tipos de agente em destaque (padrão: todos)',
250
+ 'commands.plan.options.docs': 'Chaves de documentação em destaque (padrão: todas)',
251
+ 'commands.plan.options.force': 'Sobrescreve o plano se ele já existir (modo base)',
252
+ 'commands.plan.options.fill': 'Usa um assistente de IA para preencher ou atualizar o plano em vez de apenas gerar',
253
+ 'commands.plan.options.repo': 'Raiz do repositório para sumarização adicional',
254
+ 'commands.plan.options.apiKey': 'Chave de API para o provedor de LLM',
255
+ 'commands.plan.options.model': 'Modelo de LLM a ser utilizado',
256
+ 'commands.plan.options.provider': 'Provedor de LLM (openrouter, openai, anthropic, gemini, grok)',
257
+ 'commands.plan.options.baseUrl': 'URL base personalizada para as APIs do provedor',
258
+ 'commands.plan.options.prompt': 'Caminho para o prompt de atualização do plano',
259
+ 'commands.plan.options.dryRun': 'Pré-visualiza as atualizações sem escrever arquivos',
260
+ 'commands.plan.options.include': 'Padrões glob para incluir na análise do repositório',
261
+ 'commands.plan.options.exclude': 'Padrões glob para excluir da análise do repositório',
262
+ 'commands.plan.options.verbose': 'Ativa logs detalhados',
263
+ 'errors.init.scaffoldFailed': 'Falha ao gerar os artefatos base',
264
+ 'errors.fill.failed': 'Falha ao preencher documentação e agentes com ajuda de um assistente de IA',
265
+ 'errors.plan.creationFailed': 'Falha ao criar o template do plano',
266
+ 'errors.init.invalidType': 'Tipo de base "{value}" inválido. Use um dos seguintes: {allowed}',
267
+ 'errors.common.repoMissing': 'O caminho do repositório não existe: {path}',
268
+ 'warnings.agents.unknown': 'Ignorando tipos de agente desconhecidos: {values}',
269
+ 'warnings.docs.unknown': 'Ignorando docs desconhecidas: {values}',
270
+ 'warnings.scaffold.noneSelected': 'Nenhuma documentação ou playbook selecionado. Nada a gerar.',
271
+ 'steps.init.analyze': 'Analisando a estrutura do repositório',
272
+ 'steps.init.docs': 'Gerando bases de documentação',
273
+ 'steps.init.agents': 'Gerando playbooks de agentes',
274
+ 'spinner.repo.scanning': 'Escaneando o repositório...',
275
+ 'spinner.repo.scanComplete': 'Encontrados {fileCount} arquivos em {directoryCount} diretórios',
276
+ 'spinner.docs.creating': 'Criando diretório e templates de docs...',
277
+ 'spinner.docs.created': 'Scaffold de documentação criado ({count} arquivos)',
278
+ 'spinner.agents.creating': 'Criando diretório e templates de agentes...',
279
+ 'spinner.agents.created': 'Scaffold de agentes criado ({count} arquivos)',
280
+ 'spinner.plan.creating': 'Criando template de plano...',
281
+ 'spinner.plan.created': 'Template de plano criado',
282
+ 'spinner.plan.creationFailed': 'Falha ao criar o template do plano',
283
+ 'success.scaffold.ready': 'Base disponível em {path}',
284
+ 'success.plan.createdAt': 'Plano criado em {path}',
285
+ 'errors.fill.missingDocsScaffold': 'Scaffold de documentação não encontrado. Execute `ai-context init` primeiro.',
286
+ 'errors.fill.missingAgentsScaffold': 'Scaffold de agentes não encontrado. Execute `ai-context init` primeiro.',
287
+ 'steps.fill.analyze': 'Analisando a estrutura do repositório',
288
+ 'warnings.fill.noTargets': 'Nenhum arquivo Markdown precisava de atualização. Use --all ou adicione marcadores TODO para acionar o assistente de IA.',
289
+ 'steps.fill.processFiles': 'Atualizando {count} arquivos com {model}',
290
+ 'spinner.fill.processing': 'Processando {path}...',
291
+ 'spinner.fill.noContent': 'Nenhum conteúdo recebido para {path}',
292
+ 'messages.fill.emptyResponse': 'Resposta vazia do assistente de IA',
293
+ 'spinner.fill.dryRunPreview': 'Execução simulada - prévia de {path}',
294
+ 'messages.fill.previewStart': '--- Início da prévia ---',
295
+ 'messages.fill.previewEnd': '--- Fim da prévia ---',
296
+ 'spinner.fill.updated': 'Atualizado {path}',
297
+ 'spinner.fill.failed': 'Falha em {path}',
298
+ 'steps.fill.summary': 'Resumindo o uso do assistente de IA',
299
+ 'success.fill.completed': 'Preenchimento com assistente de IA concluído. Revise as mudanças e faça o commit quando estiver pronto.',
300
+ 'errors.plan.invalidName': 'O nome do plano deve conter ao menos um caractere alfanumérico.',
301
+ 'messages.plan.regenerated': 'Regerado {path} antes do preenchimento com assistente de IA.',
302
+ 'messages.plan.created': 'Criado {path} antes do preenchimento com assistente de IA.',
303
+ 'info.plan.scaffolded.title': 'Plano criado',
304
+ 'errors.plan.missingPlansDir': 'Diretório de planos não encontrado. Execute `ai-context plan <nome>` para criar um.',
305
+ 'errors.plan.notFound': 'Plano não encontrado. Esperado {expected}.',
306
+ 'steps.plan.summary': 'Resumindo estado do repositório',
307
+ 'spinner.planFill.analyzingRepo': 'Analisando repositório...',
308
+ 'spinner.planFill.summaryReady': 'Resumo do repositório pronto',
309
+ 'steps.plan.update': 'Atualizando {path} com {model}',
310
+ 'spinner.planFill.updating': 'Preenchendo {path}...',
311
+ 'spinner.planFill.noContent': 'Nenhum conteúdo recebido do assistente de IA',
312
+ 'spinner.planFill.dryRun': 'Execução simulada - prévia a seguir',
313
+ 'spinner.planFill.updated': 'Atualizado {path}',
314
+ 'spinner.planFill.failed': 'Falha ao preencher o plano',
315
+ 'steps.plan.summaryResults': 'Resumindo o uso do assistente de IA',
316
+ 'success.plan.filled': 'Preenchimento do plano concluído. Revise as atualizações e faça o commit quando estiver pronto.',
317
+ 'errors.commands.analyzeRemoved': 'O comando analyze foi removido na versão focada em bases do ai-context.',
318
+ 'errors.commands.updateRemoved': 'O comando update não é mais suportado. Execute `ai-context init` novamente para atualizar as bases.',
319
+ 'errors.commands.previewRemoved': 'O modo de pré-visualização foi descontinuado. Use diretamente os docs e playbooks gerados.',
320
+ 'errors.commands.guidelinesRemoved': 'A geração de guidelines dependia de LLMs e não está mais disponível.',
321
+ 'errors.cli.executionFailed': 'Falha na execução do CLI',
322
+ 'warnings.interactive.nothingSelected': 'Nada selecionado. Abortando.',
323
+ 'prompts.main.action': 'O que você gostaria de fazer?',
324
+ 'prompts.main.choice.scaffold': 'Gerar bases de documentação/agentes',
325
+ 'prompts.main.choice.fill': 'Preencher docs e agentes com um LLM',
326
+ 'prompts.main.choice.plan': 'Criar um plano de desenvolvimento',
327
+ 'prompts.main.choice.changeLanguage': 'Mudar idioma',
328
+ 'prompts.main.choice.exit': 'Sair do modo interativo',
329
+ 'prompts.scaffold.repoPath': 'Caminho do repositório para analisar',
330
+ 'prompts.scaffold.includeDocs': 'Gerar bases de documentação?',
331
+ 'prompts.scaffold.selectDocs': 'Selecione as guias de documentação para gerar bases',
332
+ 'prompts.scaffold.includeAgents': 'Gerar playbooks de agentes?',
333
+ 'prompts.scaffold.selectAgents': 'Selecione os playbooks de agente para gerar bases',
334
+ 'prompts.common.verbose': 'Ativar logs detalhados?',
335
+ 'prompts.fill.repoPath': 'Caminho do repositório que contém a base',
336
+ 'prompts.fill.promptPath': 'Caminho do prompt personalizado (deixe em branco para usar o padrão incluso)',
337
+ 'prompts.fill.dryRun': 'Pré-visualizar alterações sem escrever arquivos?',
338
+ 'prompts.fill.processAll': 'Processar todos os arquivos Markdown independentemente dos marcadores?',
339
+ 'prompts.fill.limit': 'Número máximo de arquivos a atualizar (deixe em branco para todos)',
340
+ 'prompts.fill.includeDocs': 'Incluir arquivos de documentação?',
341
+ 'prompts.fill.selectDocs': 'Selecione as guias de documentação para atualizar',
342
+ 'prompts.fill.includeAgents': 'Incluir playbooks de agentes?',
343
+ 'prompts.fill.selectAgents': 'Selecione os playbooks de agente para atualizar',
344
+ 'prompts.fill.overrideModel': 'Sobrescrever configuração de provedor/modelo?',
345
+ 'prompts.fill.provider': 'Selecione o provedor',
346
+ 'prompts.fill.model': 'Identificador do modelo',
347
+ 'prompts.fill.provideApiKey': 'Informar uma chave de API para esta execução?',
348
+ 'prompts.fill.apiKey': 'Chave de API',
349
+ 'prompts.plan.name': 'Nome do plano (usado no slug do arquivo)',
350
+ 'prompts.plan.mode': 'Como você quer trabalhar com este plano?',
351
+ 'prompts.plan.modeScaffold': 'Gerar um template de plano',
352
+ 'prompts.plan.modeFill': 'Preencher um plano existente com ajuda de um assistente de IA',
353
+ 'prompts.plan.summary': 'Resumo opcional para iniciar o plano (deixe em branco para adicionar depois)',
354
+ 'prompts.plan.includeAgents': 'Referenciar playbooks de agente no plano?',
355
+ 'prompts.plan.selectAgents': 'Selecione os playbooks de agente para destacar',
356
+ 'prompts.plan.includeDocs': 'Vincular guias de documentação no plano?',
357
+ 'prompts.plan.selectDocs': 'Selecione as guias de documentação para referenciar',
358
+ 'prompts.plan.repoPath': 'Raiz do repositório para contexto',
359
+ 'prompts.plan.dryRun': 'Pré-visualizar atualizações sem escrever arquivos?',
360
+ 'prompts.language.select': 'Escolha o idioma do CLI / Choose the CLI language',
361
+ 'prompts.language.option.en': 'Inglês / English',
362
+ 'prompts.language.option.pt-BR': 'Português (Brasil) / Portuguese (Brazil)',
363
+ 'errors.plan.fillFailed': 'Falha ao preencher o plano com ajuda de um assistente de IA',
364
+ 'errors.fill.promptMissing': 'Arquivo de prompt não encontrado em {path}.',
365
+ 'errors.fill.apiKeyMissing': 'É necessária uma chave de API {provider}. Defina uma das variáveis {envVars} ou use --api-key.',
366
+ 'info.interactive.returning.title': 'Menu principal',
367
+ 'info.interactive.returning.detail': 'Voltando ao menu interativo. Escolha outra ação ou selecione Sair.',
368
+ 'success.interactive.goodbye': 'Até logo! Obrigado por usar o ai-context.'
369
+ };
370
+ const dictionaries = {
371
+ en: englishMessages,
372
+ 'pt-BR': portugueseMessages
373
+ };
374
+ function createTranslator(locale) {
375
+ const normalized = normalizeLocale(locale);
376
+ return (key, params) => {
377
+ const dictionary = dictionaries[normalized] || dictionaries[exports.DEFAULT_LOCALE];
378
+ const fallback = dictionaries[exports.DEFAULT_LOCALE];
379
+ const template = dictionary[key] ?? fallback[key];
380
+ return fillTemplate(template, params);
381
+ };
382
+ }
383
+ function normalizeLocale(locale) {
384
+ return exports.SUPPORTED_LOCALES.find(candidate => candidate.toLowerCase() === locale.toLowerCase()) || exports.DEFAULT_LOCALE;
385
+ }
386
+ function detectLocale(argv, envLocale) {
387
+ const candidateFromArgs = extractLocaleFromArgs(argv);
388
+ if (candidateFromArgs) {
389
+ return normalizeLocale(candidateFromArgs);
390
+ }
391
+ if (envLocale) {
392
+ return normalizeLocale(envLocale);
393
+ }
394
+ return exports.DEFAULT_LOCALE;
395
+ }
396
+ function extractLocaleFromArgs(argv) {
397
+ for (let index = 0; index < argv.length; index += 1) {
398
+ const segment = argv[index];
399
+ if (segment === '--lang' || segment === '--language' || segment === '-l') {
400
+ return argv[index + 1];
401
+ }
402
+ if (segment.startsWith('--lang=')) {
403
+ return segment.split('=')[1];
404
+ }
405
+ if (segment.startsWith('--language=')) {
406
+ return segment.split('=')[1];
407
+ }
408
+ }
409
+ return undefined;
410
+ }
411
+ function fillTemplate(template, params) {
412
+ if (!params) {
413
+ return template;
414
+ }
415
+ return template.replace(/\{(\w+)\}/g, (_match, key) => {
416
+ const value = params[key];
417
+ return value === undefined ? '' : String(value);
418
+ });
419
+ }
420
+ function isSupportedLocale(locale) {
421
+ return exports.SUPPORTED_LOCALES.some(candidate => candidate.toLowerCase() === locale.toLowerCase());
422
+ }
423
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import * as fs from 'fs-extra';
2
+ type FileSystem = typeof fs;
3
+ export type PromptSource = 'custom' | 'package' | 'builtin';
4
+ export interface PromptResolution {
5
+ content: string;
6
+ source: PromptSource;
7
+ path?: string;
8
+ }
9
+ export declare function resolveScaffoldPrompt(customPath: string | undefined, missingCustomPromptMessage: (resolvedPath: string) => string, fsModule?: FileSystem): Promise<PromptResolution>;
10
+ export declare function resolvePlanPrompt(customPath: string | undefined, missingCustomPromptMessage: (resolvedPath: string) => string, fsModule?: FileSystem): Promise<PromptResolution>;
11
+ export {};
12
+ //# sourceMappingURL=promptLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptLoader.d.ts","sourceRoot":"","sources":["../../src/utils/promptLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAI/B,KAAK,UAAU,GAAG,OAAO,EAAE,CAAC;AAE5B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA6CD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,0BAA0B,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,EAC5D,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,0BAA0B,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,EAC5D,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.resolveScaffoldPrompt = resolveScaffoldPrompt;
37
+ exports.resolvePlanPrompt = resolvePlanPrompt;
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs-extra"));
40
+ const defaults_1 = require("../prompts/defaults");
41
+ async function resolvePrompt({ customPath, fallbackFileName, fallbackContent, missingCustomPromptMessage, fsModule }) {
42
+ const fileSystem = fsModule ?? fs;
43
+ if (customPath) {
44
+ const resolvedCustomPath = path.resolve(customPath);
45
+ if (!(await fileSystem.pathExists(resolvedCustomPath))) {
46
+ throw new Error(missingCustomPromptMessage(resolvedCustomPath));
47
+ }
48
+ const content = await fileSystem.readFile(resolvedCustomPath, 'utf-8');
49
+ return { content, source: 'custom', path: resolvedCustomPath };
50
+ }
51
+ const candidatePaths = [
52
+ path.resolve(__dirname, '../../prompts', fallbackFileName),
53
+ path.resolve(__dirname, '../prompts', fallbackFileName)
54
+ ];
55
+ for (const candidatePath of candidatePaths) {
56
+ if (await fileSystem.pathExists(candidatePath)) {
57
+ const content = await fileSystem.readFile(candidatePath, 'utf-8');
58
+ return { content, source: 'package', path: candidatePath };
59
+ }
60
+ }
61
+ return { content: fallbackContent, source: 'builtin' };
62
+ }
63
+ function resolveScaffoldPrompt(customPath, missingCustomPromptMessage, fsModule) {
64
+ return resolvePrompt({
65
+ customPath,
66
+ fallbackFileName: 'update_scaffold_prompt.md',
67
+ fallbackContent: defaults_1.UPDATE_SCAFFOLD_PROMPT_FALLBACK,
68
+ missingCustomPromptMessage,
69
+ fsModule
70
+ });
71
+ }
72
+ function resolvePlanPrompt(customPath, missingCustomPromptMessage, fsModule) {
73
+ return resolvePrompt({
74
+ customPath,
75
+ fallbackFileName: 'update_plan_prompt.md',
76
+ fallbackContent: defaults_1.UPDATE_PLAN_PROMPT_FALLBACK,
77
+ missingCustomPromptMessage,
78
+ fsModule
79
+ });
80
+ }
81
+ //# sourceMappingURL=promptLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptLoader.js","sourceRoot":"","sources":["../../src/utils/promptLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DA,sDAYC;AAED,8CAYC;AApFD,2CAA6B;AAC7B,6CAA+B;AAE/B,kDAAmG;AAoBnG,KAAK,UAAU,aAAa,CAAC,EAC3B,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,QAAQ,EACa;IACrB,MAAM,UAAU,GAAG,QAAQ,IAAI,EAAE,CAAC;IAElC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC;KACxD,CAAC;IAEF,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC;AAED,SAAgB,qBAAqB,CACnC,UAA8B,EAC9B,0BAA4D,EAC5D,QAAqB;IAErB,OAAO,aAAa,CAAC;QACnB,UAAU;QACV,gBAAgB,EAAE,2BAA2B;QAC7C,eAAe,EAAE,0CAA+B;QAChD,0BAA0B;QAC1B,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,iBAAiB,CAC/B,UAA8B,EAC9B,0BAA4D,EAC5D,QAAqB;IAErB,OAAO,aAAa,CAAC;QACnB,UAAU;QACV,gBAAgB,EAAE,uBAAuB;QACzC,eAAe,EAAE,sCAA2B;QAC5C,0BAA0B;QAC1B,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { CLIInterface } from './cliUI';
2
+ import type { TranslateFn } from './i18n';
3
+ interface VersionCheckOptions {
4
+ packageName: string;
5
+ currentVersion: string;
6
+ ui: Pick<CLIInterface, 'displayInfo'>;
7
+ t: TranslateFn;
8
+ registryTimeoutMs?: number;
9
+ fetcher?: (packageName: string, timeoutMs: number) => Promise<string>;
10
+ updateCommand?: string;
11
+ force?: boolean;
12
+ }
13
+ export declare function checkForUpdates(options: VersionCheckOptions): Promise<void>;
14
+ export {};
15
+ //# sourceMappingURL=versionChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionChecker.d.ts","sourceRoot":"","sources":["../../src/utils/versionChecker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACtC,CAAC,EAAE,WAAW,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAeD,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CjF"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.checkForUpdates = checkForUpdates;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const semver_1 = require("semver");
9
+ const DEFAULT_TIMEOUT_MS = 2000;
10
+ const DISABLE_ENV_FLAGS = ['AI_CONTEXT_DISABLE_UPDATE_CHECK', 'NO_UPDATE_NOTIFIER'];
11
+ async function fetchLatestVersion(packageName, timeoutMs) {
12
+ const url = `https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`;
13
+ const response = await axios_1.default.get(url, { timeout: timeoutMs });
14
+ if (!response.data?.version) {
15
+ throw new Error('missing-version');
16
+ }
17
+ return response.data.version;
18
+ }
19
+ async function checkForUpdates(options) {
20
+ const { packageName, currentVersion, ui, t, registryTimeoutMs = DEFAULT_TIMEOUT_MS, fetcher, updateCommand, force = false } = options;
21
+ if (!force) {
22
+ if (process.env.NODE_ENV === 'test' || process.env.CI === 'true') {
23
+ return;
24
+ }
25
+ for (const envFlag of DISABLE_ENV_FLAGS) {
26
+ const value = process.env[envFlag];
27
+ if (typeof value === 'string' && value.toLowerCase() !== 'false') {
28
+ return;
29
+ }
30
+ }
31
+ }
32
+ try {
33
+ const latestVersion = await (fetcher
34
+ ? fetcher(packageName, registryTimeoutMs)
35
+ : fetchLatestVersion(packageName, registryTimeoutMs));
36
+ if ((0, semver_1.gt)(latestVersion, currentVersion)) {
37
+ const command = updateCommand ?? `npm install -g ${packageName}`;
38
+ ui.displayInfo(t('info.update.available.title'), t('info.update.available.detail', {
39
+ latest: latestVersion,
40
+ current: currentVersion,
41
+ command
42
+ }));
43
+ }
44
+ }
45
+ catch (error) {
46
+ // Swallow errors silently; update hints should never block the CLI.
47
+ }
48
+ }
49
+ //# sourceMappingURL=versionChecker.js.map