teamcast 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/application/build-generated-files.d.ts +1 -1
  2. package/dist/application/build-generated-files.d.ts.map +1 -1
  3. package/dist/application/build-generated-files.js +4 -3
  4. package/dist/application/build-generated-files.js.map +1 -1
  5. package/dist/application/team.d.ts +19 -14
  6. package/dist/application/team.d.ts.map +1 -1
  7. package/dist/application/team.js +125 -51
  8. package/dist/application/team.js.map +1 -1
  9. package/dist/application/validate-team.d.ts +2 -19
  10. package/dist/application/validate-team.d.ts.map +1 -1
  11. package/dist/application/validate-team.js +38 -48
  12. package/dist/application/validate-team.js.map +1 -1
  13. package/dist/cli/explain.d.ts +1 -0
  14. package/dist/cli/explain.d.ts.map +1 -1
  15. package/dist/cli/explain.js +20 -1
  16. package/dist/cli/explain.js.map +1 -1
  17. package/dist/cli/generate.js +1 -1
  18. package/dist/cli/generate.js.map +1 -1
  19. package/dist/cli/import.d.ts.map +1 -1
  20. package/dist/cli/import.js +74 -33
  21. package/dist/cli/import.js.map +1 -1
  22. package/dist/cli/init.d.ts.map +1 -1
  23. package/dist/cli/init.js +30 -16
  24. package/dist/cli/init.js.map +1 -1
  25. package/dist/cli/manage.d.ts.map +1 -1
  26. package/dist/cli/manage.js +230 -64
  27. package/dist/cli/manage.js.map +1 -1
  28. package/dist/cli/reset.d.ts.map +1 -1
  29. package/dist/cli/reset.js +36 -12
  30. package/dist/cli/reset.js.map +1 -1
  31. package/dist/cli/validate.d.ts.map +1 -1
  32. package/dist/cli/validate.js +6 -8
  33. package/dist/cli/validate.js.map +1 -1
  34. package/dist/core/types.d.ts +8 -7
  35. package/dist/core/types.d.ts.map +1 -1
  36. package/dist/diff/index.d.ts +2 -2
  37. package/dist/diff/index.d.ts.map +1 -1
  38. package/dist/diff/index.js +2 -2
  39. package/dist/diff/index.js.map +1 -1
  40. package/dist/explainer/index.d.ts +2 -1
  41. package/dist/explainer/index.d.ts.map +1 -1
  42. package/dist/explainer/index.js +21 -13
  43. package/dist/explainer/index.js.map +1 -1
  44. package/dist/generator/index.d.ts +2 -2
  45. package/dist/generator/index.d.ts.map +1 -1
  46. package/dist/generator/index.js +16 -5
  47. package/dist/generator/index.js.map +1 -1
  48. package/dist/importer/index.d.ts +1 -0
  49. package/dist/importer/index.d.ts.map +1 -1
  50. package/dist/importer/index.js +178 -16
  51. package/dist/importer/index.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +2 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/manifest/defaults.d.ts +1 -2
  57. package/dist/manifest/defaults.d.ts.map +1 -1
  58. package/dist/manifest/defaults.js +12 -12
  59. package/dist/manifest/defaults.js.map +1 -1
  60. package/dist/manifest/normalize.d.ts +8 -4
  61. package/dist/manifest/normalize.d.ts.map +1 -1
  62. package/dist/manifest/normalize.js +84 -136
  63. package/dist/manifest/normalize.js.map +1 -1
  64. package/dist/manifest/reader.d.ts +2 -2
  65. package/dist/manifest/reader.d.ts.map +1 -1
  66. package/dist/manifest/reader.js +1 -2
  67. package/dist/manifest/reader.js.map +1 -1
  68. package/dist/manifest/types.d.ts +17 -65
  69. package/dist/manifest/types.d.ts.map +1 -1
  70. package/dist/manifest/types.js.map +1 -1
  71. package/dist/manifest/writer.d.ts +2 -2
  72. package/dist/manifest/writer.d.ts.map +1 -1
  73. package/dist/manifest/writer.js +2 -3
  74. package/dist/manifest/writer.js.map +1 -1
  75. package/dist/presets/index.d.ts +2 -2
  76. package/dist/presets/index.d.ts.map +1 -1
  77. package/dist/presets/index.js +7 -2
  78. package/dist/presets/index.js.map +1 -1
  79. package/dist/presets/types.d.ts +2 -2
  80. package/dist/presets/types.d.ts.map +1 -1
  81. package/dist/renderers/claude/agent-md.js +1 -1
  82. package/dist/renderers/claude/agent-md.js.map +1 -1
  83. package/dist/renderers/claude/docs.js +1 -1
  84. package/dist/renderers/claude/docs.js.map +1 -1
  85. package/dist/renderers/claude/index.d.ts +2 -0
  86. package/dist/renderers/claude/index.d.ts.map +1 -1
  87. package/dist/renderers/claude/index.js +11 -0
  88. package/dist/renderers/claude/index.js.map +1 -1
  89. package/dist/renderers/claude/tools.d.ts +0 -1
  90. package/dist/renderers/claude/tools.d.ts.map +1 -1
  91. package/dist/renderers/claude/tools.js +0 -2
  92. package/dist/renderers/claude/tools.js.map +1 -1
  93. package/dist/renderers/codex/index.d.ts +7 -0
  94. package/dist/renderers/codex/index.d.ts.map +1 -0
  95. package/dist/renderers/codex/index.js +97 -0
  96. package/dist/renderers/codex/index.js.map +1 -0
  97. package/dist/renderers/codex/skill-map.d.ts +8 -0
  98. package/dist/renderers/codex/skill-map.d.ts.map +1 -0
  99. package/dist/renderers/codex/skill-map.js +29 -0
  100. package/dist/renderers/codex/skill-map.js.map +1 -0
  101. package/dist/renderers/codex/tools.d.ts +3 -0
  102. package/dist/renderers/codex/tools.d.ts.map +1 -0
  103. package/dist/renderers/codex/tools.js +8 -0
  104. package/dist/renderers/codex/tools.js.map +1 -0
  105. package/dist/renderers/index.d.ts +3 -0
  106. package/dist/renderers/index.d.ts.map +1 -1
  107. package/dist/renderers/index.js +7 -0
  108. package/dist/renderers/index.js.map +1 -1
  109. package/dist/renderers/registry.d.ts +8 -0
  110. package/dist/renderers/registry.d.ts.map +1 -0
  111. package/dist/renderers/registry.js +22 -0
  112. package/dist/renderers/registry.js.map +1 -0
  113. package/dist/renderers/target-context.d.ts +14 -0
  114. package/dist/renderers/target-context.d.ts.map +1 -0
  115. package/dist/renderers/target-context.js +2 -0
  116. package/dist/renderers/target-context.js.map +1 -0
  117. package/dist/team-templates/presets.d.ts +1 -1
  118. package/dist/team-templates/presets.d.ts.map +1 -1
  119. package/dist/team-templates/roles.d.ts +6 -6
  120. package/dist/team-templates/roles.d.ts.map +1 -1
  121. package/dist/team-templates/roles.js +3 -4
  122. package/dist/team-templates/roles.js.map +1 -1
  123. package/dist/types/manifest.d.ts +8 -5
  124. package/dist/types/manifest.d.ts.map +1 -1
  125. package/dist/types/manifest.js +7 -9
  126. package/dist/types/manifest.js.map +1 -1
  127. package/dist/validator/checks/handoff-graph.d.ts.map +1 -1
  128. package/dist/validator/checks/handoff-graph.js +3 -2
  129. package/dist/validator/checks/handoff-graph.js.map +1 -1
  130. package/dist/validator/checks/instruction-blocks.d.ts.map +1 -1
  131. package/dist/validator/checks/instruction-blocks.js +3 -1
  132. package/dist/validator/checks/instruction-blocks.js.map +1 -1
  133. package/dist/validator/index.d.ts +2 -2
  134. package/dist/validator/index.d.ts.map +1 -1
  135. package/dist/validator/index.js +4 -8
  136. package/dist/validator/index.js.map +1 -1
  137. package/dist/wizard/index.d.ts +2 -0
  138. package/dist/wizard/index.d.ts.map +1 -1
  139. package/dist/wizard/index.js +25 -10
  140. package/dist/wizard/index.js.map +1 -1
  141. package/dist/wizard/steps/agent-customization.d.ts +2 -1
  142. package/dist/wizard/steps/agent-customization.d.ts.map +1 -1
  143. package/dist/wizard/steps/agent-customization.js +67 -29
  144. package/dist/wizard/steps/agent-customization.js.map +1 -1
  145. package/dist/wizard/steps/confirm-generate.d.ts +2 -2
  146. package/dist/wizard/steps/confirm-generate.d.ts.map +1 -1
  147. package/dist/wizard/steps/confirm-generate.js +2 -2
  148. package/dist/wizard/steps/confirm-generate.js.map +1 -1
  149. package/dist/wizard/steps/custom-team.d.ts +3 -2
  150. package/dist/wizard/steps/custom-team.d.ts.map +1 -1
  151. package/dist/wizard/steps/custom-team.js +3 -3
  152. package/dist/wizard/steps/custom-team.js.map +1 -1
  153. package/dist/wizard/steps/target-selection.d.ts +6 -0
  154. package/dist/wizard/steps/target-selection.d.ts.map +1 -0
  155. package/dist/wizard/steps/target-selection.js +27 -0
  156. package/dist/wizard/steps/target-selection.js.map +1 -0
  157. package/dist/wizard/steps/team-selection.d.ts +4 -2
  158. package/dist/wizard/steps/team-selection.d.ts.map +1 -1
  159. package/dist/wizard/steps/team-selection.js +6 -6
  160. package/dist/wizard/steps/team-selection.js.map +1 -1
  161. package/package.json +16 -3
  162. package/schema/teamcast.schema.json +34 -155
  163. package/templates/presets/feature-team.yaml +80 -47
  164. package/templates/presets/research-and-build.yaml +66 -41
  165. package/templates/presets/secure-dev.yaml +87 -56
  166. package/templates/presets/solo-dev.yaml +23 -14
  167. package/dist/cli/manifest-validation.d.ts +0 -13
  168. package/dist/cli/manifest-validation.d.ts.map +0 -1
  169. package/dist/cli/manifest-validation.js +0 -38
  170. package/dist/cli/manifest-validation.js.map +0 -1
  171. package/dist/generator/renderers/agent-md.d.ts +0 -5
  172. package/dist/generator/renderers/agent-md.d.ts.map +0 -1
  173. package/dist/generator/renderers/agent-md.js +0 -66
  174. package/dist/generator/renderers/agent-md.js.map +0 -1
  175. package/dist/generator/renderers/agents-md.d.ts +0 -4
  176. package/dist/generator/renderers/agents-md.d.ts.map +0 -1
  177. package/dist/generator/renderers/agents-md.js +0 -86
  178. package/dist/generator/renderers/agents-md.js.map +0 -1
  179. package/dist/generator/renderers/claude-md.d.ts +0 -4
  180. package/dist/generator/renderers/claude-md.d.ts.map +0 -1
  181. package/dist/generator/renderers/claude-md.js +0 -68
  182. package/dist/generator/renderers/claude-md.js.map +0 -1
  183. package/dist/generator/renderers/codex-config.d.ts +0 -4
  184. package/dist/generator/renderers/codex-config.d.ts.map +0 -1
  185. package/dist/generator/renderers/codex-config.js +0 -145
  186. package/dist/generator/renderers/codex-config.js.map +0 -1
  187. package/dist/generator/renderers/codex-skill-md.d.ts +0 -4
  188. package/dist/generator/renderers/codex-skill-md.d.ts.map +0 -1
  189. package/dist/generator/renderers/codex-skill-md.js +0 -47
  190. package/dist/generator/renderers/codex-skill-md.js.map +0 -1
  191. package/dist/generator/renderers/settings-json.d.ts +0 -5
  192. package/dist/generator/renderers/settings-json.d.ts.map +0 -1
  193. package/dist/generator/renderers/settings-json.js +0 -100
  194. package/dist/generator/renderers/settings-json.js.map +0 -1
  195. package/dist/generator/renderers/skill-md.d.ts +0 -4
  196. package/dist/generator/renderers/skill-md.d.ts.map +0 -1
  197. package/dist/generator/renderers/skill-md.js +0 -44
  198. package/dist/generator/renderers/skill-md.js.map +0 -1
  199. package/dist/generator/state.d.ts +0 -14
  200. package/dist/generator/state.d.ts.map +0 -1
  201. package/dist/generator/state.js +0 -76
  202. package/dist/generator/state.js.map +0 -1
  203. package/dist/generator/targets/claude.d.ts +0 -3
  204. package/dist/generator/targets/claude.d.ts.map +0 -1
  205. package/dist/generator/targets/claude.js +0 -24
  206. package/dist/generator/targets/claude.js.map +0 -1
  207. package/dist/generator/targets/codex.d.ts +0 -3
  208. package/dist/generator/targets/codex.d.ts.map +0 -1
  209. package/dist/generator/targets/codex.js +0 -19
  210. package/dist/generator/targets/codex.js.map +0 -1
  211. package/dist/generator/targets/index.d.ts +0 -4
  212. package/dist/generator/targets/index.d.ts.map +0 -1
  213. package/dist/generator/targets/index.js +0 -10
  214. package/dist/generator/targets/index.js.map +0 -1
  215. package/dist/generator/targets/types.d.ts +0 -8
  216. package/dist/generator/targets/types.d.ts.map +0 -1
  217. package/dist/generator/targets/types.js +0 -2
  218. package/dist/generator/targets/types.js.map +0 -1
  219. package/dist/manifest/compat.d.ts +0 -6
  220. package/dist/manifest/compat.d.ts.map +0 -1
  221. package/dist/manifest/compat.js +0 -56
  222. package/dist/manifest/compat.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C9D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C9D"}
@@ -1,7 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { readManifest, ManifestError } from '../manifest/reader.js';
3
- import { runValidation } from '../validator/index.js';
4
- import { printValidationReport, hasErrors } from '../validator/reporter.js';
3
+ import { evaluateTeam, teamHasBlockingIssues, printManifestValidation, } from '../application/validate-team.js';
5
4
  export function registerValidateCommand(program) {
6
5
  program
7
6
  .command('validate')
@@ -30,16 +29,15 @@ export function registerValidateCommand(program) {
30
29
  }
31
30
  throw err;
32
31
  }
33
- const results = runValidation(manifest);
34
- const policyAssertionCount = manifest.policies?.assertions?.length ?? 0;
32
+ const validation = evaluateTeam(manifest);
35
33
  if (options.format === 'json') {
36
- process.stdout.write(JSON.stringify(results, null, 2) + '\n');
34
+ process.stdout.write(JSON.stringify(validation.validationResults, null, 2) + '\n');
37
35
  }
38
36
  else {
39
- printValidationReport(results, policyAssertionCount);
37
+ printManifestValidation(validation);
40
38
  }
41
- const shouldFail = hasErrors(results) ||
42
- (options.strict && results.some((r) => r.severity === 'warning'));
39
+ const shouldFail = teamHasBlockingIssues(validation) ||
40
+ (options.strict && validation.validationResults.some((result) => result.severity === 'warning'));
43
41
  if (shouldFail) {
44
42
  process.exit(1);
45
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE5E,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,CAAC,OAA8C,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3G,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACpD,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;wBACxB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO;4BAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;QAExE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,UAAU,GACd,SAAS,CAAC,OAAO,CAAC;YAClB,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,CAAC,OAA8C,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;gBACjC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3G,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACpD,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;wBACxB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO;4BAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,UAAU,GACd,qBAAqB,CAAC,UAAU,CAAC;YACjC,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC;QAEnG,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { InstructionBlock } from './instructions.js';
2
2
  import type { PolicyAssertion } from './assertions.js';
3
- export type ModelAlias = 'sonnet' | 'haiku' | 'opus' | 'inherit' | string;
3
+ export type ReasoningEffort = 'low' | 'medium' | 'high';
4
4
  export type PermissionMode = 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk';
5
5
  export type AbstractPermission = 'project.commands' | 'tests' | 'git.read' | 'git.write' | 'package.exec' | 'security.audit' | 'git.push' | 'destructive-shell' | 'downloads' | 'dynamic-exec' | 'env.write';
6
6
  export interface McpServerConfig {
@@ -17,8 +17,10 @@ export interface HookEntry {
17
17
  command: string;
18
18
  }
19
19
  export interface AgentRuntime {
20
- /** Effective model identifier after preset and default resolution. */
21
- model?: ModelAlias;
20
+ /** Target-native model identifier. */
21
+ model?: string;
22
+ /** Target-native reasoning level where supported (e.g. Codex). */
23
+ reasoningEffort?: ReasoningEffort;
22
24
  /**
23
25
  * Allowed tools. Uses string[] to keep the core platform-agnostic.
24
26
  * The Claude renderer layer casts these to CanonicalTool as needed.
@@ -86,7 +88,6 @@ export interface TeamPolicies {
86
88
  assertions?: PolicyAssertion[];
87
89
  }
88
90
  export interface TeamSettings {
89
- defaultModel?: ModelAlias;
90
91
  generateDocs?: boolean;
91
92
  generateLocalSettings?: boolean;
92
93
  }
@@ -101,13 +102,13 @@ export interface ProjectConfig {
101
102
  description?: string;
102
103
  }
103
104
  /**
104
- * A fully-normalized team manifest used internally after all
105
- * legacy-format coercion, default application, and preset resolution.
105
+ * A fully-normalized, target-specific team view used internally after
106
+ * raw manifest defaults, target selection, and normalization.
106
107
  * Agents carry a `runtime` block, which distinguishes this type from
107
108
  * the raw `TeamCastManifest` loaded directly from YAML.
108
109
  */
109
110
  export interface CoreTeam {
110
- version: '1' | '2';
111
+ version: '2';
111
112
  project: ProjectConfig;
112
113
  agents: Record<string, CoreAgent>;
113
114
  policies?: TeamPolicies;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CoreTeam } from '../core/types.js';
1
+ import type { TeamCastManifest } from '../manifest/types.js';
2
2
  export type DiffStatus = 'new' | 'modified' | 'unchanged';
3
3
  export interface DiffEntry {
4
4
  path: string;
@@ -6,5 +6,5 @@ export interface DiffEntry {
6
6
  addedLines?: number;
7
7
  removedLines?: number;
8
8
  }
9
- export declare function diffManifest(team: CoreTeam, cwd: string): DiffEntry[];
9
+ export declare function diffManifest(manifest: TeamCastManifest, cwd: string): DiffEntry[];
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CA2BrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CA2BjF"}
@@ -2,8 +2,8 @@ import { readFileSync, existsSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { generate } from '../generator/index.js';
4
4
  import { isUserEditableGeneratedFile } from '../generator/file-policies.js';
5
- export function diffManifest(team, cwd) {
6
- const expected = generate(team, { cwd, dryRun: true });
5
+ export function diffManifest(manifest, cwd) {
6
+ const expected = generate(manifest, { cwd, dryRun: true });
7
7
  return expected.map((file) => {
8
8
  const absPath = join(cwd, file.path);
9
9
  if (!existsSync(absPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAW5E,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,GAAW;IACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAa,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACnF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAErF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAW5E,MAAM,UAAU,YAAY,CAAC,QAA0B,EAAE,GAAW;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAa,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACnF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAErF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { CoreTeam } from '../core/types.js';
2
- export declare function buildExplanation(team: CoreTeam): string;
2
+ import type { TargetContext } from '../renderers/target-context.js';
3
+ export declare function buildExplanation(team: CoreTeam, targetContext: TargetContext): string;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA6DjD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CA8CvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAqEpE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CA8CrF"}
@@ -1,25 +1,33 @@
1
1
  import chalk from 'chalk';
2
- import { reverseMapToolsToSkills } from '../renderers/claude/skill-map.js';
3
- function formatAgentSection(agentId, agent, defaultModel) {
2
+ function formatAgentSection(agentId, agent, targetContext) {
4
3
  const lines = [];
5
- const model = agent.runtime.model ?? defaultModel ?? 'sonnet';
4
+ const model = agent.runtime.model ?? 'unspecified';
6
5
  lines.push(` ${chalk.cyan(agentId)} ${chalk.dim(`(${model})`)}`);
7
6
  // Description
8
7
  if (agent.description) {
9
8
  lines.push(` ${chalk.dim('Description:')} ${agent.description}`);
10
9
  }
10
+ if (agent.runtime.reasoningEffort) {
11
+ lines.push(` ${chalk.dim('Reasoning effort:')} ${agent.runtime.reasoningEffort}`);
12
+ }
11
13
  // Skills (abstract) — reverse-mapped from tools, or from runtime.skills if no tools
12
14
  const tools = agent.runtime.tools ?? [];
13
15
  if (tools.length > 0) {
14
- const { skills, remainingTools } = reverseMapToolsToSkills(tools);
15
- if (skills.length > 0) {
16
- lines.push(` ${chalk.dim('Skills:')} ${skills.join(', ')}`);
16
+ const reverseMap = targetContext.reverseMapTools;
17
+ if (reverseMap) {
18
+ const { skills, remainingTools } = reverseMap(tools);
19
+ if (skills.length > 0) {
20
+ lines.push(` ${chalk.dim('Skills:')} ${skills.join(', ')}`);
21
+ }
22
+ // Expanded tools list (all, including unmapped remainders)
23
+ lines.push(` ${chalk.dim('Tools:')} ${tools.join(', ')}`);
24
+ if (remainingTools.length > 0) {
25
+ // Unmapped tools shown for transparency
26
+ lines.push(` ${chalk.dim('Unmapped tools:')} ${remainingTools.join(', ')}`);
27
+ }
17
28
  }
18
- // Expanded tools list (all, including unmapped remainders)
19
- lines.push(` ${chalk.dim('Tools:')} ${tools.join(', ')}`);
20
- if (remainingTools.length > 0) {
21
- // Unmapped tools shown for transparency
22
- lines.push(` ${chalk.dim('Unmapped tools:')} ${remainingTools.join(', ')}`);
29
+ else {
30
+ lines.push(` ${chalk.dim('Tools:')} ${tools.join(', ')}`);
23
31
  }
24
32
  }
25
33
  // Disallowed tools
@@ -45,14 +53,14 @@ function formatAgentSection(agentId, agent, defaultModel) {
45
53
  }
46
54
  return lines;
47
55
  }
48
- export function buildExplanation(team) {
56
+ export function buildExplanation(team, targetContext) {
49
57
  const lines = [];
50
58
  const preset = team.project.preset ? ` (preset: ${team.project.preset})` : '';
51
59
  lines.push(chalk.bold(`Project: ${team.project.name}`) + chalk.dim(preset));
52
60
  lines.push('');
53
61
  lines.push(chalk.bold('Team structure:'));
54
62
  for (const [agentId, agent] of Object.entries(team.agents)) {
55
- lines.push(...formatAgentSection(agentId, agent, team.settings?.defaultModel));
63
+ lines.push(...formatAgentSection(agentId, agent, targetContext));
56
64
  lines.push('');
57
65
  }
58
66
  if (team.policies) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/explainer/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { CoreTeam } from '../core/types.js';
2
1
  import type { TeamCastManifest } from '../manifest/types.js';
3
2
  import type { BuildGeneratedOutputsOptions } from '../application/build-generated-files.js';
4
- export declare function generate(manifest: TeamCastManifest | CoreTeam, options: BuildGeneratedOutputsOptions): import("../renderers/types.js").RenderedFile[];
3
+ import '../renderers/index.js';
4
+ export declare function generate(manifest: TeamCastManifest, options: BuildGeneratedOutputsOptions): import("../renderers/types.js").RenderedFile[];
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAG5F,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,EACrC,OAAO,EAAE,4BAA4B,kDAOtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAG5F,OAAO,uBAAuB,CAAC;AAI/B,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,4BAA4B,kDAiBtC"}
@@ -1,10 +1,21 @@
1
- import { isCoreTeam } from '../core/guards.js';
2
1
  import { applyDefaults } from '../manifest/defaults.js';
3
2
  import { buildGeneratedOutputs } from '../application/build-generated-files.js';
3
+ import '../renderers/index.js';
4
+ import { getRegisteredTargetNames, getTarget } from '../renderers/registry.js';
5
+ import { normalizeManifest } from '../manifest/normalize.js';
4
6
  export function generate(manifest, options) {
5
- const team = isCoreTeam(manifest)
6
- ? manifest
7
- : applyDefaults(manifest);
8
- return buildGeneratedOutputs(team, options);
7
+ const rawManifest = applyDefaults(manifest);
8
+ const rawManifestRecord = rawManifest;
9
+ const registeredTargets = getRegisteredTargetNames();
10
+ const allGeneratedFiles = [];
11
+ for (const targetName of registeredTargets) {
12
+ if (rawManifestRecord[targetName]) {
13
+ const targetContext = getTarget(targetName);
14
+ const coreTeam = normalizeManifest(rawManifest, targetContext);
15
+ const targetFiles = buildGeneratedOutputs(coreTeam, targetName, options);
16
+ allGeneratedFiles.push(...targetFiles);
17
+ }
18
+ }
19
+ return allGeneratedFiles;
9
20
  }
10
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,MAAM,UAAU,QAAQ,CACtB,QAAqC,EACrC,OAAqC;IAErC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,UAAU,QAAQ,CACtB,QAA0B,EAC1B,OAAqC;IAErC,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,WAAiD,CAAC;IAC5E,MAAM,iBAAiB,GAAG,wBAAwB,EAAE,CAAC;IACrD,MAAM,iBAAiB,GAA6C,EAAE,CAAC;IAEvE,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QAC3C,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACzE,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -8,5 +8,6 @@ interface ImportResult {
8
8
  warnings: ImportWarning[];
9
9
  }
10
10
  export declare function importFromClaudeDir(cwd: string, projectName: string): ImportResult;
11
+ export declare function importFromCodexDir(cwd: string, projectName: string): ImportResult;
11
12
  export {};
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/importer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,QAAQ,EAMT,MAAM,kBAAkB,CAAC;AAY1B,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAyRD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAyClF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/importer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,QAAQ,EAKT,MAAM,kBAAkB,CAAC;AAa1B,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAkWD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CA0ClF;AAuFD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAuCjF"}
@@ -1,9 +1,9 @@
1
1
  import { readFileSync, readdirSync, existsSync } from 'fs';
2
2
  import { join, basename } from 'path';
3
3
  import { parse } from 'yaml';
4
- import { CLAUDE_CODE_TOOLS } from '../renderers/claude/tools.js';
5
- import { reverseMapToolsToSkills } from '../renderers/claude/skill-map.js';
6
4
  import { normalizePermissionTokens } from '../core/permissions.js';
5
+ import { createClaudeTarget } from '../renderers/claude/index.js';
6
+ import { createCodexTarget } from '../renderers/codex/index.js';
7
7
  const LEGACY_MODEL_ID_MAP = {
8
8
  'claude-opus-4-6': 'opus',
9
9
  'claude-sonnet-4-6': 'sonnet',
@@ -54,18 +54,18 @@ function inferLegacyHandoffs(body) {
54
54
  .filter(Boolean);
55
55
  return values.length > 0 ? values : undefined;
56
56
  }
57
- function resolveModelAlias(modelValue) {
57
+ function resolveClaudeModel(modelValue) {
58
58
  if (typeof modelValue !== 'string' || modelValue.length === 0)
59
59
  return undefined;
60
- if (modelValue === 'inherit' || modelValue === 'opus' || modelValue === 'sonnet' || modelValue === 'haiku') {
60
+ if (modelValue === 'opus' || modelValue === 'sonnet' || modelValue === 'haiku') {
61
61
  return modelValue;
62
62
  }
63
63
  return LEGACY_MODEL_ID_MAP[modelValue];
64
64
  }
65
- function isCanonicalTool(value) {
66
- return CLAUDE_CODE_TOOLS.includes(value);
65
+ function isKnownTool(value, knownTools) {
66
+ return knownTools.includes(value);
67
67
  }
68
- function parseToolList(value) {
68
+ function parseToolList(value, knownTools) {
69
69
  const rawTools = Array.isArray(value)
70
70
  ? value.filter((item) => typeof item === 'string')
71
71
  : typeof value === 'string'
@@ -76,7 +76,7 @@ function parseToolList(value) {
76
76
  const tools = [];
77
77
  for (const raw of rawTools) {
78
78
  const canonical = raw === 'Task' ? 'Agent' : raw;
79
- if (isCanonicalTool(canonical) && !tools.includes(canonical)) {
79
+ if (isKnownTool(canonical, knownTools) && !tools.includes(canonical)) {
80
80
  tools.push(canonical);
81
81
  }
82
82
  }
@@ -106,21 +106,84 @@ function parseMcpServers(value) {
106
106
  .filter((item) => item.name.length > 0 && item.url.length > 0);
107
107
  return servers.length > 0 ? servers : undefined;
108
108
  }
109
- function parseAgentFile(filePath) {
109
+ function normalizeLineEndings(value) {
110
+ return value.replace(/\r\n/g, '\n');
111
+ }
112
+ function escapeRegExp(value) {
113
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
114
+ }
115
+ function extractTomlString(content, key) {
116
+ const match = content.match(new RegExp(`^${escapeRegExp(key)}\\s*=\\s*"((?:\\\\.|[^"])*)"`, 'm'));
117
+ if (!match)
118
+ return undefined;
119
+ return match[1]
120
+ .replace(/\\"/g, '"')
121
+ .replace(/\\\\/g, '\\');
122
+ }
123
+ function extractTomlMultiline(content, key) {
124
+ const match = content.match(new RegExp(`${escapeRegExp(key)}\\s*=\\s*"""\\n([\\s\\S]*?)\\n"""`));
125
+ return match ? normalizeLineEndings(match[1]).trim() : undefined;
126
+ }
127
+ function extractMarkdownSection(content, heading) {
128
+ const normalized = normalizeLineEndings(content);
129
+ const match = normalized.match(new RegExp(`## ${escapeRegExp(heading)}\\n\\n([\\s\\S]*?)(?=\\n## |$)`));
130
+ return match?.[1]?.trim() || undefined;
131
+ }
132
+ function parseCommaList(value) {
133
+ if (!value)
134
+ return undefined;
135
+ const items = value
136
+ .split(',')
137
+ .map((entry) => entry.trim().replace(/\.$/, ''))
138
+ .filter(Boolean);
139
+ return items.length > 0 ? items : undefined;
140
+ }
141
+ function stripCodexGeneratedSections(body) {
142
+ if (!body)
143
+ return undefined;
144
+ let nextBody = normalizeLineEndings(body);
145
+ if (nextBody.startsWith('You are ')) {
146
+ const firstBreak = nextBody.indexOf('\n\n');
147
+ nextBody = firstBreak === -1 ? '' : nextBody.slice(firstBreak + 2);
148
+ }
149
+ for (const section of ['## Delegation', '## Allowed Tool Intents', '## Restricted Tool Intents', '## Skill Docs']) {
150
+ const sectionIndex = nextBody.indexOf(section);
151
+ if (sectionIndex !== -1) {
152
+ const nextSection = nextBody.indexOf('\n## ', sectionIndex + section.length);
153
+ nextBody = nextSection !== -1
154
+ ? nextBody.slice(0, sectionIndex) + nextBody.slice(nextSection)
155
+ : nextBody.slice(0, sectionIndex);
156
+ }
157
+ }
158
+ return nextBody.trim() || undefined;
159
+ }
160
+ function parseCodexReasoningEffort(value) {
161
+ if (!value)
162
+ return undefined;
163
+ if (value === 'low' || value === 'medium' || value === 'high') {
164
+ return value;
165
+ }
166
+ return undefined;
167
+ }
168
+ function parseAgentFile(filePath, targetContext) {
110
169
  const warnings = [];
111
170
  const content = readFileSync(filePath, 'utf-8');
112
171
  const fields = parseFrontmatter(content);
113
172
  const fileName = basename(filePath, '.md');
114
173
  const name = typeof fields.name === 'string' && fields.name.length > 0 ? fields.name : fileName;
115
- const model = resolveModelAlias(fields.model);
116
- const rawTools = parseToolList(fields.tools);
174
+ const model = resolveClaudeModel(fields.model);
175
+ const rawTools = parseToolList(fields.tools, targetContext.knownTools);
117
176
  const tools = rawTools
118
177
  ? (() => {
119
- const { skills, remainingTools } = reverseMapToolsToSkills(rawTools);
120
- return [...skills, ...remainingTools];
178
+ const reverseMap = targetContext.reverseMapTools;
179
+ if (reverseMap) {
180
+ const { skills, remainingTools } = reverseMap(rawTools);
181
+ return [...skills, ...remainingTools];
182
+ }
183
+ return rawTools;
121
184
  })()
122
185
  : undefined;
123
- const disallowedTools = parseToolList(fields.disallowedTools);
186
+ const disallowedTools = parseToolList(fields.disallowedTools, targetContext.knownTools);
124
187
  const permissionMode = parsePermissionMode(fields.permissionMode);
125
188
  const maxTurns = typeof fields.maxTurns === 'number' ? fields.maxTurns : undefined;
126
189
  const background = typeof fields.background === 'boolean' ? fields.background : undefined;
@@ -257,12 +320,13 @@ function parseSettingsJson(filePath) {
257
320
  export function importFromClaudeDir(cwd, projectName) {
258
321
  const warnings = [];
259
322
  const agents = {};
323
+ const claudeTarget = createClaudeTarget();
260
324
  const agentsDir = join(cwd, '.claude', 'agents');
261
325
  if (existsSync(agentsDir)) {
262
326
  const files = readdirSync(agentsDir).filter((file) => file.endsWith('.md'));
263
327
  for (const file of files) {
264
328
  const filePath = join(agentsDir, file);
265
- const result = parseAgentFile(filePath);
329
+ const result = parseAgentFile(filePath, claudeTarget);
266
330
  agents[result.name] = result.agent;
267
331
  warnings.push(...result.warnings);
268
332
  }
@@ -284,7 +348,105 @@ export function importFromClaudeDir(cwd, projectName) {
284
348
  agents,
285
349
  policies,
286
350
  settings: {
287
- defaultModel: 'sonnet',
351
+ generateDocs: true,
352
+ generateLocalSettings: true,
353
+ },
354
+ },
355
+ warnings,
356
+ };
357
+ }
358
+ function parseCodexConfigEntries(filePath) {
359
+ const content = normalizeLineEndings(readFileSync(filePath, 'utf-8'));
360
+ const sectionRegex = /\[agents\.([^\]]+)\]\n([\s\S]*?)(?=\n\[agents\.|\s*$)/g;
361
+ const entries = [];
362
+ for (const match of content.matchAll(sectionRegex)) {
363
+ const name = match[1];
364
+ const block = match[2];
365
+ const description = extractTomlString(block, 'description');
366
+ const configPath = extractTomlString(block, 'config_file');
367
+ if (description && configPath) {
368
+ entries.push({ name, description, configPath });
369
+ }
370
+ }
371
+ return entries;
372
+ }
373
+ function parseCodexToolList(value, knownTools) {
374
+ const items = parseCommaList(value);
375
+ if (!items)
376
+ return undefined;
377
+ const tools = items.filter((item) => knownTools.includes(item));
378
+ return tools.length > 0 ? tools : undefined;
379
+ }
380
+ function parseCodexAgentFile(cwd, entry, targetContext) {
381
+ const warnings = [];
382
+ const filePath = join(cwd, '.codex', entry.configPath);
383
+ const content = normalizeLineEndings(readFileSync(filePath, 'utf-8'));
384
+ const developerInstructions = extractTomlMultiline(content, 'developer_instructions');
385
+ const delegation = extractMarkdownSection(developerInstructions ?? '', 'Delegation');
386
+ const allowedToolIntents = extractMarkdownSection(developerInstructions ?? '', 'Allowed Tool Intents');
387
+ const restrictedToolIntents = extractMarkdownSection(developerInstructions ?? '', 'Restricted Tool Intents');
388
+ const skillDocsSection = extractMarkdownSection(developerInstructions ?? '', 'Skill Docs');
389
+ const reasoningEffort = parseCodexReasoningEffort(extractTomlString(content, 'model_reasoning_effort'));
390
+ if (extractTomlString(content, 'model_reasoning_effort') && !reasoningEffort) {
391
+ warnings.push({
392
+ file: filePath,
393
+ message: `Unknown reasoning effort "${String(extractTomlString(content, 'model_reasoning_effort'))}", skipping`,
394
+ });
395
+ }
396
+ const handoffs = parseCommaList(delegation?.replace(/^You may delegate to:\s*/i, ''));
397
+ const tools = parseCodexToolList(allowedToolIntents, targetContext.knownTools);
398
+ const disallowedTools = parseCodexToolList(restrictedToolIntents?.replace(/^Avoid using:\s*/i, ''), targetContext.knownTools);
399
+ const skillDocs = parseCommaList(skillDocsSection?.replace(/^Follow these local skills when relevant:\s*/i, ''));
400
+ return {
401
+ name: entry.name,
402
+ agent: {
403
+ id: entry.name,
404
+ description: entry.description,
405
+ runtime: {
406
+ model: extractTomlString(content, 'model'),
407
+ reasoningEffort,
408
+ tools,
409
+ disallowedTools,
410
+ skillDocs,
411
+ },
412
+ instructions: stripCodexGeneratedSections(developerInstructions)
413
+ ? [{ kind: 'behavior', content: stripCodexGeneratedSections(developerInstructions) }]
414
+ : [],
415
+ metadata: handoffs?.length ? { handoffs } : undefined,
416
+ },
417
+ warnings,
418
+ };
419
+ }
420
+ export function importFromCodexDir(cwd, projectName) {
421
+ const warnings = [];
422
+ const agents = {};
423
+ const codexTarget = createCodexTarget();
424
+ const configPath = join(cwd, '.codex', 'config.toml');
425
+ if (!existsSync(configPath)) {
426
+ warnings.push({ file: configPath, message: 'No .codex/config.toml file found' });
427
+ }
428
+ else {
429
+ const entries = parseCodexConfigEntries(configPath);
430
+ for (const entry of entries) {
431
+ const agentPath = join(cwd, '.codex', entry.configPath);
432
+ if (!existsSync(agentPath)) {
433
+ warnings.push({ file: agentPath, message: `Missing config for agent "${entry.name}"` });
434
+ continue;
435
+ }
436
+ const result = parseCodexAgentFile(cwd, entry, codexTarget);
437
+ agents[result.name] = result.agent;
438
+ warnings.push(...result.warnings);
439
+ }
440
+ }
441
+ if (Object.keys(agents).length === 0) {
442
+ warnings.push({ file: join(cwd, '.codex', 'agents'), message: 'No agent .toml files found in .codex/agents/' });
443
+ }
444
+ return {
445
+ team: {
446
+ version: '2',
447
+ project: { name: projectName },
448
+ agents,
449
+ settings: {
288
450
  generateDocs: true,
289
451
  generateLocalSettings: true,
290
452
  },