teamcast 0.9.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/README.md +219 -146
  2. package/dist/application/team.d.ts.map +1 -1
  3. package/dist/application/team.js +0 -1
  4. package/dist/application/team.js.map +1 -1
  5. package/dist/application/validate-team.d.ts.map +1 -1
  6. package/dist/application/validate-team.js +7 -4
  7. package/dist/application/validate-team.js.map +1 -1
  8. package/dist/cli/explain.d.ts.map +1 -1
  9. package/dist/cli/explain.js +4 -2
  10. package/dist/cli/explain.js.map +1 -1
  11. package/dist/cli/init.js +2 -5
  12. package/dist/cli/init.js.map +1 -1
  13. package/dist/cli/manage.d.ts.map +1 -1
  14. package/dist/cli/manage.js +6 -15
  15. package/dist/cli/manage.js.map +1 -1
  16. package/dist/core/assertions.d.ts +4 -4
  17. package/dist/core/assertions.d.ts.map +1 -1
  18. package/dist/core/capability-resolver.d.ts +7 -0
  19. package/dist/core/capability-resolver.d.ts.map +1 -0
  20. package/dist/core/capability-resolver.js +18 -0
  21. package/dist/core/capability-resolver.js.map +1 -0
  22. package/dist/core/compose-policies.d.ts +15 -0
  23. package/dist/core/compose-policies.d.ts.map +1 -0
  24. package/dist/core/compose-policies.js +106 -0
  25. package/dist/core/compose-policies.js.map +1 -0
  26. package/dist/core/environment-resolver.d.ts +20 -0
  27. package/dist/core/environment-resolver.d.ts.map +1 -0
  28. package/dist/core/environment-resolver.js +202 -0
  29. package/dist/core/environment-resolver.js.map +1 -0
  30. package/dist/core/policy-evaluator.d.ts +2 -2
  31. package/dist/core/policy-evaluator.d.ts.map +1 -1
  32. package/dist/core/policy-evaluator.js +7 -7
  33. package/dist/core/policy-evaluator.js.map +1 -1
  34. package/dist/core/types.d.ts +5 -2
  35. package/dist/core/types.d.ts.map +1 -1
  36. package/dist/explainer/index.js +1 -1
  37. package/dist/explainer/index.js.map +1 -1
  38. package/dist/generator/index.d.ts.map +1 -1
  39. package/dist/generator/index.js +4 -3
  40. package/dist/generator/index.js.map +1 -1
  41. package/dist/importer/codex.js.map +1 -1
  42. package/dist/importer/index.d.ts +0 -3
  43. package/dist/importer/index.d.ts.map +1 -1
  44. package/dist/importer/index.js +2 -3
  45. package/dist/importer/index.js.map +1 -1
  46. package/dist/manifest/normalize.d.ts.map +1 -1
  47. package/dist/manifest/normalize.js +41 -6
  48. package/dist/manifest/normalize.js.map +1 -1
  49. package/dist/manifest/types.d.ts +15 -10
  50. package/dist/manifest/types.d.ts.map +1 -1
  51. package/dist/manifest/types.js.map +1 -1
  52. package/dist/registry/capabilities.d.ts +6 -0
  53. package/dist/registry/capabilities.d.ts.map +1 -0
  54. package/dist/registry/capabilities.js +14 -0
  55. package/dist/registry/capabilities.js.map +1 -0
  56. package/dist/registry/environments.d.ts +5 -0
  57. package/dist/registry/environments.d.ts.map +1 -0
  58. package/dist/registry/environments.js +106 -0
  59. package/dist/registry/environments.js.map +1 -0
  60. package/dist/registry/index.d.ts +23 -0
  61. package/dist/registry/index.d.ts.map +1 -0
  62. package/dist/registry/index.js +85 -0
  63. package/dist/registry/index.js.map +1 -0
  64. package/dist/registry/instruction-fragments.d.ts +11 -0
  65. package/dist/registry/instruction-fragments.d.ts.map +1 -0
  66. package/dist/{components/agent-fragments.js → registry/instruction-fragments.js} +22 -73
  67. package/dist/registry/instruction-fragments.js.map +1 -0
  68. package/dist/registry/models.d.ts +3 -0
  69. package/dist/registry/models.d.ts.map +1 -0
  70. package/dist/registry/models.js +46 -0
  71. package/dist/registry/models.js.map +1 -0
  72. package/dist/registry/policy-fragments.d.ts +6 -0
  73. package/dist/registry/policy-fragments.d.ts.map +1 -0
  74. package/dist/registry/policy-fragments.js +49 -0
  75. package/dist/registry/policy-fragments.js.map +1 -0
  76. package/dist/registry/skills.d.ts +5 -0
  77. package/dist/registry/skills.d.ts.map +1 -0
  78. package/dist/registry/skills.js +182 -0
  79. package/dist/registry/skills.js.map +1 -0
  80. package/dist/registry/traits.d.ts +16 -0
  81. package/dist/registry/traits.d.ts.map +1 -0
  82. package/dist/registry/traits.js +109 -0
  83. package/dist/registry/traits.js.map +1 -0
  84. package/dist/registry/types.d.ts +77 -0
  85. package/dist/registry/types.d.ts.map +1 -0
  86. package/dist/registry/types.js +21 -0
  87. package/dist/registry/types.js.map +1 -0
  88. package/dist/renderers/claude/docs.d.ts +0 -1
  89. package/dist/renderers/claude/docs.d.ts.map +1 -1
  90. package/dist/renderers/claude/docs.js +0 -95
  91. package/dist/renderers/claude/docs.js.map +1 -1
  92. package/dist/renderers/claude/index.d.ts.map +1 -1
  93. package/dist/renderers/claude/index.js +1 -2
  94. package/dist/renderers/claude/index.js.map +1 -1
  95. package/dist/renderers/claude/skill-map.d.ts +8 -8
  96. package/dist/renderers/claude/skill-map.d.ts.map +1 -1
  97. package/dist/renderers/claude/skill-map.js +9 -9
  98. package/dist/renderers/claude/skill-map.js.map +1 -1
  99. package/dist/renderers/claude/skill-md.d.ts.map +1 -1
  100. package/dist/renderers/claude/skill-md.js +73 -5
  101. package/dist/renderers/claude/skill-md.js.map +1 -1
  102. package/dist/renderers/codex/agents-md.d.ts +4 -0
  103. package/dist/renderers/codex/agents-md.d.ts.map +1 -0
  104. package/dist/renderers/codex/agents-md.js +94 -0
  105. package/dist/renderers/codex/agents-md.js.map +1 -0
  106. package/dist/renderers/codex/index.d.ts.map +1 -1
  107. package/dist/renderers/codex/index.js +4 -0
  108. package/dist/renderers/codex/index.js.map +1 -1
  109. package/dist/renderers/codex/skill-map.d.ts +3 -4
  110. package/dist/renderers/codex/skill-map.d.ts.map +1 -1
  111. package/dist/renderers/codex/skill-map.js +1 -1
  112. package/dist/renderers/codex/skill-map.js.map +1 -1
  113. package/dist/renderers/codex/skill-md.d.ts +4 -0
  114. package/dist/renderers/codex/skill-md.d.ts.map +1 -0
  115. package/dist/renderers/codex/skill-md.js +125 -0
  116. package/dist/renderers/codex/skill-md.js.map +1 -0
  117. package/dist/renderers/target-context.d.ts +3 -4
  118. package/dist/renderers/target-context.d.ts.map +1 -1
  119. package/dist/team-templates/policies.js +1 -1
  120. package/dist/team-templates/policies.js.map +1 -1
  121. package/dist/team-templates/presets.d.ts.map +1 -1
  122. package/dist/team-templates/presets.js +5 -8
  123. package/dist/team-templates/presets.js.map +1 -1
  124. package/dist/team-templates/roles.d.ts +3 -3
  125. package/dist/team-templates/roles.d.ts.map +1 -1
  126. package/dist/team-templates/roles.js +2 -4
  127. package/dist/team-templates/roles.js.map +1 -1
  128. package/dist/types/manifest.d.ts +2 -2
  129. package/dist/types/manifest.d.ts.map +1 -1
  130. package/dist/types/manifest.js +3 -3
  131. package/dist/types/manifest.js.map +1 -1
  132. package/dist/utils/skill-prompt-options.d.ts +4 -0
  133. package/dist/utils/skill-prompt-options.d.ts.map +1 -0
  134. package/dist/utils/skill-prompt-options.js +12 -0
  135. package/dist/utils/skill-prompt-options.js.map +1 -0
  136. package/dist/validator/checks/capability-policy.d.ts +5 -0
  137. package/dist/validator/checks/capability-policy.d.ts.map +1 -0
  138. package/dist/validator/checks/capability-policy.js +40 -0
  139. package/dist/validator/checks/capability-policy.js.map +1 -0
  140. package/dist/validator/checks/capability-tools.d.ts +5 -0
  141. package/dist/validator/checks/capability-tools.d.ts.map +1 -0
  142. package/dist/validator/checks/capability-tools.js +23 -0
  143. package/dist/validator/checks/capability-tools.js.map +1 -0
  144. package/dist/validator/checks/environment.d.ts +8 -0
  145. package/dist/validator/checks/environment.d.ts.map +1 -0
  146. package/dist/validator/checks/environment.js +28 -0
  147. package/dist/validator/checks/environment.js.map +1 -0
  148. package/dist/validator/checks/handoff-graph.d.ts +2 -2
  149. package/dist/validator/checks/handoff-graph.d.ts.map +1 -1
  150. package/dist/validator/checks/handoff-graph.js +2 -2
  151. package/dist/validator/checks/handoff-graph.js.map +1 -1
  152. package/dist/validator/checks/instructions.d.ts +5 -0
  153. package/dist/validator/checks/instructions.d.ts.map +1 -0
  154. package/dist/validator/checks/instructions.js +169 -0
  155. package/dist/validator/checks/instructions.js.map +1 -0
  156. package/dist/validator/checks/manifest-registry.d.ts +8 -0
  157. package/dist/validator/checks/manifest-registry.d.ts.map +1 -0
  158. package/dist/validator/checks/manifest-registry.js +68 -0
  159. package/dist/validator/checks/manifest-registry.js.map +1 -0
  160. package/dist/validator/checks/mcp.d.ts +4 -0
  161. package/dist/validator/checks/mcp.d.ts.map +1 -0
  162. package/dist/validator/checks/mcp.js +73 -0
  163. package/dist/validator/checks/mcp.js.map +1 -0
  164. package/dist/validator/checks/policy-coherence.d.ts +4 -0
  165. package/dist/validator/checks/policy-coherence.d.ts.map +1 -0
  166. package/dist/validator/checks/policy-coherence.js +69 -0
  167. package/dist/validator/checks/policy-coherence.js.map +1 -0
  168. package/dist/validator/checks/registry.d.ts +8 -0
  169. package/dist/validator/checks/registry.d.ts.map +1 -0
  170. package/dist/validator/checks/registry.js +23 -0
  171. package/dist/validator/checks/registry.js.map +1 -0
  172. package/dist/validator/checks/role-warnings.d.ts +2 -2
  173. package/dist/validator/checks/role-warnings.d.ts.map +1 -1
  174. package/dist/validator/checks/role-warnings.js +5 -5
  175. package/dist/validator/checks/role-warnings.js.map +1 -1
  176. package/dist/validator/checks/runtime-models.d.ts +4 -0
  177. package/dist/validator/checks/runtime-models.d.ts.map +1 -0
  178. package/dist/validator/checks/runtime-models.js +14 -0
  179. package/dist/validator/checks/runtime-models.js.map +1 -0
  180. package/dist/validator/checks/skill-requirements.d.ts +5 -0
  181. package/dist/validator/checks/skill-requirements.d.ts.map +1 -0
  182. package/dist/validator/checks/skill-requirements.js +143 -0
  183. package/dist/validator/checks/skill-requirements.js.map +1 -0
  184. package/dist/validator/checks/team-graph-enhanced.d.ts +4 -0
  185. package/dist/validator/checks/team-graph-enhanced.d.ts.map +1 -0
  186. package/dist/validator/checks/team-graph-enhanced.js +71 -0
  187. package/dist/validator/checks/team-graph-enhanced.js.map +1 -0
  188. package/dist/validator/checks/tool-conflicts.d.ts +2 -2
  189. package/dist/validator/checks/tool-conflicts.d.ts.map +1 -1
  190. package/dist/validator/checks/tool-conflicts.js +3 -3
  191. package/dist/validator/checks/tool-conflicts.js.map +1 -1
  192. package/dist/validator/checks/trait-capability.d.ts +4 -0
  193. package/dist/validator/checks/trait-capability.d.ts.map +1 -0
  194. package/dist/validator/checks/trait-capability.js +23 -0
  195. package/dist/validator/checks/trait-capability.js.map +1 -0
  196. package/dist/validator/heuristics.d.ts +25 -0
  197. package/dist/validator/heuristics.d.ts.map +1 -0
  198. package/dist/validator/heuristics.js +87 -0
  199. package/dist/validator/heuristics.js.map +1 -0
  200. package/dist/validator/index.d.ts.map +1 -1
  201. package/dist/validator/index.js +24 -4
  202. package/dist/validator/index.js.map +1 -1
  203. package/dist/validator/reporter.d.ts.map +1 -1
  204. package/dist/validator/reporter.js +37 -10
  205. package/dist/validator/reporter.js.map +1 -1
  206. package/dist/validator/types.d.ts +3 -0
  207. package/dist/validator/types.d.ts.map +1 -1
  208. package/dist/wizard/index.d.ts.map +1 -1
  209. package/dist/wizard/index.js +2 -5
  210. package/dist/wizard/index.js.map +1 -1
  211. package/dist/wizard/steps/agent-customization.d.ts.map +1 -1
  212. package/dist/wizard/steps/agent-customization.js +6 -19
  213. package/dist/wizard/steps/agent-customization.js.map +1 -1
  214. package/dist/wizard/steps/environment-selection.d.ts +11 -0
  215. package/dist/wizard/steps/environment-selection.d.ts.map +1 -0
  216. package/dist/wizard/steps/environment-selection.js +46 -0
  217. package/dist/wizard/steps/environment-selection.js.map +1 -0
  218. package/package.json +5 -5
  219. package/schema/teamcast.schema.json +30 -11
  220. package/templates/presets/feature-team.yaml +30 -10
  221. package/templates/presets/research-and-build.yaml +28 -3
  222. package/templates/presets/secure-dev.yaml +33 -0
  223. package/templates/presets/solo-dev.yaml +9 -0
  224. package/dist/components/agent-fragments.d.ts +0 -15
  225. package/dist/components/agent-fragments.d.ts.map +0 -1
  226. package/dist/components/agent-fragments.js.map +0 -1
  227. package/dist/components/policy-fragments.d.ts +0 -5
  228. package/dist/components/policy-fragments.d.ts.map +0 -1
  229. package/dist/components/policy-fragments.js +0 -88
  230. package/dist/components/policy-fragments.js.map +0 -1
  231. package/dist/core/index.d.ts +0 -8
  232. package/dist/core/index.d.ts.map +0 -1
  233. package/dist/core/index.js +0 -8
  234. package/dist/core/index.js.map +0 -1
  235. package/dist/core/skill-resolver.d.ts +0 -8
  236. package/dist/core/skill-resolver.d.ts.map +0 -1
  237. package/dist/core/skill-resolver.js +0 -17
  238. package/dist/core/skill-resolver.js.map +0 -1
  239. package/dist/core/skills.d.ts +0 -4
  240. package/dist/core/skills.d.ts.map +0 -1
  241. package/dist/core/skills.js +0 -14
  242. package/dist/core/skills.js.map +0 -1
  243. package/dist/plugins/catalog.d.ts +0 -10
  244. package/dist/plugins/catalog.d.ts.map +0 -1
  245. package/dist/plugins/catalog.js +0 -30
  246. package/dist/plugins/catalog.js.map +0 -1
  247. package/dist/plugins/core/models-plugin.d.ts +0 -3
  248. package/dist/plugins/core/models-plugin.d.ts.map +0 -1
  249. package/dist/plugins/core/models-plugin.js +0 -50
  250. package/dist/plugins/core/models-plugin.js.map +0 -1
  251. package/dist/plugins/core/presets-plugin.d.ts +0 -3
  252. package/dist/plugins/core/presets-plugin.d.ts.map +0 -1
  253. package/dist/plugins/core/presets-plugin.js +0 -10
  254. package/dist/plugins/core/presets-plugin.js.map +0 -1
  255. package/dist/plugins/core/tools-plugin.d.ts +0 -3
  256. package/dist/plugins/core/tools-plugin.d.ts.map +0 -1
  257. package/dist/plugins/core/tools-plugin.js +0 -44
  258. package/dist/plugins/core/tools-plugin.js.map +0 -1
  259. package/dist/plugins/environments/node-env-plugin.d.ts +0 -3
  260. package/dist/plugins/environments/node-env-plugin.d.ts.map +0 -1
  261. package/dist/plugins/environments/node-env-plugin.js +0 -31
  262. package/dist/plugins/environments/node-env-plugin.js.map +0 -1
  263. package/dist/plugins/environments/python-env-plugin.d.ts +0 -3
  264. package/dist/plugins/environments/python-env-plugin.d.ts.map +0 -1
  265. package/dist/plugins/environments/python-env-plugin.js +0 -33
  266. package/dist/plugins/environments/python-env-plugin.js.map +0 -1
  267. package/dist/plugins/index.d.ts +0 -3
  268. package/dist/plugins/index.d.ts.map +0 -1
  269. package/dist/plugins/index.js +0 -14
  270. package/dist/plugins/index.js.map +0 -1
  271. package/dist/plugins/inject.d.ts +0 -7
  272. package/dist/plugins/inject.d.ts.map +0 -1
  273. package/dist/plugins/inject.js +0 -48
  274. package/dist/plugins/inject.js.map +0 -1
  275. package/dist/plugins/merge-policies.d.ts +0 -8
  276. package/dist/plugins/merge-policies.d.ts.map +0 -1
  277. package/dist/plugins/merge-policies.js +0 -90
  278. package/dist/plugins/merge-policies.js.map +0 -1
  279. package/dist/plugins/registry.d.ts +0 -27
  280. package/dist/plugins/registry.d.ts.map +0 -1
  281. package/dist/plugins/registry.js +0 -97
  282. package/dist/plugins/registry.js.map +0 -1
  283. package/dist/plugins/types.d.ts +0 -75
  284. package/dist/plugins/types.d.ts.map +0 -1
  285. package/dist/plugins/types.js +0 -2
  286. package/dist/plugins/types.js.map +0 -1
  287. package/dist/renderers/index.d.ts +0 -6
  288. package/dist/renderers/index.d.ts.map +0 -1
  289. package/dist/renderers/index.js +0 -4
  290. package/dist/renderers/index.js.map +0 -1
  291. package/dist/validator/checks/instruction-blocks.d.ts +0 -5
  292. package/dist/validator/checks/instruction-blocks.d.ts.map +0 -1
  293. package/dist/validator/checks/instruction-blocks.js +0 -47
  294. package/dist/validator/checks/instruction-blocks.js.map +0 -1
@@ -0,0 +1,71 @@
1
+ export function checkTeamGraphEnhanced(team) {
2
+ const results = [];
3
+ const agentEntries = Object.entries(team.agents);
4
+ if (agentEntries.length === 0) {
5
+ return results;
6
+ }
7
+ const firstAgentId = agentEntries[0][0];
8
+ // Build a set of all agents referenced in any handoff
9
+ const referencedByHandoff = new Set();
10
+ let anyHandoffsDefined = false;
11
+ for (const [, agent] of agentEntries) {
12
+ const handoffs = agent.metadata?.handoffs ?? [];
13
+ if (handoffs.length > 0) {
14
+ anyHandoffsDefined = true;
15
+ for (const target of handoffs) {
16
+ referencedByHandoff.add(target);
17
+ }
18
+ }
19
+ }
20
+ // HANDOFF_TO_SELF — agent appears in its own handoffs
21
+ for (const [agentId, agent] of agentEntries) {
22
+ if (agent.metadata?.handoffs?.includes(agentId)) {
23
+ results.push({
24
+ severity: 'error',
25
+ category: 'Team graph',
26
+ code: 'HANDOFF_TO_SELF',
27
+ phase: 'team-graph',
28
+ message: `Agent "${agentId}" has a handoff to itself`,
29
+ agent: agentId,
30
+ });
31
+ }
32
+ }
33
+ // Only run reachability checks when there are handoffs defined
34
+ if (!anyHandoffsDefined) {
35
+ return results;
36
+ }
37
+ // ORPHAN_AGENT — agent not referenced by any handoff, no handoffs of its own, and not the first agent
38
+ for (const [agentId, agent] of agentEntries) {
39
+ if (agentId === firstAgentId) {
40
+ continue;
41
+ }
42
+ const hasHandoffs = (agent.metadata?.handoffs?.length ?? 0) > 0;
43
+ const isReferenced = referencedByHandoff.has(agentId);
44
+ if (!isReferenced && !hasHandoffs) {
45
+ results.push({
46
+ severity: 'warning',
47
+ category: 'Team graph',
48
+ code: 'ORPHAN_AGENT',
49
+ phase: 'team-graph',
50
+ message: `Agent "${agentId}" is not referenced in any handoff chain — it may be unreachable`,
51
+ agent: agentId,
52
+ });
53
+ }
54
+ }
55
+ // MULTIPLE_ROOTS — more than one agent not targeted by any other agent's handoffs
56
+ // (i.e., potential entry points / roots in the delegation graph)
57
+ const roots = agentEntries
58
+ .map(([id]) => id)
59
+ .filter((id) => !referencedByHandoff.has(id));
60
+ if (roots.length > 1) {
61
+ results.push({
62
+ severity: 'info',
63
+ category: 'Team graph',
64
+ code: 'MULTIPLE_ROOTS',
65
+ phase: 'team-graph',
66
+ message: `Multiple root agents detected: ${roots.join(', ')} — consider a single orchestrator entry point`,
67
+ });
68
+ }
69
+ return results;
70
+ }
71
+ //# sourceMappingURL=team-graph-enhanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-graph-enhanced.js","sourceRoot":"","sources":["../../../src/validator/checks/team-graph-enhanced.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { type SkillToolMap } from '../../core/skill-resolver.js';
1
+ import type { CapabilityToolMap } from '../../registry/types.js';
2
2
  import type { CoreTeam } from '../../core/types.js';
3
3
  import type { ValidationResult } from '../types.js';
4
- export declare function checkToolConflicts(team: CoreTeam, skillMap: SkillToolMap): ValidationResult[];
4
+ export declare function checkToolConflicts(team: CoreTeam, skillMap: CapabilityToolMap): ValidationResult[];
5
5
  //# sourceMappingURL=tool-conflicts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-conflicts.d.ts","sourceRoot":"","sources":["../../../src/validator/checks/tool-conflicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,GACrB,gBAAgB,EAAE,CAoCpB"}
1
+ {"version":3,"file":"tool-conflicts.d.ts","sourceRoot":"","sources":["../../../src/validator/checks/tool-conflicts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,iBAAiB,GAC1B,gBAAgB,EAAE,CAoCpB"}
@@ -1,9 +1,9 @@
1
- import { agentHasSkill } from '../../core/skill-resolver.js';
1
+ import { agentHasCapability } from '../../core/capability-resolver.js';
2
2
  export function checkToolConflicts(team, skillMap) {
3
3
  const results = [];
4
4
  for (const [agentId, agent] of Object.entries(team.agents)) {
5
5
  // runtime.tools and runtime.disallowedTools are already expanded to CanonicalTool[]
6
- // during normalization: AgentSkill values (e.g. 'read_files') are resolved to their
6
+ // during normalization: CapabilityId values (e.g. 'read_files') are resolved to their
7
7
  // concrete tool equivalents (e.g. 'Read', 'Grep', 'Glob') before this checker runs.
8
8
  const allow = new Set(agent.runtime.tools ?? []);
9
9
  const deny = new Set(agent.runtime.disallowedTools ?? []);
@@ -19,7 +19,7 @@ export function checkToolConflicts(team, skillMap) {
19
19
  }
20
20
  const desc = agent.description.toLowerCase();
21
21
  if ((desc.includes('read-only') || desc.includes('cannot modify') || desc.includes('does not write')) &&
22
- agentHasSkill(agent.runtime.tools ?? [], 'write_files', skillMap)) {
22
+ agentHasCapability(agent.runtime.tools ?? [], 'write_files', skillMap)) {
23
23
  results.push({
24
24
  severity: 'warning',
25
25
  category: 'Tool conflicts',
@@ -1 +1 @@
1
- {"version":3,"file":"tool-conflicts.js","sourceRoot":"","sources":["../../../src/validator/checks/tool-conflicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,8BAA8B,CAAC;AAIhF,MAAM,UAAU,kBAAkB,CAChC,IAAc,EACd,QAAsB;IAEtB,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,oFAAoF;QACpF,oFAAoF;QACpF,oFAAoF;QACpF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,gBAAgB;oBAC1B,OAAO,EAAE,UAAU,OAAO,UAAU,IAAI,sCAAsC;oBAC9E,KAAK,EAAE,OAAO;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACjG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EACjE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,UAAU,OAAO,oEAAoE;gBAC9F,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"tool-conflicts.js","sourceRoot":"","sources":["../../../src/validator/checks/tool-conflicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAKvE,MAAM,UAAU,kBAAkB,CAChC,IAAc,EACd,QAA2B;IAE3B,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,oFAAoF;QACpF,sFAAsF;QACtF,oFAAoF;QACpF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,gBAAgB;oBAC1B,OAAO,EAAE,UAAU,OAAO,UAAU,IAAI,sCAAsC;oBAC9E,KAAK,EAAE,OAAO;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACjG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EACtE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,UAAU,OAAO,oEAAoE;gBAC9F,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CoreTeam } from '../../core/types.js';
2
+ import type { ValidationResult } from '../types.js';
3
+ export declare function checkTraitCapabilities(team: CoreTeam): ValidationResult[];
4
+ //# sourceMappingURL=trait-capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trait-capability.d.ts","sourceRoot":"","sources":["../../../src/validator/checks/trait-capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,gBAAgB,EAAE,CAyBzE"}
@@ -0,0 +1,23 @@
1
+ export function checkTraitCapabilities(team) {
2
+ const results = [];
3
+ for (const [agentId, agent] of Object.entries(team.agents)) {
4
+ // Orchestrators may rely purely on delegation — skip them
5
+ if (agent.description.toLowerCase().includes('orchestrat')) {
6
+ continue;
7
+ }
8
+ const hasTools = (agent.runtime.tools?.length ?? 0) > 0;
9
+ const hasDisallowedTools = (agent.runtime.disallowedTools?.length ?? 0) > 0;
10
+ if (!hasTools && !hasDisallowedTools) {
11
+ results.push({
12
+ severity: 'warning',
13
+ category: 'Traits',
14
+ code: 'EMPTY_CAPABILITIES',
15
+ phase: 'traits',
16
+ message: `Agent "${agentId}" has no capabilities — it cannot perform any actions`,
17
+ agent: agentId,
18
+ });
19
+ }
20
+ }
21
+ return results;
22
+ }
23
+ //# sourceMappingURL=trait-capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trait-capability.js","sourceRoot":"","sources":["../../../src/validator/checks/trait-capability.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACnD,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,0DAA0D;QAC1D,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5E,IAAI,CAAC,QAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,UAAU,OAAO,uDAAuD;gBACjF,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { CapabilityId, CapabilityToolMap } from '../registry/types.js';
2
+ export interface ContradictionPattern {
3
+ pattern: RegExp;
4
+ /** If the pattern says "don't do X", the agent has this capability but shouldn't */
5
+ deniedCapability?: CapabilityId;
6
+ /** If the pattern says "do X", the agent should have this capability */
7
+ requiredCapability?: CapabilityId;
8
+ }
9
+ export interface ContradictionResult {
10
+ pattern: string;
11
+ capability: CapabilityId;
12
+ type: 'denied' | 'required';
13
+ }
14
+ /**
15
+ * Find contradictions between instruction text and agent capabilities.
16
+ * - "denied" means instruction says not to do X but agent HAS the capability
17
+ * - "required" means instruction says to do X but agent LACKS the capability
18
+ */
19
+ export declare function findContradictions(content: string, agentTools: string[], skillMap: CapabilityToolMap): ContradictionResult[];
20
+ /**
21
+ * Extract agent names referenced in instruction content.
22
+ * Returns lowercased unique names, excluding common English stopwords.
23
+ */
24
+ export declare function findReferencedAgents(content: string): string[];
25
+ //# sourceMappingURL=heuristics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heuristics.d.ts","sourceRoot":"","sources":["../../src/validator/heuristics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,YAAY,CAAC;IACzB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC7B;AAsCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,iBAAiB,GAC1B,mBAAmB,EAAE,CA8BvB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB9D"}
@@ -0,0 +1,87 @@
1
+ import { agentHasCapability } from '../core/capability-resolver.js';
2
+ const CONTRADICTION_PATTERNS = [
3
+ {
4
+ pattern: /do not (modify|edit|write|change) files/i,
5
+ deniedCapability: 'write_files',
6
+ },
7
+ {
8
+ pattern: /run (tests|the test suite|npm test|pytest)/i,
9
+ requiredCapability: 'execute',
10
+ },
11
+ {
12
+ pattern: /search the web|look up|find documentation online/i,
13
+ requiredCapability: 'web',
14
+ },
15
+ {
16
+ pattern: /delegate to \w+/i,
17
+ requiredCapability: 'delegate',
18
+ },
19
+ ];
20
+ const AGENT_REFERENCE_PATTERNS = [
21
+ /delegate to (\w+)/gi,
22
+ /hand off to (\w+)/gi,
23
+ /ask (?:the )?(\w+) to/gi,
24
+ ];
25
+ /**
26
+ * Common English words that should not be treated as agent names.
27
+ * These appear naturally in instruction prose and are not agent identifiers.
28
+ */
29
+ const STOPWORDS = new Set([
30
+ 'the', 'a', 'an', 'your', 'my', 'our', 'their', 'its',
31
+ 'this', 'that', 'these', 'those',
32
+ 'appropriate', 'relevant', 'correct', 'right',
33
+ 'user', 'human', 'team', 'it', 'them',
34
+ ]);
35
+ /**
36
+ * Find contradictions between instruction text and agent capabilities.
37
+ * - "denied" means instruction says not to do X but agent HAS the capability
38
+ * - "required" means instruction says to do X but agent LACKS the capability
39
+ */
40
+ export function findContradictions(content, agentTools, skillMap) {
41
+ const results = [];
42
+ for (const entry of CONTRADICTION_PATTERNS) {
43
+ if (!entry.pattern.test(content))
44
+ continue;
45
+ if (entry.deniedCapability) {
46
+ // Instruction says "don't do X" — flag if agent HAS the capability
47
+ if (agentHasCapability(agentTools, entry.deniedCapability, skillMap)) {
48
+ results.push({
49
+ pattern: entry.pattern.source,
50
+ capability: entry.deniedCapability,
51
+ type: 'denied',
52
+ });
53
+ }
54
+ }
55
+ if (entry.requiredCapability) {
56
+ // Instruction says "do X" — flag if agent LACKS the capability
57
+ if (!agentHasCapability(agentTools, entry.requiredCapability, skillMap)) {
58
+ results.push({
59
+ pattern: entry.pattern.source,
60
+ capability: entry.requiredCapability,
61
+ type: 'required',
62
+ });
63
+ }
64
+ }
65
+ }
66
+ return results;
67
+ }
68
+ /**
69
+ * Extract agent names referenced in instruction content.
70
+ * Returns lowercased unique names, excluding common English stopwords.
71
+ */
72
+ export function findReferencedAgents(content) {
73
+ const names = new Set();
74
+ for (const pattern of AGENT_REFERENCE_PATTERNS) {
75
+ // Reset lastIndex for global patterns
76
+ pattern.lastIndex = 0;
77
+ let match;
78
+ while ((match = pattern.exec(content)) !== null) {
79
+ const name = match[1].toLowerCase();
80
+ if (!STOPWORDS.has(name)) {
81
+ names.add(name);
82
+ }
83
+ }
84
+ }
85
+ return [...names];
86
+ }
87
+ //# sourceMappingURL=heuristics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heuristics.js","sourceRoot":"","sources":["../../src/validator/heuristics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAgBpE,MAAM,sBAAsB,GAA2B;IACrD;QACE,OAAO,EAAE,0CAA0C;QACnD,gBAAgB,EAAE,aAAa;KAChC;IACD;QACE,OAAO,EAAE,6CAA6C;QACtD,kBAAkB,EAAE,SAAS;KAC9B;IACD;QACE,OAAO,EAAE,mDAAmD;QAC5D,kBAAkB,EAAE,KAAK;KAC1B;IACD;QACE,OAAO,EAAE,kBAAkB;QAC3B,kBAAkB,EAAE,UAAU;KAC/B;CACF,CAAC;AAEF,MAAM,wBAAwB,GAAa;IACzC,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;IACrD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAChC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;IAC7C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CACtC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,UAAoB,EACpB,QAA2B;IAE3B,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QAE3C,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,mEAAmE;YACnE,IAAI,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;oBAC7B,UAAU,EAAE,KAAK,CAAC,gBAAgB;oBAClC,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,+DAA+D;YAC/D,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;oBAC7B,UAAU,EAAE,KAAK,CAAC,kBAAkB;oBACpC,IAAI,EAAE,UAAU;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;QAC/C,sCAAsC;QACtC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAYpE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,CAAC,EAAE,OAAO,EAAE,GACxB,gBAAgB,EAAE,CAWpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAiB5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAsBpE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,CAAC,EAAE,OAAO,EAAE,GACxB,gBAAgB,EAAE,CAWpB"}
@@ -2,19 +2,39 @@ import { checkHandoffGraph } from './checks/handoff-graph.js';
2
2
  import { checkToolConflicts } from './checks/tool-conflicts.js';
3
3
  import { checkRoleWarnings } from './checks/role-warnings.js';
4
4
  import { checkSecurityBaseline } from './checks/security-baseline.js';
5
- import { checkInstructionBlocks } from './checks/instruction-blocks.js';
5
+ import { checkInstructions } from './checks/instructions.js';
6
+ import { checkRuntimeModelWarnings } from './checks/runtime-models.js';
6
7
  import { evaluatePolicyAssertions } from '../core/policy-evaluator.js';
7
- const CHECKERS = (skillMap) => [
8
+ import { checkRegistryReferences } from './checks/registry.js';
9
+ import { checkEnvironments } from './checks/environment.js';
10
+ import { checkTraitCapabilities } from './checks/trait-capability.js';
11
+ import { checkCapabilityTools } from './checks/capability-tools.js';
12
+ import { checkPolicyCoherence } from './checks/policy-coherence.js';
13
+ import { checkCapabilityPolicyCross } from './checks/capability-policy.js';
14
+ import { checkSkillRequirements } from './checks/skill-requirements.js';
15
+ import { checkMcpServers } from './checks/mcp.js';
16
+ import { checkTeamGraphEnhanced } from './checks/team-graph-enhanced.js';
17
+ const CHECKERS = (skillMap, targetName) => [
18
+ checkRegistryReferences,
19
+ checkEnvironments,
20
+ checkTraitCapabilities, // Phase 2
21
+ (team) => checkCapabilityTools(team, skillMap), // Phase 3
8
22
  (team) => checkHandoffGraph(team, skillMap),
23
+ checkTeamGraphEnhanced, // Phase 8 new
9
24
  (team) => checkToolConflicts(team, skillMap),
10
25
  (team) => checkRoleWarnings(team, skillMap),
26
+ (team) => checkRuntimeModelWarnings(team, targetName),
11
27
  checkSecurityBaseline,
12
- (team) => checkInstructionBlocks(team, skillMap),
28
+ checkPolicyCoherence, // Phase 4
29
+ (team) => checkCapabilityPolicyCross(team, skillMap), // Phase 5
30
+ (team) => checkSkillRequirements(team, skillMap, targetName), // Phase 6
31
+ (team) => checkMcpServers(team, targetName), // Phase 10
32
+ (team) => checkInstructions(team, skillMap), // Phase 7
13
33
  (team) => evaluatePolicyAssertions(team, skillMap),
14
34
  ];
15
35
  export function runValidation(team, targetContext, extraCheckers) {
16
36
  const results = [];
17
- const baseCheckers = CHECKERS(targetContext.skillMap);
37
+ const baseCheckers = CHECKERS(targetContext.skillMap, targetContext.name);
18
38
  const checkers = extraCheckers ? [...baseCheckers, ...extraCheckers] : baseCheckers;
19
39
  for (const checker of checkers) {
20
40
  results.push(...checker(team));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validator/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,QAAQ,GAAG,CAAC,QAAsB,EAAa,EAAE,CAAC;IACtD,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3C,qBAAqB;IACrB,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAChD,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC;CACnD,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,IAAc,EACd,aAA4B,EAC5B,aAAyB;IAEzB,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validator/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAIzE,MAAM,QAAQ,GAAG,CAAC,QAA2B,EAAE,UAAkB,EAAa,EAAE,CAAC;IAC/E,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB,EAAgC,UAAU;IAChE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAQ,UAAU;IAChE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3C,sBAAsB,EAAgC,cAAc;IACpE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC;IACrD,qBAAqB;IACrB,oBAAoB,EAAkC,UAAU;IAChE,CAAC,IAAI,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU;IAChE,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU;IACxE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAkB,WAAW;IACxE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAa,UAAU;IAClE,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC;CACnD,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,IAAc,EACd,aAA4B,EAC5B,aAAyB;IAEzB,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6BnD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAcnF;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI,CA6DN;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAE9D"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA2CnD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAcnF;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI,CAwEN;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAE9D"}
@@ -1,16 +1,29 @@
1
1
  import chalk from 'chalk';
2
2
  const CATEGORY_ORDER = [
3
+ { label: 'Registry', okDescription: 'all references valid' },
4
+ { label: 'Environment', okDescription: 'environments valid' },
5
+ { label: 'Traits', okDescription: 'trait/capability composition valid' },
6
+ { label: 'Capabilities', okDescription: 'capability-to-tool mapping valid' },
3
7
  { label: 'Handoff graph', okDescription: 'delegation paths verified' },
8
+ { label: 'Team graph', okDescription: 'agent reachability verified' },
4
9
  { label: 'Tool conflicts', okDescription: 'no allow/deny overlaps' },
5
10
  { label: 'Role separation', okDescription: 'roles match capabilities' },
6
11
  { label: 'Security', okDescription: 'sandbox and permissions checked' },
7
- { label: 'Instruction blocks', okDescription: 'all blocks valid' },
12
+ { label: 'Policy coherence', okDescription: 'no contradictions in policies' },
13
+ { label: 'Capability-policy', okDescription: 'capabilities align with policies' },
14
+ { label: 'Skills', okDescription: 'skill requirements satisfied' },
15
+ { label: 'MCP', okDescription: 'MCP server configuration valid' },
16
+ { label: 'Instructions', okDescription: 'instruction blocks and fragments valid' },
8
17
  { label: 'policy', okDescription: 'Policy assertions' },
9
18
  ];
10
19
  function renderCategoryRow(icon, label, description, items) {
11
20
  console.log(` ${icon} ${chalk.bold(label)} ${chalk.dim('-')} ${description}`);
12
21
  for (const result of items) {
13
- const prefix = result.severity === 'error' ? chalk.red(' [error]') : chalk.yellow(' [warn]');
22
+ const prefix = result.severity === 'error'
23
+ ? chalk.red(' [error]')
24
+ : result.severity === 'warning'
25
+ ? chalk.yellow(' [warn]')
26
+ : chalk.blue(' [info]');
14
27
  console.log(` ${prefix} ${result.message}`);
15
28
  }
16
29
  }
@@ -39,18 +52,27 @@ export function printValidationReport(results, policyAssertionCount) {
39
52
  const categoryResults = byCategory.get(meta.label) ?? [];
40
53
  const errors = categoryResults.filter((result) => result.severity === 'error');
41
54
  const warnings = categoryResults.filter((result) => result.severity === 'warning');
55
+ const infos = categoryResults.filter((result) => result.severity === 'info');
42
56
  const displayLabel = meta.label === 'policy' ? 'Policy assertions' : meta.label;
43
57
  if (errors.length > 0) {
44
- const desc = chalk.red(`${errors.length} error${errors.length !== 1 ? 's' : ''}`);
45
- const extra = warnings.length > 0
46
- ? `, ${chalk.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`)}`
47
- : '';
48
- renderCategoryRow(chalk.red('[!!]'), displayLabel, desc + extra, [...errors, ...warnings]);
58
+ const parts = [chalk.red(`${errors.length} error${errors.length !== 1 ? 's' : ''}`)];
59
+ if (warnings.length > 0)
60
+ parts.push(chalk.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`));
61
+ if (infos.length > 0)
62
+ parts.push(chalk.blue(`${infos.length} info`));
63
+ renderCategoryRow(chalk.red('[!!]'), displayLabel, parts.join(', '), [...errors, ...warnings, ...infos]);
49
64
  continue;
50
65
  }
51
66
  if (warnings.length > 0) {
52
- const desc = chalk.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`);
53
- renderCategoryRow(chalk.yellow('[--]'), displayLabel, desc, warnings);
67
+ const parts = [chalk.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`)];
68
+ if (infos.length > 0)
69
+ parts.push(chalk.blue(`${infos.length} info`));
70
+ renderCategoryRow(chalk.yellow('[--]'), displayLabel, parts.join(', '), [...warnings, ...infos]);
71
+ continue;
72
+ }
73
+ if (infos.length > 0) {
74
+ const desc = chalk.blue(`${infos.length} info`);
75
+ renderCategoryRow(chalk.blue('[..]'), displayLabel, desc, infos);
54
76
  continue;
55
77
  }
56
78
  const okDesc = meta.label === 'policy' && policyAssertionCount !== undefined
@@ -63,8 +85,10 @@ export function printValidationReport(results, policyAssertionCount) {
63
85
  console.log('');
64
86
  const totalErrors = results.filter((result) => result.severity === 'error').length;
65
87
  const totalWarnings = results.filter((result) => result.severity === 'warning').length;
88
+ const totalInfos = results.filter((result) => result.severity === 'info').length;
66
89
  if (totalErrors === 0 && totalWarnings === 0) {
67
- console.log(chalk.green('All checks passed.'));
90
+ const infoSuffix = totalInfos > 0 ? chalk.dim(` (${totalInfos} info)`) : '';
91
+ console.log(chalk.green('All checks passed.') + infoSuffix);
68
92
  }
69
93
  else {
70
94
  const parts = [];
@@ -74,6 +98,9 @@ export function printValidationReport(results, policyAssertionCount) {
74
98
  if (totalWarnings > 0) {
75
99
  parts.push(chalk.yellow(`${totalWarnings} warning${totalWarnings !== 1 ? 's' : ''}`));
76
100
  }
101
+ if (totalInfos > 0) {
102
+ parts.push(chalk.blue(`${totalInfos} info`));
103
+ }
77
104
  console.log(`${parts.join(', ')} found.`);
78
105
  }
79
106
  console.log('');
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/validator/reporter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import type { CoreTeam } from '../core/types.js';
2
2
  export type Severity = 'error' | 'warning' | 'info';
3
+ export type ValidationPhase = 'registry' | 'traits' | 'capabilities' | 'policies' | 'capability-policy' | 'skills' | 'instructions' | 'team-graph' | 'environment' | 'mcp';
3
4
  export interface ValidationResult {
4
5
  severity: Severity;
5
6
  category: string;
6
7
  message: string;
7
8
  agent?: string;
9
+ phase?: ValidationPhase;
10
+ code?: string;
8
11
  }
9
12
  export type Checker = (team: CoreTeam) => ValidationResult[];
10
13
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validator/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validator/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,QAAQ,GACR,cAAc,GACd,UAAU,GACV,mBAAmB,GACnB,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,aAAa,GACb,KAAK,CAAC;AAEV,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,gBAAgB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAsBlE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAsBlE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ErE"}
@@ -7,10 +7,10 @@ import { stepTargetSelection } from './steps/target-selection.js';
7
7
  import { stepTeamSelection } from './steps/team-selection.js';
8
8
  import { stepConfirmGenerate } from './steps/confirm-generate.js';
9
9
  import { stepAgentCustomization } from './steps/agent-customization.js';
10
+ import { stepEnvironmentSelection } from './steps/environment-selection.js';
10
11
  import { normalizeManifest, replaceManifestTarget } from '../manifest/normalize.js';
11
12
  import { getTarget, getRegisteredTargetNames } from '../renderers/registry.js';
12
13
  import { evaluateTeam, teamHasBlockingIssues, printManifestValidation } from '../application/validate-team.js';
13
- import { detectPluginNames } from '../plugins/catalog.js';
14
14
  import { printSuccess, printError, printHeader, printCommandSuccess, printNextSteps, } from '../utils/chalk-helpers.js';
15
15
  import { abortCli } from '../cli/errors.js';
16
16
  export async function runWizard(options) {
@@ -43,10 +43,7 @@ export async function runWizard(options) {
43
43
  const customizedTeam = await stepAgentCustomization(normalizedTeam, targetContext, { nonInteractive });
44
44
  rawManifest = replaceManifestTarget(rawManifest, targetName, customizedTeam);
45
45
  }
46
- const detectedPlugins = detectPluginNames(cwd);
47
- if (detectedPlugins.length > 0) {
48
- rawManifest.plugins = detectedPlugins;
49
- }
46
+ rawManifest.project.environments = await stepEnvironmentSelection(cwd, rawManifest.project.environments, { nonInteractive });
50
47
  const validation = evaluateTeam(rawManifest, { cwd });
51
48
  if (teamHasBlockingIssues(validation)) {
52
49
  printManifestValidation(validation);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-customization.d.ts","sourceRoot":"","sources":["../../../src/wizard/steps/agent-customization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA6HvE,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,QAAQ,CAAC,CA4DnB"}
1
+ {"version":3,"file":"agent-customization.d.ts","sourceRoot":"","sources":["../../../src/wizard/steps/agent-customization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA0GvE,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,QAAQ,CAAC,CA4DnB"}
@@ -1,21 +1,8 @@
1
1
  import chalk from 'chalk';
2
- import { expandSkills } from '../../core/skill-resolver.js';
3
- import { getSkillDefinition, listModelDefinitions, listSkillDefinitions, } from '../../plugins/catalog.js';
2
+ import { expandCapabilities } from '../../core/capability-resolver.js';
3
+ import { defaultRegistry } from '../../registry/index.js';
4
4
  import { promptConfirm, promptList, promptCheckbox, promptInput } from '../../utils/prompts.js';
5
- /**
6
- * Human-readable labels for each AgentSkill value, shown in the wizard checkbox.
7
- * Format: "<label> (<tools>)"
8
- */
9
- function formatSkillLabel(skillId, description) {
10
- const skillDef = getSkillDefinition(skillId);
11
- const label = skillDef ? skillDef.description : skillId;
12
- const shortLabel = label.split(' ')[0] ?? skillId;
13
- return `${shortLabel.padEnd(16)}`;
14
- }
15
- function getSupportedSkills(targetContext) {
16
- const allSkills = listSkillDefinitions().map((skill) => skill.id);
17
- return allSkills.filter((skill) => (targetContext.skillMap[skill]?.length ?? 0) > 0);
18
- }
5
+ import { formatSkillLabel, getSupportedSkills } from '../../utils/skill-prompt-options.js';
19
6
  function removeConflictingDisallowedTools(tools, disallowedTools) {
20
7
  if (!disallowedTools?.length) {
21
8
  return disallowedTools;
@@ -51,7 +38,7 @@ async function promptRestrictedTools(targetContext, allowedTools, currentDisallo
51
38
  return selectedRestrictedTools.length > 0 ? selectedRestrictedTools : undefined;
52
39
  }
53
40
  async function promptTargetModel(targetContext, currentModel) {
54
- const targetModels = listModelDefinitions(targetContext.name);
41
+ const targetModels = defaultRegistry.listModels(targetContext.name);
55
42
  if (targetModels.length > 0) {
56
43
  const choices = targetModels.map((m) => ({
57
44
  name: `${m.displayName.padEnd(20)} ${chalk.dim(`(${m.features.join(', ')})`)}`,
@@ -113,13 +100,13 @@ export async function stepAgentCustomization(team, targetContext, options) {
113
100
  const selectedSkills = await promptCheckbox({
114
101
  message: ` Skills for ${name}:`,
115
102
  choices: supportedSkills.map((skill) => ({
116
- name: formatSkillLabel(skill, getSkillDefinition(skill)?.description),
103
+ name: formatSkillLabel(skill),
117
104
  value: skill,
118
105
  checked: currentSkills.includes(skill),
119
106
  })),
120
107
  });
121
108
  const expandedTools = selectedSkills.length > 0
122
- ? expandSkills(selectedSkills, targetContext.skillMap)
109
+ ? expandCapabilities(selectedSkills, targetContext.skillMap)
123
110
  : undefined;
124
111
  const disallowedTools = await promptRestrictedTools(targetContext, expandedTools, agent.runtime.disallowedTools);
125
112
  updatedAgents[name] = {