@everydaydevopsio/ballast 3.2.1 → 4.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.
Files changed (99) hide show
  1. package/agents/go/linting/content.md +13 -0
  2. package/agents/go/linting/templates/claude-header.md +5 -0
  3. package/agents/go/linting/templates/codex-header.md +5 -0
  4. package/agents/go/linting/templates/cursor-frontmatter.yaml +7 -0
  5. package/agents/go/linting/templates/opencode-frontmatter.yaml +17 -0
  6. package/agents/go/logging/content.md +8 -0
  7. package/agents/go/logging/templates/claude-header.md +5 -0
  8. package/agents/go/logging/templates/codex-header.md +5 -0
  9. package/agents/go/logging/templates/cursor-frontmatter.yaml +6 -0
  10. package/agents/go/logging/templates/opencode-frontmatter.yaml +17 -0
  11. package/agents/go/testing/content.md +13 -0
  12. package/agents/go/testing/templates/claude-header.md +5 -0
  13. package/agents/go/testing/templates/codex-header.md +5 -0
  14. package/agents/go/testing/templates/cursor-frontmatter.yaml +6 -0
  15. package/agents/go/testing/templates/opencode-frontmatter.yaml +17 -0
  16. package/agents/python/linting/content.md +21 -0
  17. package/agents/python/linting/templates/claude-header.md +5 -0
  18. package/agents/python/linting/templates/codex-header.md +5 -0
  19. package/agents/python/linting/templates/cursor-frontmatter.yaml +8 -0
  20. package/agents/python/linting/templates/opencode-frontmatter.yaml +17 -0
  21. package/agents/python/logging/content.md +9 -0
  22. package/agents/python/logging/templates/claude-header.md +5 -0
  23. package/agents/python/logging/templates/codex-header.md +5 -0
  24. package/agents/python/logging/templates/cursor-frontmatter.yaml +6 -0
  25. package/agents/python/logging/templates/opencode-frontmatter.yaml +17 -0
  26. package/agents/python/testing/content.md +13 -0
  27. package/agents/python/testing/templates/claude-header.md +5 -0
  28. package/agents/python/testing/templates/codex-header.md +5 -0
  29. package/agents/python/testing/templates/cursor-frontmatter.yaml +8 -0
  30. package/agents/python/testing/templates/opencode-frontmatter.yaml +17 -0
  31. package/agents/{linting → typescript/linting}/content.md +4 -11
  32. package/dist/agents.d.ts +9 -5
  33. package/dist/agents.d.ts.map +1 -1
  34. package/dist/agents.js +42 -17
  35. package/dist/agents.js.map +1 -1
  36. package/dist/build.d.ts +11 -10
  37. package/dist/build.d.ts.map +1 -1
  38. package/dist/build.js +32 -31
  39. package/dist/build.js.map +1 -1
  40. package/dist/cli.d.ts +1 -0
  41. package/dist/cli.d.ts.map +1 -1
  42. package/dist/cli.js +18 -2
  43. package/dist/cli.js.map +1 -1
  44. package/dist/config.d.ts +7 -6
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +29 -11
  47. package/dist/config.js.map +1 -1
  48. package/dist/install.d.ts +5 -1
  49. package/dist/install.d.ts.map +1 -1
  50. package/dist/install.js +37 -19
  51. package/dist/install.js.map +1 -1
  52. package/package.json +16 -13
  53. package/LICENSE +0 -21
  54. package/README.md +0 -176
  55. /package/agents/{cicd → common/cicd}/content.md +0 -0
  56. /package/agents/{cicd → common/cicd}/templates/claude-header.md +0 -0
  57. /package/agents/{cicd → common/cicd}/templates/codex-header.md +0 -0
  58. /package/agents/{cicd → common/cicd}/templates/cursor-frontmatter.yaml +0 -0
  59. /package/agents/{cicd → common/cicd}/templates/opencode-frontmatter.yaml +0 -0
  60. /package/agents/{local-dev → common/local-dev}/content-badges.md +0 -0
  61. /package/agents/{local-dev → common/local-dev}/content-env.md +0 -0
  62. /package/agents/{local-dev → common/local-dev}/content-license.md +0 -0
  63. /package/agents/{local-dev → common/local-dev}/content-mcp.md +0 -0
  64. /package/agents/{local-dev → common/local-dev}/templates/claude-header-badges.md +0 -0
  65. /package/agents/{local-dev → common/local-dev}/templates/claude-header-license.md +0 -0
  66. /package/agents/{local-dev → common/local-dev}/templates/claude-header-mcp.md +0 -0
  67. /package/agents/{local-dev → common/local-dev}/templates/claude-header.md +0 -0
  68. /package/agents/{local-dev → common/local-dev}/templates/codex-header-badges.md +0 -0
  69. /package/agents/{local-dev → common/local-dev}/templates/codex-header-license.md +0 -0
  70. /package/agents/{local-dev → common/local-dev}/templates/codex-header-mcp.md +0 -0
  71. /package/agents/{local-dev → common/local-dev}/templates/codex-header.md +0 -0
  72. /package/agents/{local-dev → common/local-dev}/templates/cursor-frontmatter-badges.yaml +0 -0
  73. /package/agents/{local-dev → common/local-dev}/templates/cursor-frontmatter-env.yaml +0 -0
  74. /package/agents/{local-dev → common/local-dev}/templates/cursor-frontmatter-license.yaml +0 -0
  75. /package/agents/{local-dev → common/local-dev}/templates/cursor-frontmatter-mcp.yaml +0 -0
  76. /package/agents/{local-dev → common/local-dev}/templates/cursor-frontmatter.yaml +0 -0
  77. /package/agents/{local-dev → common/local-dev}/templates/opencode-frontmatter-badges.yaml +0 -0
  78. /package/agents/{local-dev → common/local-dev}/templates/opencode-frontmatter-license.yaml +0 -0
  79. /package/agents/{local-dev → common/local-dev}/templates/opencode-frontmatter-mcp.yaml +0 -0
  80. /package/agents/{local-dev → common/local-dev}/templates/opencode-frontmatter.yaml +0 -0
  81. /package/agents/{observability → common/observability}/content.md +0 -0
  82. /package/agents/{observability → common/observability}/templates/claude-header.md +0 -0
  83. /package/agents/{observability → common/observability}/templates/codex-header.md +0 -0
  84. /package/agents/{observability → common/observability}/templates/cursor-frontmatter.yaml +0 -0
  85. /package/agents/{observability → common/observability}/templates/opencode-frontmatter.yaml +0 -0
  86. /package/agents/{linting → typescript/linting}/templates/claude-header.md +0 -0
  87. /package/agents/{linting → typescript/linting}/templates/codex-header.md +0 -0
  88. /package/agents/{linting → typescript/linting}/templates/cursor-frontmatter.yaml +0 -0
  89. /package/agents/{linting → typescript/linting}/templates/opencode-frontmatter.yaml +0 -0
  90. /package/agents/{logging → typescript/logging}/content.md +0 -0
  91. /package/agents/{logging → typescript/logging}/templates/claude-header.md +0 -0
  92. /package/agents/{logging → typescript/logging}/templates/codex-header.md +0 -0
  93. /package/agents/{logging → typescript/logging}/templates/cursor-frontmatter.yaml +0 -0
  94. /package/agents/{logging → typescript/logging}/templates/opencode-frontmatter.yaml +0 -0
  95. /package/agents/{testing → typescript/testing}/content.md +0 -0
  96. /package/agents/{testing → typescript/testing}/templates/claude-header.md +0 -0
  97. /package/agents/{testing → typescript/testing}/templates/codex-header.md +0 -0
  98. /package/agents/{testing → typescript/testing}/templates/cursor-frontmatter.yaml +0 -0
  99. /package/agents/{testing → typescript/testing}/templates/opencode-frontmatter.yaml +0 -0
package/dist/build.js CHANGED
@@ -29,8 +29,8 @@ const CONTENT_MAIN = `${CONTENT_PREFIX}.md`;
29
29
  * List rule suffixes for an agent. content.md → suffix ''; content-<suffix>.md → suffix.
30
30
  * At least one of content.md or content-*.md must exist.
31
31
  */
32
- function listRuleSuffixes(agentId) {
33
- const dir = (0, agents_1.getAgentDir)(agentId);
32
+ function listRuleSuffixes(agentId, language = 'typescript') {
33
+ const dir = (0, agents_1.getAgentDir)(agentId, language);
34
34
  if (!fs_1.default.existsSync(dir)) {
35
35
  throw new Error(`Agent "${agentId}" has no content.md or content-*.md`);
36
36
  }
@@ -57,8 +57,8 @@ function listRuleSuffixes(agentId) {
57
57
  /**
58
58
  * Read agent content for a rule. ruleSuffix '' or undefined = content.md; else content-<suffix>.md.
59
59
  */
60
- function getContent(agentId, ruleSuffix) {
61
- const dir = (0, agents_1.getAgentDir)(agentId);
60
+ function getContent(agentId, ruleSuffix, language = 'typescript') {
61
+ const dir = (0, agents_1.getAgentDir)(agentId, language);
62
62
  const basename = ruleSuffix
63
63
  ? `${CONTENT_PREFIX}-${ruleSuffix}.md`
64
64
  : CONTENT_MAIN;
@@ -71,8 +71,8 @@ function getContent(agentId, ruleSuffix) {
71
71
  /**
72
72
  * Read agent template file. Tries rule-specific template first (e.g. cursor-frontmatter-mcp.yaml).
73
73
  */
74
- function getTemplate(agentId, filename, ruleSuffix) {
75
- const dir = (0, agents_1.getAgentDir)(agentId);
74
+ function getTemplate(agentId, filename, ruleSuffix, language = 'typescript') {
75
+ const dir = (0, agents_1.getAgentDir)(agentId, language);
76
76
  const base = filename.replace(/\.[^.]+$/, '');
77
77
  const ext = path_1.default.extname(filename);
78
78
  if (ruleSuffix) {
@@ -90,37 +90,37 @@ function getTemplate(agentId, filename, ruleSuffix) {
90
90
  /**
91
91
  * Build content for Cursor (.mdc = frontmatter + content)
92
92
  */
93
- function buildCursorFormat(agentId, ruleSuffix) {
94
- const frontmatter = getTemplate(agentId, 'cursor-frontmatter.yaml', ruleSuffix);
95
- const content = getContent(agentId, ruleSuffix);
93
+ function buildCursorFormat(agentId, ruleSuffix, language = 'typescript') {
94
+ const frontmatter = getTemplate(agentId, 'cursor-frontmatter.yaml', ruleSuffix, language);
95
+ const content = getContent(agentId, ruleSuffix, language);
96
96
  return frontmatter + '\n' + content;
97
97
  }
98
98
  /**
99
99
  * Build content for Claude (header + content)
100
100
  */
101
- function buildClaudeFormat(agentId, ruleSuffix) {
102
- const header = getTemplate(agentId, 'claude-header.md', ruleSuffix);
103
- const content = getContent(agentId, ruleSuffix);
101
+ function buildClaudeFormat(agentId, ruleSuffix, language = 'typescript') {
102
+ const header = getTemplate(agentId, 'claude-header.md', ruleSuffix, language);
103
+ const content = getContent(agentId, ruleSuffix, language);
104
104
  return header + content;
105
105
  }
106
106
  /**
107
107
  * Build content for OpenCode (YAML frontmatter + content)
108
108
  */
109
- function buildOpenCodeFormat(agentId, ruleSuffix) {
110
- const frontmatter = getTemplate(agentId, 'opencode-frontmatter.yaml', ruleSuffix);
111
- const content = getContent(agentId, ruleSuffix);
109
+ function buildOpenCodeFormat(agentId, ruleSuffix, language = 'typescript') {
110
+ const frontmatter = getTemplate(agentId, 'opencode-frontmatter.yaml', ruleSuffix, language);
111
+ const content = getContent(agentId, ruleSuffix, language);
112
112
  return frontmatter + '\n' + content;
113
113
  }
114
- function getCodexHeader(agentId, ruleSuffix) {
114
+ function getCodexHeader(agentId, ruleSuffix, language = 'typescript') {
115
115
  let codexError;
116
116
  try {
117
- return getTemplate(agentId, 'codex-header.md', ruleSuffix);
117
+ return getTemplate(agentId, 'codex-header.md', ruleSuffix, language);
118
118
  }
119
119
  catch (err) {
120
120
  codexError = err;
121
121
  }
122
122
  try {
123
- return getTemplate(agentId, 'claude-header.md', ruleSuffix);
123
+ return getTemplate(agentId, 'claude-header.md', ruleSuffix, language);
124
124
  }
125
125
  catch (claudeError) {
126
126
  const codexMsg = codexError instanceof Error ? codexError.message : String(codexError);
@@ -131,9 +131,9 @@ function getCodexHeader(agentId, ruleSuffix) {
131
131
  /**
132
132
  * Build content for Codex (header + content)
133
133
  */
134
- function buildCodexFormat(agentId, ruleSuffix) {
135
- const header = getCodexHeader(agentId, ruleSuffix);
136
- const content = getContent(agentId, ruleSuffix);
134
+ function buildCodexFormat(agentId, ruleSuffix, language = 'typescript') {
135
+ const header = getCodexHeader(agentId, ruleSuffix, language);
136
+ const content = getContent(agentId, ruleSuffix, language);
137
137
  return header + content;
138
138
  }
139
139
  function extractDescriptionFromFrontmatter(frontmatter) {
@@ -153,16 +153,16 @@ function extractDescriptionFromFrontmatter(frontmatter) {
153
153
  return null;
154
154
  }
155
155
  }
156
- function getCodexRuleDescription(agentId, ruleSuffix) {
156
+ function getCodexRuleDescription(agentId, ruleSuffix, language = 'typescript') {
157
157
  try {
158
- const frontmatter = getTemplate(agentId, 'cursor-frontmatter.yaml', ruleSuffix);
158
+ const frontmatter = getTemplate(agentId, 'cursor-frontmatter.yaml', ruleSuffix, language);
159
159
  return extractDescriptionFromFrontmatter(frontmatter);
160
160
  }
161
161
  catch {
162
162
  return null;
163
163
  }
164
164
  }
165
- function buildCodexAgentsMd(agents) {
165
+ function buildCodexAgentsMd(agents, language = 'typescript') {
166
166
  const lines = [];
167
167
  lines.push('# AGENTS.md');
168
168
  lines.push('');
@@ -173,10 +173,11 @@ function buildCodexAgentsMd(agents) {
173
173
  lines.push('Read and follow these rule files in `.codex/rules/` when they apply:');
174
174
  lines.push('');
175
175
  for (const agentId of agents) {
176
- const suffixes = listRuleSuffixes(agentId);
176
+ const suffixes = listRuleSuffixes(agentId, language);
177
177
  for (const ruleSuffix of suffixes) {
178
178
  const basename = ruleSuffix ? `${agentId}-${ruleSuffix}` : agentId;
179
- const description = getCodexRuleDescription(agentId, ruleSuffix) ?? `Rules for ${basename}`;
179
+ const description = getCodexRuleDescription(agentId, ruleSuffix, language) ??
180
+ `Rules for ${basename}`;
180
181
  lines.push(`- \`.codex/rules/${basename}.md\` — ${description}`);
181
182
  }
182
183
  }
@@ -186,16 +187,16 @@ function buildCodexAgentsMd(agents) {
186
187
  /**
187
188
  * Build content for the given agent, target, and optional rule suffix
188
189
  */
189
- function buildContent(agentId, target, ruleSuffix) {
190
+ function buildContent(agentId, target, ruleSuffix, language = 'typescript') {
190
191
  switch (target) {
191
192
  case 'cursor':
192
- return buildCursorFormat(agentId, ruleSuffix);
193
+ return buildCursorFormat(agentId, ruleSuffix, language);
193
194
  case 'claude':
194
- return buildClaudeFormat(agentId, ruleSuffix);
195
+ return buildClaudeFormat(agentId, ruleSuffix, language);
195
196
  case 'opencode':
196
- return buildOpenCodeFormat(agentId, ruleSuffix);
197
+ return buildOpenCodeFormat(agentId, ruleSuffix, language);
197
198
  case 'codex':
198
- return buildCodexFormat(agentId, ruleSuffix);
199
+ return buildCodexFormat(agentId, ruleSuffix, language);
199
200
  default:
200
201
  throw new Error(`Unknown target: ${target}`);
201
202
  }
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":";;;;;AAiBA,4CA4BC;AAKD,gCAcC;AAKD,kCAoBC;AAKD,8CAaC;AAKD,8CAQC;AAKD,kDAaC;AA8BD,4CAQC;AAED,8EAiBC;AAED,0DAgBC;AAED,gDA6BC;AAKD,oCAkBC;AAKD,wCAgCC;AAKD,oDAEC;AAKD,kCAEC;AA9TD,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,qCAAuC;AAIvC,MAAM,OAAO,GAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAEpE,4FAA4F;AAC5F,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,YAAY,GAAG,GAAG,cAAc,KAAK,CAAC;AAE5C;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,OAAe,EACf,WAAqB,YAAY;IAEjC,MAAM,GAAG,GAAG,IAAA,oBAAW,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,qCAAqC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IACE,CAAC,CAAC,CAAC,MAAM,EAAE;YACX,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC;YACxC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAEvB,SAAS;QACX,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,qCAAqC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,MAAM,GAAG,GAAG,IAAA,oBAAW,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU;QACzB,CAAC,CAAC,GAAG,cAAc,IAAI,UAAU,KAAK;QACtC,CAAC,CAAC,YAAY,CAAC;IACjB,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,YAAY,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,OAAe,EACf,QAAgB,EAChB,UAAmB,EACnB,WAAqB,YAAY;IAEjC,MAAM,GAAG,GAAG,IAAA,oBAAW,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC;QAC5E,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,uBAAuB,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,MAAM,WAAW,GAAG,WAAW,CAC7B,OAAO,EACP,yBAAyB,EACzB,UAAU,EACV,QAAQ,CACT,CAAC;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,MAAM,WAAW,GAAG,WAAW,CAC7B,OAAO,EACP,2BAA2B,EAC3B,UAAU,EACV,QAAQ,CACT,CAAC;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,GAAG,GAAG,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,MAAM,QAAQ,GACZ,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxE,MAAM,SAAS,GACb,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,UAAU,OAAO,kDAAkD,QAAQ,oCAAoC,SAAS,GAAG,EAC3H,EAAE,KAAK,EAAE,WAAW,EAAE,CACvB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,SAAgB,iCAAiC,CAC/C,WAAmB;IAEnB,IAAI,CAAC;QACH,6EAA6E;QAC7E,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACnD,MAAM,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,CAAC;QACxC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,OAAO,IAAI,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,uBAAuB,CACrC,OAAe,EACf,UAAmB,EACnB,WAAqB,YAAY;IAEjC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,WAAW,CAC7B,OAAO,EACP,yBAAyB,EACzB,UAAU,EACV,QAAQ,CACT,CAAC;QACF,OAAO,iCAAiC,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,MAAgB,EAChB,WAAqB,YAAY;IAEjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,oFAAoF,CACrF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,sEAAsE,CACvE,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,WAAW,GACf,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;gBACtD,aAAa,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,oBAAoB,QAAQ,WAAW,WAAW,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,MAAc,EACd,UAAmB,EACnB,WAAqB,YAAY;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1D,KAAK,UAAU;YACb,OAAO,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5D,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzD;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,MAAc,EACd,WAAmB,EACnB,UAAmB;IAEnB,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;YAC/C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;YAC9C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;YAC9C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;YAC9C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  export interface CliOptions {
3
3
  target?: string;
4
4
  agents: string[];
5
+ language: string;
5
6
  all: boolean;
6
7
  force: boolean;
7
8
  yes: boolean;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC"}
package/dist/cli.js CHANGED
@@ -2,11 +2,13 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const install_1 = require("./install");
5
+ const agents_1 = require("./agents");
5
6
  function parseArgs(argv) {
6
7
  const args = argv.slice(2);
7
8
  const options = {
8
9
  target: undefined,
9
10
  agents: [],
11
+ language: 'typescript',
10
12
  all: false,
11
13
  force: false,
12
14
  yes: false
@@ -27,6 +29,13 @@ function parseArgs(argv) {
27
29
  i++;
28
30
  continue;
29
31
  }
32
+ if (arg === '--language' || arg === '-l') {
33
+ const value = args[++i];
34
+ if (value)
35
+ options.language = value.trim().toLowerCase();
36
+ i++;
37
+ continue;
38
+ }
30
39
  if (arg === '--all') {
31
40
  options.all = true;
32
41
  i++;
@@ -64,16 +73,18 @@ Commands:
64
73
 
65
74
  Options:
66
75
  --target, -t <platform> AI platform: cursor, claude, opencode, codex
76
+ --language, -l <lang> Language profile: ${agents_1.LANGUAGES.join(', ')} (default: typescript)
67
77
  --agent, -a <agents> Agent(s): linting, local-dev, cicd, observability, logging, testing (comma-separated)
68
78
  --all Install all agents
69
79
  --force, -f Overwrite existing rule files
70
- --yes, -y Non-interactive; require --target and --agent/--all if no .rulesrc.json
80
+ --yes, -y Non-interactive; require --target and --agent/--all if no .rulesrc.ts.json
71
81
  --help, -h Show this help
72
82
  --version, -v Show version
73
83
 
74
84
  Examples:
75
85
  ballast install
76
86
  ballast install --target cursor --agent linting
87
+ ballast install --language python --target cursor --all
77
88
  ballast install --target claude --all --force
78
89
  ballast install --yes --target cursor --all
79
90
  `);
@@ -108,7 +119,12 @@ async function main() {
108
119
  printVersion();
109
120
  process.exit(0);
110
121
  }
111
- const exitCode = await (0, install_1.runInstall)(options);
122
+ const cliOptions = options;
123
+ if (!agents_1.LANGUAGES.includes(cliOptions.language)) {
124
+ console.error(`Invalid language: ${cliOptions.language}. Choose one of: ${agents_1.LANGUAGES.join(', ')}`);
125
+ process.exit(1);
126
+ }
127
+ const exitCode = await (0, install_1.runInstall)(cliOptions);
112
128
  process.exit(exitCode);
113
129
  }
114
130
  main().catch((err) => {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,21 +1,22 @@
1
- declare const RULESRC_FILENAME = ".rulesrc.json";
1
+ declare const RULESRC_FILENAME = ".rulesrc.ts.json";
2
2
  export type Target = 'cursor' | 'claude' | 'opencode' | 'codex';
3
3
  export interface RulesConfig {
4
4
  target: Target;
5
5
  agents: string[];
6
6
  }
7
+ export declare function getRulesrcFilename(language?: string): string;
7
8
  /**
8
- * Find project root (directory containing .rulesrc.json or package.json)
9
+ * Find project root (directory containing rules config or package.json)
9
10
  */
10
11
  export declare function findProjectRoot(cwd?: string): string;
11
12
  /**
12
- * Load .rulesrc.json from project root
13
+ * Load rules config from project root
13
14
  */
14
- export declare function loadConfig(projectRoot?: string): RulesConfig | null;
15
+ export declare function loadConfig(projectRoot?: string, language?: string): RulesConfig | null;
15
16
  /**
16
- * Save .rulesrc.json to project root
17
+ * Save rules config to project root
17
18
  */
18
- export declare function saveConfig(config: RulesConfig, projectRoot?: string): void;
19
+ export declare function saveConfig(config: RulesConfig, projectRoot?: string, language?: string): void;
19
20
  /**
20
21
  * Detect if running in CI (non-interactive) mode
21
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB,kBAAkB,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAanE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAqBnE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAQlC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,gBAAgB,qBAAqB,CAAC;AAG5C,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,GAAE,MAAqB,GAAG,MAAM,CAG1E;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAUnE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAqB,GAC9B,WAAW,GAAG,IAAI,CA2BpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAqB,GAC9B,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAQlC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/config.js CHANGED
@@ -4,23 +4,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RULESRC_FILENAME = void 0;
7
+ exports.getRulesrcFilename = getRulesrcFilename;
7
8
  exports.findProjectRoot = findProjectRoot;
8
9
  exports.loadConfig = loadConfig;
9
10
  exports.saveConfig = saveConfig;
10
11
  exports.isCiMode = isCiMode;
11
12
  const fs_1 = __importDefault(require("fs"));
12
13
  const path_1 = __importDefault(require("path"));
13
- const RULESRC_FILENAME = '.rulesrc.json';
14
+ const agents_1 = require("./agents");
15
+ const RULESRC_FILENAME = '.rulesrc.ts.json';
14
16
  exports.RULESRC_FILENAME = RULESRC_FILENAME;
17
+ const LEGACY_RULESRC_FILENAME = '.rulesrc.json';
18
+ function getRulesrcFilename(language = 'typescript') {
19
+ if (language === 'typescript')
20
+ return RULESRC_FILENAME;
21
+ return `.rulesrc.${language}.json`;
22
+ }
23
+ function hasConfigFile(dir) {
24
+ if (fs_1.default.existsSync(path_1.default.join(dir, RULESRC_FILENAME)) ||
25
+ fs_1.default.existsSync(path_1.default.join(dir, LEGACY_RULESRC_FILENAME)))
26
+ return true;
27
+ return agents_1.LANGUAGES.some((language) => fs_1.default.existsSync(path_1.default.join(dir, getRulesrcFilename(language))));
28
+ }
15
29
  /**
16
- * Find project root (directory containing .rulesrc.json or package.json)
30
+ * Find project root (directory containing rules config or package.json)
17
31
  */
18
32
  function findProjectRoot(cwd = process.cwd()) {
19
33
  let dir = path_1.default.resolve(cwd);
20
34
  const root = path_1.default.parse(dir).root;
21
35
  while (dir !== root) {
22
- if (fs_1.default.existsSync(path_1.default.join(dir, RULESRC_FILENAME)) ||
23
- fs_1.default.existsSync(path_1.default.join(dir, 'package.json'))) {
36
+ if (hasConfigFile(dir) || fs_1.default.existsSync(path_1.default.join(dir, 'package.json'))) {
24
37
  return dir;
25
38
  }
26
39
  dir = path_1.default.dirname(dir);
@@ -28,12 +41,17 @@ function findProjectRoot(cwd = process.cwd()) {
28
41
  return cwd;
29
42
  }
30
43
  /**
31
- * Load .rulesrc.json from project root
44
+ * Load rules config from project root
32
45
  */
33
- function loadConfig(projectRoot) {
46
+ function loadConfig(projectRoot, language = 'typescript') {
34
47
  const root = projectRoot ?? findProjectRoot();
35
- const filePath = path_1.default.join(root, RULESRC_FILENAME);
36
- if (!fs_1.default.existsSync(filePath))
48
+ const fileCandidates = language === 'typescript'
49
+ ? [getRulesrcFilename(language), LEGACY_RULESRC_FILENAME]
50
+ : [getRulesrcFilename(language)];
51
+ const filePath = fileCandidates
52
+ .map((name) => path_1.default.join(root, name))
53
+ .find((candidate) => fs_1.default.existsSync(candidate));
54
+ if (!filePath)
37
55
  return null;
38
56
  try {
39
57
  const raw = fs_1.default.readFileSync(filePath, 'utf8');
@@ -53,11 +71,11 @@ function loadConfig(projectRoot) {
53
71
  }
54
72
  }
55
73
  /**
56
- * Save .rulesrc.json to project root
74
+ * Save rules config to project root
57
75
  */
58
- function saveConfig(config, projectRoot) {
76
+ function saveConfig(config, projectRoot, language = 'typescript') {
59
77
  const root = projectRoot ?? findProjectRoot();
60
- const filePath = path_1.default.join(root, RULESRC_FILENAME);
78
+ const filePath = path_1.default.join(root, getRulesrcFilename(language));
61
79
  fs_1.default.writeFileSync(filePath, JSON.stringify({ target: config.target, agents: config.agents }, null, 2), 'utf8');
62
80
  }
63
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAeA,0CAaC;AAKD,gCAqBC;AAKD,gCAQC;AAKD,4BAQC;AAhFD,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,gBAAgB,GAAG,eAAe,CAAC;AA+EhC,4CAAgB;AAtEzB;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,IAAI,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAClC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IACE,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAC/C,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAC7C,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,WAAoB;IAC7C,MAAM,IAAI,GAAG,WAAW,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,IACE,CAAC,IAAI;YACL,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC,KAAK,CAAC,OAAO,CAAE,IAAoB,CAAC,MAAM,CAAC;YAE5C,OAAO,IAAI,CAAC;QACd,OAAO;YACL,MAAM,EAAG,IAAoB,CAAC,MAAM;YACpC,MAAM,EAAG,IAAoB,CAAC,MAAM;SACrC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAmB,EAAE,WAAoB;IAClE,MAAM,IAAI,GAAG,WAAW,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACnD,YAAE,CAAC,aAAa,CACd,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACzE,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;QACrC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,CACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAcA,gDAGC;AAgBD,0CAUC;AAKD,gCA8BC;AAKD,gCAYC;AAKD,4BAQC;AA5GD,4CAAoB;AACpB,gDAAwB;AACxB,qCAAqC;AAErC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AA0GnC,4CAAgB;AAzGzB,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAShD,SAAgB,kBAAkB,CAAC,WAAmB,YAAY;IAChE,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,gBAAgB,CAAC;IACvD,OAAO,YAAY,QAAQ,OAAO,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IACE,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAC/C,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC;IACd,OAAO,kBAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,IAAI,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAClC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,WAAoB,EACpB,WAAmB,YAAY;IAE/B,MAAM,IAAI,GAAG,WAAW,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,cAAc,GAClB,QAAQ,KAAK,YAAY;QACvB,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACzD,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,cAAc;SAC5B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACpC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,IACE,CAAC,IAAI;YACL,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC,KAAK,CAAC,OAAO,CAAE,IAAoB,CAAC,MAAM,CAAC;YAE5C,OAAO,IAAI,CAAC;QACd,OAAO;YACL,MAAM,EAAG,IAAoB,CAAC,MAAM;YACpC,MAAM,EAAG,IAAoB,CAAC,MAAM;SACrC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,MAAmB,EACnB,WAAoB,EACpB,WAAmB,YAAY;IAE/B,MAAM,IAAI,GAAG,WAAW,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,YAAE,CAAC,aAAa,CACd,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACzE,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;QACrC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,CACjC,CAAC;AACJ,CAAC"}
package/dist/install.d.ts CHANGED
@@ -1,9 +1,11 @@
1
+ import { type Language } from './agents';
1
2
  import type { Target } from './config';
2
3
  export interface ResolveTargetAndAgentsOptions {
3
4
  projectRoot?: string;
4
5
  target?: string;
5
6
  agents?: string | string[];
6
7
  yes?: boolean;
8
+ language?: Language;
7
9
  }
8
10
  /**
9
11
  * Resolve target and agents from config + flags; in CI with no config, return null and caller should exit with error
@@ -16,6 +18,7 @@ export interface InstallOptions {
16
18
  projectRoot: string;
17
19
  target: Target;
18
20
  agents: string[];
21
+ language?: Language;
19
22
  force?: boolean;
20
23
  saveConfig?: boolean;
21
24
  }
@@ -43,12 +46,13 @@ export interface RunInstallOptions {
43
46
  target?: string;
44
47
  agents?: string[];
45
48
  all?: boolean;
49
+ language?: Language;
46
50
  force?: boolean;
47
51
  yes?: boolean;
48
52
  }
49
53
  /**
50
54
  * Run install flow: resolve target/agents (interactive or from config/flags), then install.
51
- * In CI mode with no .rulesrc.json, --target and (--agent X or --all) are required.
55
+ * In CI mode with no .rulesrc.ts.json, --target and (--agent X or --all) are required.
52
56
  */
53
57
  export declare function runInstall(options?: RunInstallOptions): Promise<number>;
54
58
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAkDvC,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BtD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oFAAoF;IACpF,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CA8E9D;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA4EjB"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAoDvC,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA8BtD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oFAAoF;IACpF,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAiG9D;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA+EjB"}
package/dist/install.js CHANGED
@@ -38,18 +38,18 @@ async function promptTarget() {
38
38
  /**
39
39
  * Interactive: ask for agents (comma-separated or "all")
40
40
  */
41
- async function promptAgents() {
42
- const agents = (0, agents_1.listAgents)();
41
+ async function promptAgents(language = 'typescript') {
42
+ const agents = (0, agents_1.listAgents)(language);
43
43
  const line = await prompt(`Agents (comma-separated or "all") [${agents.join(', ')}]: `);
44
44
  if (!line)
45
45
  return agents;
46
46
  const list = line.toLowerCase() === 'all'
47
47
  ? ['all']
48
48
  : line.split(',').map((s) => s.trim());
49
- const resolved = (0, agents_1.resolveAgents)(list);
49
+ const resolved = (0, agents_1.resolveAgents)(list, language);
50
50
  if (resolved.length === 0) {
51
51
  console.error(`Invalid agents. Use "all" or comma-separated: ${agents.join(', ')}`);
52
- return promptAgents();
52
+ return promptAgents(language);
53
53
  }
54
54
  return resolved;
55
55
  }
@@ -58,7 +58,8 @@ async function promptAgents() {
58
58
  */
59
59
  async function resolveTargetAndAgents(options = {}) {
60
60
  const projectRoot = options.projectRoot ?? (0, config_1.findProjectRoot)();
61
- const config = (0, config_1.loadConfig)(projectRoot);
61
+ const language = options.language ?? 'typescript';
62
+ const config = (0, config_1.loadConfig)(projectRoot, language);
62
63
  const ci = (0, config_1.isCiMode)() || options.yes;
63
64
  const targetFromFlag = options.target;
64
65
  const agentsFromFlag = options.agents;
@@ -66,7 +67,9 @@ async function resolveTargetAndAgents(options = {}) {
66
67
  return { target: config.target, agents: config.agents };
67
68
  }
68
69
  const target = targetFromFlag ?? config?.target;
69
- const agents = agentsFromFlag != null ? (0, agents_1.resolveAgents)(agentsFromFlag) : config?.agents;
70
+ const agents = agentsFromFlag != null
71
+ ? (0, agents_1.resolveAgents)(agentsFromFlag, language)
72
+ : config?.agents;
70
73
  if (target && agents && agents.length > 0) {
71
74
  return { target: target, agents };
72
75
  }
@@ -74,14 +77,14 @@ async function resolveTargetAndAgents(options = {}) {
74
77
  return null;
75
78
  }
76
79
  const resolvedTarget = (target ?? (await promptTarget()));
77
- const resolvedAgents = agents?.length ? agents : await promptAgents();
80
+ const resolvedAgents = agents?.length ? agents : await promptAgents(language);
78
81
  return { target: resolvedTarget, agents: resolvedAgents };
79
82
  }
80
83
  /**
81
84
  * Install agents for the given target into projectRoot. Single policy: do not overwrite unless force.
82
85
  */
83
86
  function install(options) {
84
- const { projectRoot, target, agents, force = false, saveConfig: persist } = options;
87
+ const { projectRoot, target, agents, language = 'typescript', force = false, saveConfig: persist } = options;
85
88
  const installed = [];
86
89
  const installedRules = [];
87
90
  const installedSupportFiles = [];
@@ -90,32 +93,36 @@ function install(options) {
90
93
  const errors = [];
91
94
  const processedAgentIds = new Set();
92
95
  if (persist) {
93
- (0, config_1.saveConfig)({ target, agents }, projectRoot);
96
+ (0, config_1.saveConfig)({ target, agents }, projectRoot, language);
94
97
  }
95
98
  for (const agentId of agents) {
96
- if (!(0, agents_1.isValidAgent)(agentId)) {
99
+ if (!(0, agents_1.isValidAgent)(agentId, language)) {
97
100
  errors.push({ agent: agentId, error: 'Unknown agent' });
98
101
  continue;
99
102
  }
100
- processedAgentIds.add(agentId);
101
103
  let agentInstalled = false;
102
104
  let agentSkipped = false;
105
+ let agentProcessed = false;
103
106
  try {
104
- const suffixes = (0, build_1.listRuleSuffixes)(agentId);
107
+ const suffixes = (0, build_1.listRuleSuffixes)(agentId, language);
105
108
  for (const ruleSuffix of suffixes) {
106
109
  const { dir, file } = (0, build_1.getDestination)(agentId, target, projectRoot, ruleSuffix || undefined);
107
110
  if (fs_1.default.existsSync(file) && !force) {
108
111
  agentSkipped = true;
112
+ agentProcessed = true;
109
113
  continue;
110
114
  }
111
115
  if (!fs_1.default.existsSync(dir)) {
112
116
  fs_1.default.mkdirSync(dir, { recursive: true });
113
117
  }
114
- const content = (0, build_1.buildContent)(agentId, target, ruleSuffix || undefined);
118
+ const content = (0, build_1.buildContent)(agentId, target, ruleSuffix || undefined, language);
115
119
  fs_1.default.writeFileSync(file, content, 'utf8');
116
120
  installedRules.push({ agentId, ruleSuffix: ruleSuffix || '' });
117
121
  agentInstalled = true;
122
+ agentProcessed = true;
118
123
  }
124
+ if (agentProcessed)
125
+ processedAgentIds.add(agentId);
119
126
  if (agentInstalled)
120
127
  installed.push(agentId);
121
128
  if (agentSkipped && !agentInstalled)
@@ -134,9 +141,17 @@ function install(options) {
134
141
  skippedSupportFiles.push(agentsMdPath);
135
142
  }
136
143
  else {
137
- const content = (0, build_1.buildCodexAgentsMd)(Array.from(processedAgentIds));
138
- fs_1.default.writeFileSync(agentsMdPath, content, 'utf8');
139
- installedSupportFiles.push(agentsMdPath);
144
+ try {
145
+ const content = (0, build_1.buildCodexAgentsMd)(Array.from(processedAgentIds), language);
146
+ fs_1.default.writeFileSync(agentsMdPath, content, 'utf8');
147
+ installedSupportFiles.push(agentsMdPath);
148
+ }
149
+ catch (err) {
150
+ errors.push({
151
+ agent: 'codex',
152
+ error: err instanceof Error ? err.message : String(err)
153
+ });
154
+ }
140
155
  }
141
156
  }
142
157
  return {
@@ -150,19 +165,21 @@ function install(options) {
150
165
  }
151
166
  /**
152
167
  * Run install flow: resolve target/agents (interactive or from config/flags), then install.
153
- * In CI mode with no .rulesrc.json, --target and (--agent X or --all) are required.
168
+ * In CI mode with no .rulesrc.ts.json, --target and (--agent X or --all) are required.
154
169
  */
155
170
  async function runInstall(options = {}) {
156
171
  const projectRoot = options.projectRoot ?? (0, config_1.findProjectRoot)();
172
+ const language = options.language ?? 'typescript';
157
173
  const agentsFromFlag = options.all ? 'all' : options.agents;
158
174
  const resolved = await resolveTargetAndAgents({
159
175
  projectRoot,
160
176
  target: options.target,
161
177
  agents: agentsFromFlag,
162
- yes: options.yes
178
+ yes: options.yes,
179
+ language
163
180
  });
164
181
  if (!resolved) {
165
- console.error('In CI/non-interactive mode (--yes or CI env), --target and --agent (or --all) are required when .rulesrc.json is missing.');
182
+ console.error('In CI/non-interactive mode (--yes or CI env), --target and --agent (or --all) are required when .rulesrc.ts.json is missing.');
166
183
  console.error('Example: ballast install --yes --target cursor --agent linting');
167
184
  return 1;
168
185
  }
@@ -172,6 +189,7 @@ async function runInstall(options = {}) {
172
189
  projectRoot,
173
190
  target,
174
191
  agents,
192
+ language,
175
193
  force: options.force ?? false,
176
194
  saveConfig: persist
177
195
  });